deploy: Beförderung gegen Ausweitung sichern (Legende, fremde Beispiele)
Der Umfang war schon richtig — genau eine Datei, kein Glob —, aber als bloße
Zusage zu schwach. `[x]` steht im Repo an Stellen, wo eine Beförderung falsch
bis unsinnig wäre, und der Schaden wäre still:
- Die Legende („Agenda") zeigt `[x] fertig` als ANSCHAUUNGSMATERIAL für die
Notation (index.html, chip('fertig','[x]') in app.js). Daraus würde
„[^] fertig" — Unsinn, den beim Durchsehen eines Diffs niemand bemerkt.
- Das mitgelieferte „Example"-Dokument (INITIAL in app.js) und die übrigen
docs/examples/*.werkbaum sind erfunden.
- SPEC §10 (kanonisches Beispiel, zugleich Test-Fixture) und die Checkboxen in
docs/TASKS.md.
Deshalb jetzt eine Laufzeitsicherung statt einer Absichtserklärung: Der Lauf
vergleicht `git status` vor und nach dem Schreiben und bricht ab, sobald mehr
als die Plandatei NEU geändert ist — Plandatei zurückgesetzt, nichts committet.
Der Vergleich ist gegen den Vorher-Zustand gebildet, damit anderweitig
schmutzige Dateien im Arbeitsbaum keinen Fehlalarm auslösen. Dazu ein
UMFANG-Absatz im Skriptkopf, der die drei Fallen benennt und ausdrücklich sagt:
nicht auf ein Muster erweitern.
Verifiziert im Wegwerf-Worktree: Normalfall befördert die zwei Knoten und
committet; ein absichtlich auf example-plan-0.werkbaum ausgeweiteter sed bricht
mit Exit 1 ab, listet beide betroffenen Dateien, setzt die Plandatei zurück und
committet nichts; danach läuft der Normalfall unverändert durch.
(Beim ersten Testlauf griff der Wächter scheinbar nicht — Ursache war der Test,
nicht das Skript: `git reset --hard` hatte die eingespielte Skriptfassung durch
die committete, noch ungesicherte ersetzt.)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6836352e84
commit
cfbbfab54b
+18
-2
@@ -956,8 +956,24 @@ your last visit" (D28) —, nicht das Dutzend, das vorher grob geschätzt worden
|
||||
war. Beide stehen jetzt auf `[x]` und leuchten beim nächsten Prod-Deploy als neu
|
||||
auf, was genau der Wahrheit entspricht.
|
||||
|
||||
**Umfang:** Nur `docs/examples/example-werkbaum.werkbaum`. Die übrigen
|
||||
Beispieldateien sind erfunden und sagen nichts über ein Deployment aus.
|
||||
**Umfang: genau eine Datei, bewusst kein Muster.** Befördert wird nur
|
||||
`docs/examples/example-werkbaum.werkbaum` — allein der Werkbaum-eigene Plan sagt
|
||||
etwas über das Deployment aus. `[x]` steht im Repo an mehreren Stellen, wo eine
|
||||
Beförderung falsch bis unsinnig wäre:
|
||||
|
||||
- Die **Legende („Agenda")** zeigt `[x] fertig` als *Anschauungsmaterial* für die
|
||||
Notation (`frontend/index.html`, `chip('fertig','[x]')` in `app.js`). Daraus
|
||||
würde `[^] fertig` — Unsinn, den beim Durchsehen eines Diffs niemand bemerkt.
|
||||
- Das mitgelieferte **„Example"-Dokument** (`INITIAL` in `app.js`) und die
|
||||
übrigen `docs/examples/*.werkbaum` sind erfunden.
|
||||
- **SPEC §10** (kanonisches Beispiel, zugleich Test-Fixture) und die Checkboxen
|
||||
in `docs/TASKS.md`.
|
||||
|
||||
Weil eine spätere „Verallgemeinerung" auf ein Glob naheliegt und der Schaden
|
||||
still wäre, bleibt es nicht bei der Zusage: Der Lauf vergleicht `git status` vor
|
||||
und nach dem Schreiben und **bricht ab**, sobald mehr als die Plandatei neu
|
||||
geändert ist — die Datei wird zurückgesetzt, nichts wird committet. Geprüft mit
|
||||
einem absichtlich ausgeweiteten `sed` in einem Wegwerf-Worktree.
|
||||
|
||||
**Nicht gepusht.** Das Skript committet, pusht aber nicht — Veröffentlichen
|
||||
bleibt eine bewusste Handlung. `deploy-prod.sh` warnt stattdessen, wenn HEAD
|
||||
|
||||
Reference in New Issue
Block a user