fix: Story 3.13 Review-Loop-2-Auflösung (bmad-code-review 4 Layer, Diff 50f3628..HEAD + working tree): 38 rohe → 4 decision-needed / 11 patch / 2 defer / 4 dismissed; alle Entscheidungen mit ProMods geschlossen (D-3.13-L2-1 B2-Reihenfolge-Pin+§8-Überreich = Defer+Bearer-Fix, D-3.13-L2-2 Datumsgruppen-Wanduhr = Defer+Gate-Dokumentation, D-3.13-L2-3 AC-6-CREATE-Residual = Defer+Substitutions-Notiz, D-3.13-L2-4 frozen-L24-Wortung = dokumentierte Abweichung annotiert); Patches P-L2-1..P-L2-11: E.6 Known-Value-Witness (baseline==$BASE + sources_added==raw/alpha-v2.md) + Feldsatz-exakt-Check (4 Felder, keine Fremdzeilen), AGENT_PROMPT-Receipt-Form präzisiert (GATE-spezifisch vs. compiler.md-Konzept §5.14 Pkt. 2, kommagetrennt oh. Leerzeichen, lex LC_ALL=C), E.9 kanonische 'Baseline $BASE'-Form hart (Rev 3.8), P-16 Floor auf Dezimalzwang (10#), A.2-Meldung 5 Referenzen, D-NEG.3-Punktbezeichnung, Spec-Doku-Sync (Review-Loop-2-Sektion, Change-Log, #6/#7-Teilkorrektur); Status: in-progress (grüner Re-Run #10 + Step-05-Status-Sync ausstehend), bash -n clean (1005 Z.)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Michael Tamse
2026-08-24 12:13:03 +02:00
co-authored by Claude
parent cccc0a35e9
commit 09c1c83a5a
4 changed files with 103 additions and 20 deletions
@@ -663,3 +663,11 @@ Der Epic-3-Abnahmegate-Lauf (`_bmad-output/implementation-artifacts/sandbox-3-13
**Ausgeführte Gate-Härtung (Re-Run #6-Auflösung, Re-Run #7-Pfand):** E.6 vergleicht nun **nur die drei deterministischen Felder byte-identisch A==B** + prüft die `decision`-Zeile auf **Vorhandensein** (nicht leer); die `decision`-Prosa gilt als **Befund-Äquivalenz** (Nicht-Wort-Identität, §5.10-Pkt-3-Prinzip; D-2/D-1-konsistent). Keine compiler.md-/frozen-Block-Änderung.
**Offener Vertrags-Defer (Ask-First):** die **Vertrags-Vollständigkeit** — ein **byte-deterministischer Receipt** mit kanonisch gepinnter `decision`-Feldform — ist **nicht** Teil des gültigen Vertrags und wird als **separater Kandidat** für eine spätere compiler.md-Revision (Rev 3.9) oder Epic-4-Determinismus-Überarbeitung übergeben. Bis dahin gilt: deterministische Felder A==B (hart), decision-Prosa = Befund-Äquivalenz (kein Byte-Abgleich). Kein stiller Semantik-Change durch das Gate (AC-4/AD-3-konform).
**Home:** Story 3.13 (Gate-Härtung) / spätere compiler.md-Revision oder Epic-4 (Vertrags-Vollständigkeit).
## Deferred from: code review of spec-3-13-epic-3-verifikations-und-abnahmegate (Story 3.13, Review-Loop-2, 2026-08-24)
- **W-L2-1: D-NEG-FAIL-Wurzel nicht gegen beabsichtigten Punkt verifiziert** (Story 3.13, Review-Loop-2, 2026-08-24) — D-NEG.2/.3/.4 asserten nur „mindestens 1 FAIL-Verdikt pro Neg-Fixtur" (neg_count `-ge 1`), nicht dass die FAIL-Wurzel die beabsichtigte Invaliditäts-Stelle (Punkt 1/9/14-EC-3) ist. Der FAIL-Grund ist freier Validator-Prosa-Text → Punkt-Exakt-Match wäre fragil (falsch-rot-Risiko bei gültiger Prosa-Variation); der Differenz-Nachweis (pos-SUCCESS vs. je neg-FAIL, Positiv-Kontrolle im selben Käfig) + AC-3-„verhindern SUCCESS" genügt für die Abnahme. Härtungs-Kandidat für spätere Sandbox-Härtung (z. B. Punkt-Keyword-Toleranz-Grep statt Exakt-Match).
- **W-L2-2: E.6 `decision`-Präsenz-Check (nicht-leer) = beabsichtigtes Scope** (Story 3.13, Review-Loop-2, 2026-08-24) — E.6 prüft `decision:` nur auf Nicht-Leerheit (kein Format-/Längen-Minimum, keine Concept-Pfad-Referenz-Pflicht). Das ist **beabsichtigt**: `decision` ist freie LLM-Prosa (Befund-Äquivalenz, Loop-1 D-2 / Re-Run-#6-Klassifizierung); ein Stärker-Check wäre Over-Pin (dieselbe Klasse wie das Re-Run-#6-E.6-Problem) und riskiert falsch-rot. Kein Defekt.
- **D-3.13-L2-1: compiler.md Rev-3.8-Unterpinnung — B2-Reihenfolge-Pin fehlt + §8-Überreich** (Story 3.13, Review-Loop-2, 2026-08-24) — **status: offener Defer (Nutzer-Entscheidung D-3.13-L2-1 = „Defer + Bearer-Fix"; Bearer-Doc-Fix ausgeführt).** compiler.md §5.9 pinnt die Log-Eintragsform, aber **nicht** die Reihenfolge der Einträge *innerhalb* einer `## YYYY-MM-DD`-Datumsgruppe (B2-Hälfte „Reihenfolge-pinnen" von Rev 3.8 nie in compiler.md gelandet; grep 0 Treffer „Innerhalb einer Datumsgruppe"/Tie-Break); §8-Rev-3.8-Claim „jeder Eintrag byte-deterministisch ableitbar" ist überreich (Disagreement-Form §5.9 Pkt. 4 unpinnt; bare `- Anlage:`-Form nach CREATE-Entfernung ohne Live-Demo). **Klassifikation: latent (3× A/B-`log.md` byte-identisch in #7/#8/#9, noch nie rot).** Bearer-Doc (compiler-revision-3-8-…) §0.1-Zeile B2 + L26-Claim „= genau so wie im Entwurf" korrigiert auf „TEILANGEWENDET" (nur Form-/Wanduhr-Hälfte). Kandidat für spätere compiler.md-Revision (Rev 3.9) zusammen mit W-L2-2 und dem CREATE-Residual (D-3.13-L2-3). **Home:** Story 3.13 / spätere compiler.md-Revision.
- **D-3.13-L2-2: log.md `## YYYY-MM-DD`-Datumsgruppen-Header = Wanduhr außerhalb der §5.14-Pkt.-3-`at`-Ausnahme** (Story 3.13, Review-Loop-2, 2026-08-24) — **status: offener Defer (Nutzer-Entscheidung D-3.13-L2-2 = „Defer + Gate-Seite dokumentieren").** Die Datumsgruppen-Header sind Wanduhr-Werte; §5.14 Pkt. 3 nennt nur `generated.at`/`verified[].at` als Ausnahmefelder. Ein A/B-Paar, das **Mitternacht überschneidet**, erzeugt deterministisch E.4-`NON_AT`-rot (falsch-rot; der geankerte Classifier maskiert den Header korrekt NICHT). **Klassifikation: latent, nicht beobachtet (alle Läufe same-day).** Gate-Seite: der Gate-Kern (E.4-Classifier) behandelt den Header korrekt als Nicht-`at`-Zelle; same-day-Läufe sind byte-deterministisch. Kandidat für spätere compiler.md-Revision (Rev 3.9: Header an Baseline-Commit-Date koppeln ODER als benannte Ausnahmeklasse aufnehmen), gebündelt mit D-3.13-L2-1. **Home:** Story 3.13 / spätere compiler.md-Revision.
- **D-3.13-L2-3: AC-6 CREATE/Synthese — Substitutions-Notiz + frischer-LLM-CREATE-Residual** (Story 3.13, Review-Loop-2, 2026-08-24) — **status: offener Defer (Nutzer-Entscheidung D-3.13-L2-3 = „Defer + Substitution-Notiz").** AC-6 verlangt „Anlage einer neuen Wissenseinheit" + „kohärente Multi-Source-Synthese"; die A/B-Fixture (E) ist UPDATE-only. **Substitutions-Notiz (ausgeführt, Doku):** die CREATE-/Synthese-*Mechanik* (neues Concept + Index-Link Punkt 11 + Slug-Ableitung §5.15/§5.7 + Multi-Source-Synthese + log.md-Anlage) wird über die Sandbox-Sub-Runs **3-3/3-4** (mechanisch gepinnt, eigene Isolation) **strukturell** als demostriert betrachtet — die Substitution „mechanisch gepinnt ≙ frischer LLM" gilt für die *Mechanik-Struktur*, nicht für den freien LLM-Wortlaut. **Residual (offen):** der **frische-LLM-CREATE-Unterpfad** ist nicht-deterministisch (Re-Run-#5-Befund: 24/26 NON_AT CREATE-/Slug-getrieben; ohne compiler.md-CREATE-Pinning = deterministisch rot) und steht damit als **benanntes, nicht-deterministisches Residual** hier — kein Gate-Defekt, sondern eine bekannte Vertrags-/Instruktions-Grenze (CREATE-Body bleibt FR-2 „Befund-Äquivalenz, nicht Wort-Identität"). Kandidat für spätere Vertrags-Revision/Epic-4-Determinismus-Überarbeitung. **Home:** Story 3.13 / spätere compiler.md-Revision oder Epic-4.