docs: Gate 5 closeout — what this work made false, and the design doc to done
Five statements this undertaking contradicts, named rather than left standing. Two of them are in this document's own earlier gates: the Gate-2 mapping had FB-06 as open when the framework had split the item and closed that half in v0.1.3, and had FB-09 and FB-11 as open when v0.3.0 covers them partly. Both only surfaced because the states were checked against the rule text of the tags instead of the issue status. The third is FB-12's "point 3 is fixed", whose reasoning - the error is forgetting, not doing it wrong - was falsified by the same task. That page is revised rather than appended to, which is the practice this project harvested and the framework shipped in v0.1.3. Criterion 5 stays partly met. The deterministic half ran against both of the day's ledgers without findings; the verdict artifact must not be written here, because its own template holds that a verdict produced in the working session is void whatever it says. Moving the document one level deeper broke three relative links, which validate.py caught before the commit. Same class as everything else today: the tool saw what the plan did not. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Q4Ri8NGwyTZzScvKnWFM
This commit is contained in:
co-authored by
Claude Opus 5
parent
73afd844a1
commit
988e4b4e51
@@ -87,11 +87,9 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
|
||||
| [0090](docs/issues/0090-gitops-59-kein-kubernetes-audit-log-zugriffe-an-der-api.md) | low | open | Kein Kubernetes-Audit-Log — Zugriffe an der API werden nicht protokolliert |
|
||||
|
||||
|
||||
## Active design docs (1)
|
||||
## Active design docs (0)
|
||||
|
||||
| Design | Gate | Title |
|
||||
|---|---|---|
|
||||
| [2026-08-21-v031-adoption-stage-2](docs/design/2026-08-21-v031-adoption-stage-2.md) | gate-3 | Design: Die Übernahme von v0.3.1 zu Ende bringen — Etappe 2 |
|
||||
_none active_
|
||||
|
||||
## ADRs (24)
|
||||
|
||||
|
||||
+105
-4
@@ -1,6 +1,6 @@
|
||||
---
|
||||
type: design
|
||||
status: gate-3
|
||||
status: done
|
||||
date: 2026-08-21
|
||||
size: L
|
||||
related:
|
||||
@@ -17,7 +17,7 @@ related:
|
||||
zweistufige Übernahme von neckbeard `v0.3.1` aufgesetzt. Beim Aufsetzen
|
||||
zeigte sich, dass **Etappe 1 bereits gelaufen ist** — ein paralleler
|
||||
Durchlauf am selben Tag hat sie erledigt und in
|
||||
[docs/ledger/2026-08-21-neckbeard-v0-3-1-upgrade.md](../ledger/2026-08-21-neckbeard-v0-3-1-upgrade.md)
|
||||
[docs/ledger/2026-08-21-neckbeard-v0-3-1-upgrade.md](../../ledger/2026-08-21-neckbeard-v0-3-1-upgrade.md)
|
||||
protokolliert. Dieses Dokument beschreibt deshalb **nur den Rest**, nicht
|
||||
das Ganze; alles andere wäre die Klasse „Dokument behauptet einen Zustand,
|
||||
den die Messung längst überholt hat" (FB-04) im eigenen Plan.
|
||||
@@ -31,7 +31,7 @@ Erledigt und nachgeprüft:
|
||||
| `schema.yaml` zusammengeführt — `ledger` und `verdict` vorhanden, unsere Erweiterungen (`component`, Meilenstein, Priorität) unangetastet | ✅ |
|
||||
| `check_harvest.py` und `judge.py` übernommen, `validate.py` um die Portabilitätsprüfung ergänzt | ✅ |
|
||||
| Ledger-Pflicht in Kraft, erstes Ledger geschrieben | ✅ |
|
||||
| [ADR-0024](../adr/0024-drei-framework-dateien-erklaert-erweitert.md): drei Dateien sind **erklärte Erweiterungen** statt byte-treuer Kopien | ✅ |
|
||||
| [ADR-0024](../../adr/0024-drei-framework-dateien-erklaert-erweitert.md): drei Dateien sind **erklärte Erweiterungen** statt byte-treuer Kopien | ✅ |
|
||||
| **FB-12** aufgenommen: der Upgrade-Pfad war beschrieben, nie begangen | ✅ |
|
||||
|
||||
⚠️ **Eine Festlegung wurde dabei bewusst umgedreht**, mit Freigabe und
|
||||
@@ -387,4 +387,105 @@ repariert.
|
||||
`harvested` einen Beleg verlangt — welches Issue, welche Begründung. Ein
|
||||
Zustand ohne Nachweis ist eine Behauptung, unabhängig davon, wie er heißt.
|
||||
|
||||
> **STOP — Freigabe für Gate 3.**
|
||||
> **Gate 3 freigegeben durch sorb, 2026-08-21.**
|
||||
|
||||
## Gate 4 — Vertical Slices
|
||||
|
||||
| Slice | Commit | Inhalt | Status |
|
||||
|---|---|---|---|
|
||||
| 4.1 | `0a95437` | Tracer Bullet: Schema, Generator, eine Seite | `DONE` |
|
||||
| 4.2 | `fe5286c` | Schema-Deckung als Widerspruch; zwei Befundseiten | `DONE` |
|
||||
| 4.3 | `9ca5ec3` | Elf Befunde umgezogen, Stände belegt; `AGENTS.md` bereinigt | `DONE` |
|
||||
| 4.4 | `09ed1f7` | Judge gelaufen, Regelabdeckung gemessen | `DONE_WITH_CONCERNS` |
|
||||
|
||||
Belege und Leiter-Gänge stehen im
|
||||
[Ledger](../../ledger/2026-08-21-v031-adoption-stage-2.md); hier nur, was ein
|
||||
Leser des Entwurfs sonst falsch verstünde.
|
||||
|
||||
## Gate 5 — Closeout (AAR)
|
||||
|
||||
**Planned vs. actual.** Geplant war Etappe 2: Befunde umziehen, Stände
|
||||
setzen, Übersicht erzeugen. Alles geliefert — plus zwei Dinge, die der Plan
|
||||
nicht kannte: die beiden im v0.3.1-Merge verlorenen Schema-Felder und der
|
||||
Widerspruch, der ihren Verlust künftig meldet.
|
||||
|
||||
| # | Kriterium | Ergebnis |
|
||||
|---|---|---|
|
||||
| 1 | Zwölf Befunde zugeordnet, null ohne | **erfüllt** — 12/12, per Skript |
|
||||
| 2 | Entschiedener Stand nennt eine Version, Beleg prüfbar | **erfüllt** — neun Seiten, am Regeltext der Tags geprüft |
|
||||
| 3 | Übersicht erzeugt, `--check`-fähig | **erfüllt** — Handänderung wird rot, vorgeführt |
|
||||
| 4 | Doppelter Regeltext entfernt | **erfüllt** |
|
||||
| 5 | Judge läuft, Verdikt entsteht | **teilweise** — siehe unten |
|
||||
| 6 | Alle Tore grün | **erfüllt** — Pipeline 624 |
|
||||
|
||||
**Kriterium 5 bleibt teilweise, und zwar richtigerweise.** Die
|
||||
deterministische Hälfte lief gegen diesen und gegen den fremden Lauf des
|
||||
Tages, beide ohne Befund. Das Verdikt-Artefakt darf hier nicht entstehen:
|
||||
seine Vorlage sagt, ein in der Arbeitssitzung erzeugtes Verdikt sei
|
||||
nichtig, *„whatever it says"*. Ein Agent, der seinen eigenen Lauf beurteilt,
|
||||
rechtfertigt statt zu prüfen. Das gehört in eine frische Sitzung.
|
||||
|
||||
**Was diese Arbeit falsch gemacht hat** (Pflicht seit v0.1.3):
|
||||
|
||||
1. **Die Zuordnungstabelle in Gate 2 dieses Dokuments.** FB-06 stand dort
|
||||
als offen — das Rahmenwerk hatte das Sammel-Item geteilt und die Hälfte
|
||||
als Issue 0028 in v0.1.3 erledigt. FB-09 und FB-11 standen als offen und
|
||||
sind seit v0.3.0 teilweise gedeckt. Beides kam nur heraus, weil die
|
||||
Stände am Regeltext der Tags geprüft wurden statt am Issue-Status.
|
||||
2. **Gate 3 dieses Dokuments**, unsichere Entscheidung 2: FB-07 und FB-08
|
||||
sollten `open` bekommen, weil der Enum nichts Besseres hergab. Auf
|
||||
Einwand verworfen und durchgestrichen stehen gelassen.
|
||||
3. **FB-12, Punkt 3 („ist behoben").** Die dortige Begründung — *„Der
|
||||
Fehler ist Vergessen, nicht Falschmachen"* — ist an derselben Aufgabe
|
||||
widerlegt worden. Die Seite ist **revidiert**, nicht ergänzt.
|
||||
4. **Drei Beschreibungen** in `AGENTS.md`, `README.md` und `roadmap.md`,
|
||||
die `FRAMEWORK-BEFUNDE.md` als Eingangsliste führten. Nachgezogen.
|
||||
5. **Gate 2s Behauptung**, die Datei entfalle. Sie kann nicht — ADR-0024
|
||||
verweist darauf und ist angenommen.
|
||||
|
||||
**Why the difference.** Dasselbe Muster wie im vorigen Vorhaben, an neuem
|
||||
Gegenstand: Jede Korrektur kam vom **Nachmessen an der Quelle**, nie vom
|
||||
Nachdenken über den Plan. Die Stände waren aus dem Issue-Status plausibel
|
||||
abgeleitet und in zwei von zwölf Fällen falsch. Die verlorenen Schema-Felder
|
||||
waren durch eine wahrheitsgemäße Quittung gedeckt. Beides sah aus dem Plan
|
||||
heraus in Ordnung aus.
|
||||
|
||||
**Learnings.**
|
||||
|
||||
- **Eine Quittung bezeugt Aufmerksamkeit, nicht Vollständigkeit.** Wer eine
|
||||
Fehlerart per Annahme aus dem Entwurf entfernt („der Fehler ist X, nicht
|
||||
Y"), ohne Y zu messen, baut die Lücke ein, die er beschreibt.
|
||||
- **Ein Zustand, den das Feld nicht ausdrücken kann, wird nicht durch einen
|
||||
falschen Zustand ersetzt** — der Enum wird erweitert. Der Einwand kam von
|
||||
sorb, nachdem ich das Gegenteil begründet hatte.
|
||||
- **Die Commit-Spalte des Ledgers erzwingt eine Reihenfolge.** Eine Zeile,
|
||||
die im selben Commit entsteht wie die Arbeit, kann dessen SHA nicht
|
||||
nennen. Der Judge hat mich zweimal darauf gestoßen.
|
||||
- **Ein Warnblock ohne Gegenstand ist schädlicher als keiner.** Der erste
|
||||
Entwurf beanstandete zwei völlig korrekte Seiten, weil `status` optional
|
||||
ist. Eine Dauerbeschwerde bringt Leuten bei, den Abschnitt zu überblättern.
|
||||
- **Die Kontrolle kann stumpfer sein als die Prüfung.** Zweimal lag der
|
||||
Fehler nicht im Werkzeug, sondern in meiner Gegenprobe — eine unrealistische
|
||||
Fixture und ein Auswerter, der einen Absturz nicht von einem Fehlschlag
|
||||
unterschied.
|
||||
|
||||
**Harvested.** Zwei neue `stolpersteine`-Seiten für die nächste Übergabe:
|
||||
*„Eine Quittung bezeugt Aufmerksamkeit, nicht Vollständigkeit"* und *„Eine
|
||||
Datei kann nicht maßgeblich und zugleich unveränderlich sein"*. Beide
|
||||
`status: open`, beide mit dem verallgemeinerten Teil für das Rahmenwerk.
|
||||
|
||||
**Open uncertainties.**
|
||||
|
||||
1. **Das Verdikt fehlt.** Bis eine frische Sitzung es schreibt, ist der
|
||||
Judge hier zur Hälfte ungenutzt.
|
||||
2. **Für `validate.py` und `gen_status.py` gibt es keinen strukturellen
|
||||
Vergleich.** Der Handabgleich trägt dort weiterhin nur die Quittung —
|
||||
deren Grenze gerade belegt wurde.
|
||||
3. **`partly` für FB-09 und FB-11 ist ein Urteil**, kein Messwert. Der
|
||||
Ledger deckt sie beobachtbar ab, nicht durchsetzbar; wer strenger urteilt,
|
||||
käme auf `open`.
|
||||
4. **Ein Muster ohne Stand ist von einer gewöhnlichen Seite nicht zu
|
||||
unterscheiden**, seit der Warnblock neutral ist. In der Sache richtig,
|
||||
aber es heißt: Der Verlust eines Standes fällt niemandem auf.
|
||||
|
||||
> **STOP — Freigabe für Gate 5.**
|
||||
@@ -4,7 +4,7 @@ date: 2026-08-21
|
||||
size: L
|
||||
status: open
|
||||
related:
|
||||
- "docs/design/2026-08-21-v031-adoption-stage-2.md"
|
||||
- "docs/design/done/2026-08-21-v031-adoption-stage-2.md"
|
||||
---
|
||||
|
||||
# Ledger: Die Übernahme von v0.3.1 zu Ende bringen
|
||||
|
||||
@@ -66,7 +66,12 @@ Prüfungen macht.
|
||||
Löschung bleiben gesperrt, nur der Zugang ist erlaubt. Vier Kontrollen belegt. Upstream
|
||||
`check_locked.py` zieht dieselbe Grenze und sichert sie zu — unsere Fassung wusste es
|
||||
nur nicht.
|
||||
- **Punkt 3 ist behoben.**
|
||||
- **Punkt 3 ist ⚠️ nur halb behoben** — revidiert am 2026-08-21, siehe
|
||||
[Eine Quittung bezeugt Aufmerksamkeit, nicht Vollständigkeit](quittung-bezeugt-aufmerksamkeit.md).
|
||||
Der Widerspruch verlangt eine Quittung und prüft damit, **ob** nachgezogen
|
||||
wurde, nicht **ob vollständig**. Beim selben Upgrade wurde er quittiert und
|
||||
verlor trotzdem zwei Schema-Felder. Für `schema.yaml` gibt es seither einen
|
||||
strukturellen Vergleich; für die beiden Python-Dateien nicht.
|
||||
[ADR-0024](../../adr/0024-drei-framework-dateien-erklaert-erweitert.md) trägt die
|
||||
Ausnahme seit dem 2026-08-21 als Entscheidung, und `pruefe_upstream_drift.py` hat seit
|
||||
demselben Tag den maschinellen Widerspruch: Hat upstream zwischen der vorigen und der
|
||||
|
||||
Reference in New Issue
Block a user