Annahme-Selbstheilung: Orphan-Branches entlarven, veraltete Branches auto-rebasen
Anlass: feature/cleanse-skill-index — ein Werkstatt-Worker hatte git init statt
Klonen gemacht (Orphan-Commit ohne gemeinsamen Vorfahren, Inhalt: ~/.hermes-Index-
Dateien statt Repo-Dateien). Solche Karten sahen aus wie normale Vorschlaege,
liefen bei Annahme aber IMMER in 'refusing to merge unrelated histories' — und
die Fehlermeldung ('bitte am PC aufloesen') war eine Sackgasse. Das passiert
oefter; darum drei Schichten dagegen:
1) ERKENNEN (Auftragsbuch): neue Karten-Flags 'verwaist' (kein merge-base mit
main -> rote Markierung 'kein gemeinsamer Ursprung', Annehmen-Knopf fehlt,
API+Runner halten zusaetzlich dicht) und 'leer' (Diff gegen main leer ->
'bringt nichts'-Badge). Empfehlung auf der Karte: ablehnen mit Grund,
Idee frisch in die Queue.
2) HEILEN (beide Runner, mc2 + lucy): kollidiert der Merge, weil main weiter-
gelaufen ist, versucht der Runner automatisch einen Rebase des Branches auf
main (isolierter Worktree; Gates laufen danach normal, Merge-Message sagt
'auto-rebased'). Nur wenn auch der Rebase kollidiert, faellt die Karte durch —
mit ehrlicher Meldung statt 'am PC aufloesen'.
3) VERHINDERN (werkstatt-SOUL): voll klonen (nie git init/--depth), Selbstcheck
'git merge-base HEAD origin/main' + fetch/rebase vor JEDEM Push, nie
~/.hermes-Artefakte committen.
Doku: AUFTRAGSBUCH.md + FALLEN.md (Erkennungsmuster: Diff 0 Dateien + behind ~
ganze Historie) + OFFENE-FAEDEN. Geprueft: py_compile gruen, bash -n beide
Runner gruen, tsc+vite build gruen (dist dabei); merge-base-Verhalten am echten
kaputten Branch auf der Box verifiziert.
This commit is contained in:
@@ -53,6 +53,9 @@ bewiesen; ein Eigenbau hätte all das nur nachgebaut.
|
||||
## Was „Annehmen" bei einem Patch macht (deploy/auftrag-annehmen.sh)
|
||||
|
||||
1. Merge des Branches in einem **isolierten Worktree** (Live-Checkout bleibt unberührt).
|
||||
Kollidiert der Merge, weil main weitergelaufen ist, versucht der Runner **automatisch
|
||||
einen Rebase** des Branches auf main (Selbstheilung für veraltete Vorschläge) — erst
|
||||
wenn auch der kollidiert, fällt die Karte mit ehrlicher Meldung durch.
|
||||
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
|
||||
@@ -64,6 +67,15 @@ Der Lauf ist eine eigene systemd-Unit (detached) — er überlebt den Neustart d
|
||||
Backends, das ihn gestartet hat. Fortschritt steht live auf der Karte
|
||||
(`/srv/models/mc2-auftragsbuch.json`).
|
||||
|
||||
**Kaputt aufgesetzte Branches** (Worker machte `git init`/Shallow statt zu klonen → kein
|
||||
gemeinsamer Ursprung mit main, „refusing to merge unrelated histories") erkennt das
|
||||
Auftragsbuch an der Quelle: rote Markierung „kein gemeinsamer Ursprung", der
|
||||
Annehmen-Knopf fehlt (Annehmen wäre ein garantierter Fehllauf), API und Runner halten
|
||||
zusätzlich dicht. Ebenso markiert: „Diff leer — bringt nichts" (Branch würde gegenüber
|
||||
main nichts ändern). In beiden Fällen: **ablehnen mit Grund** und die Idee frisch in die
|
||||
Queue geben; die Prävention (voll klonen, merge-base-Selbstcheck, fetch+rebase vor dem
|
||||
Push) steht in der werkstatt-SOUL.
|
||||
|
||||
## Was „Annehmen" bei einer LUCY-Karte macht (deploy/lucy-annahme.sh)
|
||||
|
||||
Lucy (Electron) lebt auf dem Windows-PC; ihr `dist` liegt nicht im Repo — die Box
|
||||
|
||||
Reference in New Issue
Block a user