diff --git a/STATUS.md b/STATUS.md index 172b3cb..ef2ee7f 100644 --- a/STATUS.md +++ b/STATUS.md @@ -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) diff --git a/docs/design/2026-08-21-v031-adoption-stage-2.md b/docs/design/done/2026-08-21-v031-adoption-stage-2.md similarity index 77% rename from docs/design/2026-08-21-v031-adoption-stage-2.md rename to docs/design/done/2026-08-21-v031-adoption-stage-2.md index a1ba0b4..74cf5c5 100644 --- a/docs/design/2026-08-21-v031-adoption-stage-2.md +++ b/docs/design/done/2026-08-21-v031-adoption-stage-2.md @@ -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.** diff --git a/docs/ledger/2026-08-21-v031-adoption-stage-2.md b/docs/ledger/2026-08-21-v031-adoption-stage-2.md index 3395d90..e938c93 100644 --- a/docs/ledger/2026-08-21-v031-adoption-stage-2.md +++ b/docs/ledger/2026-08-21-v031-adoption-stage-2.md @@ -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 diff --git a/docs/wiki/stolpersteine/upgrade-pfad-nie-begangen.md b/docs/wiki/stolpersteine/upgrade-pfad-nie-begangen.md index 2a40065..f62948c 100644 --- a/docs/wiki/stolpersteine/upgrade-pfad-nie-begangen.md +++ b/docs/wiki/stolpersteine/upgrade-pfad-nie-begangen.md @@ -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