Auftragsbuch: 'wartung/annahme-probe' angenommen (Ein-Klick-Gate)
This commit is contained in:
@@ -0,0 +1,39 @@
|
|||||||
|
# Auftragsbuch — die Vorschlags-Inbox der Box
|
||||||
|
|
||||||
|
Das Auftragsbuch ist das Mensch-Gate des propose-only-Kreislaufs als Klick statt
|
||||||
|
Git-Handarbeit: alles, was die Box von allein baut oder sich ausdenkt, landet hier
|
||||||
|
als Karte — du entscheidest mit **Annehmen** oder **Ablehnen**.
|
||||||
|
|
||||||
|
## Woher die Karten kommen
|
||||||
|
|
||||||
|
- **Fertige Patches** — Branches auf Gitea (`wartung/*`, `orchestrator/*`, `doku/*`,
|
||||||
|
`feature/*`), wie die Werkstatt und der Orchestrator sie hinterlassen. Die Karte
|
||||||
|
zeigt Commit-Botschaft, geänderte Dateien und den vollen Diff.
|
||||||
|
- **Skill-Kandidaten** — Ideen des nächtlichen Traum-Crons aus dem Wissens-Vault
|
||||||
|
(`~/wissens-vault/skill-kandidaten/`). „Beauftragen" schickt sie als Auftrag an
|
||||||
|
die Werkstatt (Orchestrator-Skill); das Ergebnis kommt als neuer Patch zurück.
|
||||||
|
|
||||||
|
## Was „Annehmen" bei einem Patch macht (deploy/auftrag-annehmen.sh)
|
||||||
|
|
||||||
|
1. Merge des Branches in einem **isolierten Worktree** (Live-Checkout bleibt unberührt).
|
||||||
|
2. `py_compile`-Gate über die geänderten Python-Dateien.
|
||||||
|
3. Push nach `main` auf Gitea (mit Retry).
|
||||||
|
4. Deploy (als /tmp-Kopie von deploy.sh — Selbst-Reset-Falle) — die Zentrale
|
||||||
|
startet dabei kurz neu.
|
||||||
|
5. Health-Check mit Geduld. **Rot ⇒ automatischer Revert des Merges + Redeploy +
|
||||||
|
Alarm.** Grün ⇒ Branch wird aufgeräumt, Meldung an Telegram + Chronik.
|
||||||
|
|
||||||
|
Der Lauf ist eine eigene systemd-Unit (detached) — er überlebt den Neustart des
|
||||||
|
Backends, das ihn gestartet hat. Fortschritt steht live auf der Karte
|
||||||
|
(`/srv/models/mc2-auftragsbuch.json`).
|
||||||
|
|
||||||
|
## Leitplanken
|
||||||
|
|
||||||
|
- Propose-only bleibt: **nichts geht ohne Klick live.** Das Gate ist dieses Buch.
|
||||||
|
- „Frontend ohne Build"-Warnung: die Box kann kein Frontend bauen (kein Node) —
|
||||||
|
enthält ein Branch `frontend/src` ohne frisches `frontend/dist`, bleibt die
|
||||||
|
Oberfläche nach dem Annehmen alt, bis am PC gebaut wird.
|
||||||
|
- Ablehnen löscht nur den Remote-Branch; die Historie auf Gitea bleibt.
|
||||||
|
|
||||||
|
Diese Datei kam übrigens selbst über das Auftragsbuch ins Repo — als erste echte
|
||||||
|
End-to-End-Annahme (Probe-Branch `wartung/annahme-probe`, 08.07.2026).
|
||||||
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
<link rel="manifest" href="/manifest.webmanifest" />
|
<link rel="manifest" href="/manifest.webmanifest" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<title>Mission Control 2.0</title>
|
<title>Mission Control 2.0</title>
|
||||||
<script type="module" crossorigin src="/assets/index-BylmMpBk.js"></script>
|
<script type="module" crossorigin src="/assets/index-CcL1k1kt.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-B7apENt0.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-B7apENt0.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -123,8 +123,9 @@ function Zeitmaschine() {
|
|||||||
const shown = showAll ? backups : backups.slice(0, 4)
|
const shown = showAll ? backups : backups.slice(0, 4)
|
||||||
|
|
||||||
function fmtSnap(s: Snapshot): string {
|
function fmtSnap(s: Snapshot): string {
|
||||||
// Zeitstempel-Format aus backup.sh: 2026-07-08T03-30-01 o. ä. → lesbar machen.
|
// Zeitstempel aus backup.sh ist kompakt (20260708-181136) — lesbar machen;
|
||||||
const m = s.snapshot.match(/^(\d{4})-(\d{2})-(\d{2})[T_-](\d{2})[-:](\d{2})/)
|
// tolerant auch für Varianten mit Trennzeichen (2026-07-08T18-11).
|
||||||
|
const m = s.snapshot.match(/^(\d{4})-?(\d{2})-?(\d{2})[T_-](\d{2})[-:]?(\d{2})/)
|
||||||
if (!m) return s.snapshot
|
if (!m) return s.snapshot
|
||||||
return `${m[3]}.${m[2]}.${m[1]}, ${m[4]}:${m[5]} Uhr`
|
return `${m[3]}.${m[2]}.${m[1]}, ${m[4]}:${m[5]} Uhr`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user