Re-Run #5 (Voll-Lauf gehärtetes Gate 915 Z., /tmp/gate-313-run5.log): ROT an E.4 (NON_AT=26 AT=4) — korrekt erkannter, echter AD-16-A/B-Divergenz-Befund in der freien CREATE-Synthese (Slug-Identität beta vs. quanten-observatorium-kanal + freier Body-/log.md-Wortlaut), kein false-PASS; UPDATE-Pfad alpha byte-identisch bis auf at:. Grün: C 12/12, D 4/4 SUCCESS, D-NEG 3xFAIL+1xSUCCESS, E.1-E.3 + beide frische Agent-Läufe (RUN_DONE); F/G nicht demonstriert (fail-fast an E.4). AC-4-Defizit-Roadmap (Nutzer-Entscheidung 2026-08-23): autorisierte Epic-1-Remediation (compiler.md Rev 3.7->3.8: CREATE-Slug-Pin, CREATE-Body-kanonische Form, log.md-Regel) -> 12-Sandbox-Re-Execution -> Re-Run #6. Frozen-Matrix-Zeile VALIDATOR_DEFIZIT auf G-5 FAIL (Non-Zero) korrigiert (Ask-First-Erfüllung). Tasks getickt (5/8); Status-Sync: log.md/epic-3-context/sprint-status (Key bleibt in-progress, last_updated 08-23-2026 17:09); Gate/Schemas/raw unverändert. Co-Authored-By: Claude <noreply@anthropic.com>
170 KiB
170 KiB
Log
2026-08-23
- Story 3.13 → Re-Run-#5-Ausführung +
in-progress(Epic-3-Verifikations- und Abnahmegate, gehärtetes Gate 915 Z. als Voll-Lauf, 2026-08-23; Gate rot an E.4 — korrekt erkannter echter AD-16-Befund, kein false-PASS): Voll-Lauf-Re-Run #5 des gehärteten Gates (ausschließlich/tmp-Käfig, nie der Ist-Baum; fail-fast;CLAUDE_BINauf die echte winpty-freieclaude.exeper P-3-Override, P-16-Floor 32000 aktiv). Grün (alle harten Gates bestanden): A (Setup + Porcelain-Pre-Check), B (Käfig +git init+ Baseline), C 12/12 Sandbox-Sub-Runs 3.1–3.12 (fail-fast, jeexit 0), D 4/4 SUCCESS (frischer Validator-Agent: D.1VALIDATOR_DONE, D.4 exakt-ein-Verdikt-pro-Datei, D.5/D.6 — über die P-4-isolierte Mini-Fixtureindex/alpha/gamma/log; bewusste Verengung ggü. dem 08-22-Erst-Lauf „7/7", kein Regression), D-NEG 3×FAIL + 1×SUCCESS (neg-1 fehlendestype, neg-2okf_versionaußerhalb Bundleroot, neg-3at: 2026-02-31; Positiv-Kontrolle SUCCESS), E.1 (Term-Isolation), E.2 ($BASE=ad8179d6f36dc98511f38948f21353ac1f12648d), E.3 (Worktrees wt-a/wt-b), Lauf A + Lauf B mitRUN_DONE-Markern (echte frische Agent-Kontexte). Rot an E.4 (A/B-Vergleich, §5.14 Pkt. 2/3):A/B-Classifier: NON_AT=26 AT=4→HARD-FAIL (E.4)→exit 1— das Gate hat korrekt einen echten AD-16-A/B-Divergenz-Befund außerhalb der benanntenat-Ausnahme erkannt (kein false-PASS). Divergenz-Klassifikation (alle 26 NON_AT-Zeilen im CREATE-Pfad, d. h. in freier Form-Synthese): (a) Slug-/Datei-Identität — Lauf Awiki/beta.md(Slug aus dem raw-Dateinamen-Stamm „beta") vs. Lauf Bwiki/quanten-observatorium-kanal.md(Slug aus dem Inhalts-Term); die Fixture bietet zwei konkurrierende Slug-Signale; die Spec-Design-Notes bezeichnen das intendierte Ergebnis als „term-geleitet" (Lauf B), aber compiler.md §5.1 Pkt. 1 / §5.15 Pkt. 1 / §5.7 lassen offen, welches Signal bei einem CREATE-Slug maßgeblich ist, wenn Dateinamen-Stamm und Inhalts-Term divergieren → Instruktionslücke (AD-16); (b) freier Form-Body-Wortlaut — zwei frische LLMs schreiben nie byte-identische „eigenständig formulierte" (§5.9 Pkt. 2) CREATE-Bodies; compiler.md enthält keinen Wortlaut-Pinning-Mechanismus (§5.10 Pkt. 3 pinnt nur die Reihenfolge, nicht den Wortlaut) → Byte-Identität freier CREATE-Synthese ist unter der aktuellen Instruktion nicht erfüllbar; (c) log.md — freier Form-Wortlaut + ungepinnte Eintrags-Reihenfolge an einem Datum + Lauf B bettet eine Wanduhr-generated.atin den log-Body ein (außerhalb der at-Ausnahme; der geankerte E.4-Classifier maskiert sie korrekt nicht; compiler.md regelt nicht, ob Log-Einträge at-Werte tragen dürfen). Entscheidender Befund — der Vertrag ist auf dem UPDATE-Pfad erfüllbar:wiki/alpha.md(UPDATE/CONFIRMING) ist byte-identisch bis aufat:konvergiert (CONFIRMING-Multi-Beleg-Konsolidierung §5.16 Pkt. 4 fügt nur einen deterministischen Provenienz-Anker, keinen freien Wortlaut hinzu) — der Defekt ist exakt auf die freie CREATE-Synthese isoliert. Konsequenz (AC-4 / §5.14 Pkt. 4): einExit 0des Gates ist nicht innerhalb der aktuellen Autorität erreichbar (keine stille Schema-Änderung AD-3/AC-4, keine A0-20-Gate-Verhaltensänderung, kein hart-codierter Slug D-1); korrekte Route = AC-4-Defizit-Pfad: Story 3.13 bleibt offen und benennt den Bedarf für eine separat autorisierte Epic-1-Remediation (oder eine menschliche Entscheidung über den A/B-Vergleichsumfang); das Gate ändert die Schema-Semantik nicht still und verantwortet die vollständige Ausführung des bestehenden Vertrags. Nicht demonstriert im Voll-Lauf: F (G-1..G-8 inkl. G-6 perturbed-Tree + wt-c2-at-only-Kontrolle) und G (Porcelain-Endinvariante) liefen nicht (fail-fast an E.4). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/schema/compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); grüner Voll-Lauf-Re-Run + Review-Loop-2 ausstehend (abhängig von der separat autorisierten Epic-1-Remediation bzw. menschlichen A/B-Umfangs-Entscheidung). - Story 3.13 → Re-Run-#2/-#3/-#4-Auflösung +
in-progress(Epic-3-Verifikations- und Abnahmegate, Voll-Lauf-Re-Runs des gehärteten Gates, 2026-08-23): Nach Review-Loop-1 (7 Entscheidungen/15 Patches) drei Voll-Lauf-Re-Runs des gehärteten Gates (jeweils ausschließlich/tmp-Käfig, nie der Ist-Baum; fail-fast). Re-Run #2 rot: derclaude-Shim (C:\Users\mita\bin\claude) ist winpty-PTY-wrapped und bricht in headless/Background-Läufen ab (stdin is not a tty, rc=1) — alle 12 Bash-Sub-Runs 3.1–3.12 grün, dann E.3HARD-FAIL (rc=1); Fix:CLAUDE_BINauf die echte winpty-freieclaude.exesetzen (Gate-P-3-Override kanalisiert ALLE Agent-Aufrufe durchCLAUDE_BIN; PONG-Smoke + D-NEG 5/5 im Re-Run #3 als Beweis). Re-Run #3 rot (2 Befunde): (1) D.4 falsch-rot — der frische Validator-Agent schrieb Dotted-Pfade (wiki.alpha.md) aus der alten Prompt-Wortung „gepunktete Pfad"; 4 gültige Verdicts existierten (D.5/D.6 grün), das Regex matchte nichts → P-17:norm_verdict_path()-Normalisierer (Backslash→Slash, Quote-Strip,wiki/-Abschnitt, Dotted-Form-Regression,concepts/-Subpfad-Erhaltung) + Prompt-Wortung präzisiert („RELATIVE PFAD mit Schrägstrichen") + diagnostischer Verdict-Dump — 21/21-Test; (2) E.3-Token-Cap — „API Error: Claude's response exceeded the 16000 output token maximum" (E.3 braucht eine große Antwort: compiler.md + Writes + Receipt) → P-16:CLAUDE_CODE_MAX_OUTPUT_TOKENS=32000. Re-Run #4 (vor D intentional abgebrochen): der Log zeigteCLAUDE_CODE_MAX_OUTPUT_TOKENS: 16000— die Session-Umgebung exportiert 16000 bereits (Modell-Built-in in Child-Env), daher griff${VAR:-32000}nie → P-16 auf Floor-Semantik umgestellt: geerbte numerische Werte unter 32000 werden angehoben, höhere bleiben erhalten (P-3-Override-Semantik); A/B-Beleg 1698 abgebrochene vs 5002 vollständige Zeilen, 6/6-Subshell-Unit-Test. Status: gehärtetes Gate 915 Z. (bash -nclean); alle drei bekannten Defekt-Ursachen behoben und einzeln empirisch validiert; 12/12 Sub-Runs in #3/#4 grün; grüner Voll-Lauf-Re-Run (#5) ausstehend — finalerdone-Flip + Review-Loop-2 danach (Präzedenz 3.7–3.12). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/schema/compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress). - Story 3.13 → Review-Loop-1-Auflösung +
in-progress(Epic-3-Verifikations- und Abnahmegate, bmad-code-review Re-Run 4 Layer — blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor, 2026-08-22; Befundauflösung 2026-08-23): Re-Review der Erst-Lauf-Implementierung (sandbox-3-13/run-sandbox.sh, 771 Z. vor Härtung); Triage: 28 eindeutige Befunde nach Dedup aus 43 rohen — 7 decision-needed / 15 patch / 2 defer / 6 dismissed; keine intent_gap/bad_spec (kein Loopback, Step-04 nicht ausgelöst). Nutzer-Entscheidung (ProMods): „Ich folge Deinen Empfehlungen" — D-3.13-1..6 = Option 1/1/2/1/1/1, D-3.13-7 = Option 1: (1) AGENT_PROMPT nur Instruktion + Fixture-Fakten, Gate-Checks = A-vs-B + Nicht-Vakuum-Witness gegen Baseline; (2) Run-Receipt A-vs-B-Vergleich (Modell sandbox-3-8 DET-2, at-/Pfad-Zellen gefiltert, keine erwarteten Literale); (3) G-6 = echter perturbed committeter Treewt-c+ at-only-Kontrollewt-c2durch denselben E.4-Classifier (deterministisch, kein 3. Agent; Negativ-Kontrolle MUSSNON_AT≠0, Positiv-Kontrolle MUSSNON_AT=0); (4) G-7 = generische Link-Auflösung + geschlossene, am realen Bundle validierte Planungstoken-Menge, relativ$REPO_ROOT(Ist-Baum, P-13); (5) AC-3-Negativ-Hälfte = separater /tmp-Käfig (D-NEG) mit 3 §7-/§6-Negativ-Fixtures (Punkt 1 fehlendestype, Punkt 9okf_versionaußerhalb der Bundleroot, Punkt 14/EC-3 kalenderinvalidesat: 2026-02-31) + Positiv-Kontrolle (gültiges Bundleroot-/Area-Index-Frontmatter + EC-1-existierenderaw/-Ressourcen als Kontrollrahmen) — frischer Validator-Agent MUSS 3×FAIL + 1×SUCCESS liefern; (6) Fixture um CREATE-Fall (neue raw-Quellenbeta-v1/v2, eindeutiger Termquanten-observatorium-kanal→ neue Concept-Datei mit term-geleitetem Pfad §5.15/§5.7 + Index-Link — nicht hart-codiert; Gate detektiert die Datei über Git und prüft ihre Semantik); (7) Status-Revertdone → in-progress(D-3.13-7; Präzedenz 3.7–3.12: finalerdone-Flip = Step-05-Status-Sync nach konvergiertem Review-Loop + grünem Re-Run). Patches (alle 15 angewendet): P-1 (sandbox-3-1: harte Assertions + Exit-Pfade, S1–S6; re-executiert: 14 PASS, FAILED=0, SANDBOX-3-1-OK, Exit 0), P-2 (E.4-Classifier Frontmatter-geankert+ at:/- at:statt Substring), P-3 (CLAUDE_BIN aus PATH + Feature-Checkstimeout/sha256sum/tar/cygpath/bashmit klaren Fehlern), P-4 (Käfig = isolierte Mini-Fixture,rm -rfdes realenraw//wiki/-Inhalts vor Fixture-Bau; Bundleroot-Frontmattertype: bundle/okf_version: "0.2"; Root-Concepts ohne Areas — Punkt-11-sauber), P-5 (E.1 bautwiki/+raw/vollständig neu — keine §B-Reste in$BASE), P-6 (exakt-ein-Verdikt-pro-Datei hart: 0 → Exhaustivitäts-FAIL, >1 → Eindeutigkeits-FAIL; Verdict-Summe vs. Dateizahl), P-7 (Defizit-Route: FAIL-Verdikt → Non-Zero-Exit + Remediation-Text „Bedarf einer separat autorisierten Epic-1-Remediation"; Boundary/AC-4 gilt — frozen-Matrix-Zeile VALIDATOR_DEFIZIT „G-5 PASS" = Renegotiation-Kandidat, spec Change Log, frozen-Block unangetastet), P-8 (Marker hart:VALIDATOR_DONE/RUN_DONE a|bgreppt, Abweichung = HARD-FAIL), P-9 (E.9: log.md ≠ Baseline + voller Baseline-SHA im Eintrag, kein vorgeschriebener Wortlaut), P-10 (raw/-Immutabilität hart:git diff $BASE HEAD -- raw/leer je Worktree), P-11 (Porcelain vollständig inkl. Untracked: A.5-Pre-Check + G-8-Endcheck + Negativ-Kontrolle im Käfig), P-12 (dieser Eintrag trägt die korrigierende Formulierung, s. u.), P-13 (G-7 relativ$REPO_ROOT), P-14 (Dead Code entfernt,trap rm -rf $ROOTEXIT,fail()/FAILED-Zweig lebendig), P-15 (spec Design Notes:git diff --stat "$HEAD_A" "$HEAD_B" -- wiki/— Commits statt Verzeichnis-Pfaden; ≠leer-Pin auf Allowance-leerer-Diff + Witness-Nicht-Vakuum; Fixture-Satz um CREATE-Kandidat). Ergebnis: gehärtetes Gate-Skript (839 Z.,bash -nclean); grüner Voll-Lauf-Re-Run (~2.5–3.5 h, Agent-Läufe) + Review-Loop-2 ausstehend — finalerdone-Flip danach (Präzedenz-konform). KORREKTUR-Teileintrag (P-12, 2026-08-23-Beobachtung zum 2026-08-22-Eintrag oben): die dortigen Zahlen „(20/27/40/51/60/68 PASS)" sind kumulativePASS_COUNT-Schnappschüsse am Ende der jeweiligen Gate-Abschnitte A/B/C/D/E/F/G (nicht pro-Sektion-Zählungen; GesamtPASS_COUNT=70ist der Endergebnis-Wert — Reconciliation: 70 stimmt exakt mit dem damaligen Skript).$BASE=5024d751c75e6d6135c33a02e08967099b2f887fist ein /tmp-Käfig-Commit (Zeitstempel-/Umgebungs-abhängig): Beleg für den damaligen Lauf, nicht re-ableitbar — kein Re-Derivations-Claim. Der Erst-Lauf-Befund (PASS_COUNT=70, FAILED=0, RUN_OK/Exit 0, Validator 7/7 SUCCESS, A/B nur-at, G-6-Perturbation erkannt, G-8-Porcelain leer) bleibt als Erst-Lauf-Evidenz gültig. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/schema/compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress).
2026-08-22
- Story 3.13 → Epic-3-Verifikations- und Abnahmegate abgeschlossen +
done(run-sandbox.sh, pass, 2026-08-22): Das repositoryweite Epic-3-Abnahmegate_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.shist erstellt und voll grün ausgeführt (RUN_OK, Exit 0, PASS_COUNT=70, FAILED=0), ausschließlich als/tmp-Käfig-Kopie des realen Clone-Baums — nie im Ist-Baum (AC-2). Abschnitte: (A) Setup — Repo-/Bundle-/Referenz-Check + Porcelain-Pre-Check (20 PASS); (B) Käfig-Bau — /tmp-Kopie vonschema/adapters/raw/wiki,git init+ Baseline,core.autocrlf false/core.filemode false(27 PASS); (C) 12 Sandbox-Sub-Runs fail-fast (3-1..3-12, jedeexit 0; 40 PASS); (D) Validator-Agent — frischer Kontext liestschema/validator.md(Rev 9) und stellt VerdikteSUCCESS/FAIL <pfad> <ursache>über alle 7wiki/-Dateien des realen Käfigs; das Gate prüft nur Verdikt-Grammatik (§5/§5.1) + Exhaustivität, urteilt nie selbst (D-3) — 7/7 SUCCESS, 0 FAIL (51 PASS); (E) Zwei-frische-Agenten A/B (AC-7) — zwei getrennte Worktrees auf demselben committeten$BASE(Fixture:wiki/index.md+alpha.md+gamma.md+log.md,raw/alpha-v1.mdBaseline, Zuwachsraw/alpha-v2.mdals CONFIRMING-Beleg,raw/gamma-v1.md; $BASE=5024d751c75e6d6135c33a02e08967099b2f887f), jeder frischer Kontext mitschema/compiler.mdals einziger Instruktionsquelle; Harness schreibt weder erwartete Bodies noch Lease-/Log-/Git-Ausgänge (AC-5); Commit-Boundary = Mutations-Boundary (Harness committet die Agent-Mutationen mechanisch, run-receipt.txt uncommittet); A/B-byte-identisch bis aufgenerated.at-Ausnahme (§5.14 Pkt. 2; diffwiki/zeigt nur at-Zeilen, NON-at-0), Multi-Beleg-Syntheseraw/alpha-v1.md#S-2; raw/alpha-v2.md#S-3im Body,sourceslexikografisch konsolidiert,gamma.md/index.mdbyte-identisch (AC-6) (60 PASS); (F) G-1..G-8 — G-1 A/B-Determinismus, G-2 Validator-Integration, G-3 Validator-SUCCESS 7/7, G-4 12-Sub-Runs, G-5 Validator-Defizit-Route (kein Defizit), G-6 Negativ-Kontrolle (perturbierte Entscheidung im at-normalisierten Hash-Vergleich erkannt — kein false-PASS), G-7 Epic-5-Consumer-Smoke (AC-8; Bundleroot-Schema-Glossar per compiler §5.6 „andere Schicht" +log.md-Protokoll per §5.6 Pkt. 2 exkludiert, Concept-Bodies hart), G-8 wird in Abschnitt G geprüft (G-Szenarien abgeschlossen, PASS_COUNT=68); (G) Endzustands-Invariante — AD-3 read-only ohne Diff (schema/validator.md,compiler.md,wiki-compiler.md,canonical-terms.md,adapters/,raw/) + Porcelain-Checkgit status --porcelain --untracked-files=noleer (G-8 PASS) — Gesamt RUN_OK, Exit 0. Aufgedeckte und behobene reale Befunde des Gates (Erst-Lauf 6): (1) G-3-Fail — der frische Validator-Agent deckte einen realen Punkt-9-Verstoß im Bundle auf:wiki/log.md(Story-2.4-Review-Eintrag) zitierte das Punkt-9-Bundleroot-Typ-Literal in Prosa; Punkt 9 verbietet das Token in jeder Nicht-Bundleroot-Bundle-Datei (auchlog.md). Validator korrekt, Defekt im Bundle: bedeutungserhaltend de-literalisiert (Bundleroot-type-Verbot statt Literal) — Bundle ist Punkt-9-valide; (2) G-7-Smoke überstreng gegen den dokumentierten Bundleroot-Schema-Glossar (../schema/-Links derindex.md, compiler §5.6 „andere Schicht", AC-8 optionale Provenienz/Traceability) und daslog.md-Protokoll (§5.6 Pkt. 2 „keine Link-/Provenienz-Schicht"): G-7 im Gate auf die Compiler-Exclusion-Fassung geschärft (exkludiertwiki/index.md+wiki/log.md, hält die Smoke-Pflicht für alle Concept-Bodies/Area-index.mdhart — kein Planungs-Lese-Zwang). Keine Schema-/Validator-/Adapter-/raw/-Änderung (AD-3); keine neue §7-Klasse; kein Standalone (D-3); keine Wanduhr-Steuerung (A0-20). Defer-Home geschlossen (deferred-work.mdappend, Aufgegriffen-Block Story 3.13): DET-1/DET-2-Plan-/Form-Literale (Z. 551), R-9-Receipt-Literale (Z. 560), externer Validator gegen das reale committete Bundle (Z. 576), Zwei-Producer-<id>-Gewinner (Z. 594), A-2-Barriere/Überlappung (Z. 597), Zwei-Worktree-Übernahme-Rest (Z. 611), geteilter Ref-Namespace-/Zwei-Worktree-Übernahme-Beweis (Z. 629), DF1 Stash-/AC-5-kombiniert (Z. 633) — Home „Story-3.13-Abnahme" realisiert (Original-Defer-Blöcke unverändert; benannte Rest-Terme der Sandbox-Härtung bleiben offen).sprint-status.yaml-Key3-13-epic-3-verifikations-und-abnahmegate→done(finaler Step-05-Flip; AC-9: Epic 3 bleibt bis zur Epic-3-Retrospektivein-progress),last_updated→ 08-22-2026 19:10. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; die Epic-3-Retrospektive (Story epic-3-retrospective) bleibt offen. - Story 3.12 → Review-Loop-2-Abschluss +
done(Lease-Lifecycle und Commit-Abschluss transaktional schließen, bmad-code-review 4 Layer — blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor, Diff80480af..HEAD, 2026-08-22): Re-Review der konvergierten Loop-1-Implementierung (Diffform80480af..HEAD, 4 Dateien); Triage: 1 decision-needed / 7 patch / 2 defer / 6 dismissed; keine intent_gap/bad_spec (kein Loopback). Nutzer-Entscheidung: D-3.12-1 = Option 1 (empfohlene Option) — AC-6/§5.18-Pkt.-6-Grenze an die eigenewiki/log.md-Praxis angeglichen: dokumentierte Run-/Review-/Sandbox-Nachweise sind notwendige Koordinationsereignisse (Vertrag §5; 3.10/3.11-Praxis); die verbotene Kategorie ist Build-/Review-/Story-/Sandbox-Historie; §5.18 Pkt. 6 und AC-6 bleiben textuell unverändert; L-8-Kategorie-Grep schärft auf Kategorie-Hyphenate(Build|Review|Story|Sandbox)-(Histor|Log|Protokoll|Bericht)+ Negativ-Kontrolle (verbotene Form auf Probe-Datei außerhalbwiki/muss den Guard auslösen). Patches (7, angewendet): Sandbox — P1scopelock_healthy()-Helfer + LOCK_READ_ERROR-Propagation vor jeder Liveness-/Release-/Takeover-Entscheidung (ein korrupter Lock wird nie mehr als „Halter hält nicht mehr" klassifiziert, AC-1-Gate bleibt geschlossen), P2 Release-Fehler negativ geübt (L-7:scopelock_releasemit falscher Inhaber-Run-ID → harter Fehlschlag, Lock unverändert) + L-6 „valide committet" hart verifiziert (HEAD ≠ Baseline, Frontmatter im Commit, Commit-Betreff), P3 Setup-Robustheit (Exit-Checksmktemp/mkdir/cd/git init, verifizierter$BASE-Baseline-Commit, L-3/L-4-Backup-cpbyte-identisch vorcheckout/clean; bewusst keinset -e— negatives Assertion-Idiom), P4 L-9-KP2/KP3 Ghost-Diff-Probe (assert_invariantviainv_viol, Index und Worktree) +reg_writereal geübt in L-1, P5 AC-1-Ownership-Stale-Zweig positiv getestet (L-1-Ende) + L-2 Takeover-Exactly-once direkt am Takeover-Pfad (zweiter CAS mit altem Old-Value schlägt atomar fehl, kein Clobber); Spec/Sync — S1 Frontmatterreview_loop_iteration: 0 → 1, doppelte## Spec Change Logentfernt,</frozen-after-approval>-Schließtag ergänzt, Status-Sync vereinheitlicht (dieser Eintrag); S2 SRO-/Code-Map-/deferred-work-Anker auf Ist-Zeilen neu gesetzt. Defer (2, → deferred-work.md append-only, Block „Deferred from: code review of spec-3-12 …" 2026-08-22): DF1 AC-3-git stash push-Variante + kombiniertes AC-5 „Fremd-Bytes restauriert" (Home: Sandbox-Härtung/Story 3.13); DF2assert_no_wallclocküberbreit/Kommentarschärfe (Home: Sandbox-Kosmetik). Sandbox re-executiert:bash _bmad-output/implementation-artifacts/sandbox-3-12/run-sandbox.sh(Windows/Git-Bash,/tmp-Baum, nie der realewiki/-/raw/-Baum) → L-1..L-9, 9/9 harte PASS, Exit 0. Abschlussklausel: keine Änderung anschema/validator.md/schema/wiki-compiler.md/adapters//raw/(AD-3); keine neue §7-Invaliditätsklasse; kein neuer Frontmatter-/Format-Key; kein Standalone (D-3); keine Vertragsänderung; §5.11-Pkt.-1/2-Wortlaut, §5.12-, §5.13- und §5.17-Anker textuell unverändert (additive Klammer, Fugen-Identität); keine Wanduhr-/Systemzeitsteuerung (A0-20). Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS.sprint-status.yaml-Key3-12-lease-lifecycle-und-commit-abschluss-transaktional-schliessen→done(finaler Step-05-Flip nach konvergiertem Review-Loop-2, Präzedenz Story 3.7/3.8/3.9/3.10/3.11),last_updated→ 08-22-2026 07:44. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); Staleness-Nachfolge bleibt offen.
2026-08-21
- Story 3.12 →
review(Lease-Lifecycle und Commit-Abschluss transaktional schließen, Verankerung §5.18 + Revision 3.7, 2026-08-21):schema/compiler.mdRevision 3.7 — neue Sektion §5.18 „Lease-Lifecycle & transaktionaler Commit-Abschluss (Story 3.12)“ (nach §5.17, vor §6): die Koordinations-Dimensionen aus §5.11 (Leasing/Dirty-Tree, Story 3.5), §5.12 (Staleness/Recovery, Story 3.6), §5.13 (Phasen-Trennung, Story 3.7) und §5.17 (atomare Root-Scope-Lease-Akquise, Story 3.11) werden zur transaktionalen Lifecycle-Klammer geschlossen (additive Klammer, Fugen-Identität; D-3; keine Wanduhr-/Systemzeitsteuerung A0-20; kein neuer Regel-Operand). Punkte 1–7: (1) Liveness & Ownership (AC-1): eine höhere Generation allein macht eine lebende Lease nicht stale; Staleness verlangt bestätigten Abbruch oder abgelaufene Liveness plus atomare Ownership-Prüfung (generationeller §5.12-Staleness-Check ist notwendig, nicht hinreichend — die Liveness wird am Scope-Lock-Inhalt bestätigt, keine Wanduhr-TTL A0-20), (2) stale-Übernahme genau einmal (AC-2): ownership-gebunden über den §5.17-Scope-Lock (refs/leases/wiki), ersetzte Holder-ID benannt imlog.md, genau eine aktive Root-Lease, nie stiller Verlust (AD-17e), (3) eindeutige Abort-/Protect-Zustandsmaschine (AC-3): getrackte fremde Änderung → Scratch-Zonescratch/<run-id>/bzw.git stash push; ungetrackte fremde Datei → Protect (sichern + byte-identischer Restore, keine stillen Löschungen AD-17e);UNCOMMITTED_INPUT-Abbruch abgestimmt mit §5.11 Pkt. 3, (4) Baseline-Rollback (AC-4):git reset --hard <Baseline-Commit>stellt Index + Worktree aus dem bezeichneten Baseline-Commit wieder her, Post-Rollback-Diff leer (§5.13 Pkt. 3; Kill-Punkt nach Mutation/Staging), (5) durable Release (AC-5): Mutation + zulässiger Log-/Koordinationsnachweis committet, Lock per Ref-Delete nur durch den Inhaber (Ownership) entfernt, Worktree sauber, der unmittelbar folgende Run besteht den Clean-Input-Guard, (6) kanonisches Log (AC-6):wiki/log.mdenthält nur vertragskonforme fachliche Änderungen + notwendige Koordinationsereignisse; Build-/Review-/Story-/Sandbox-Historie außerhalb, (7) Kill-Point-Tests (AC-7): vor Mutation, nach Mutation, vor Commit, nach Commit — je konsistenter Endzustand (§5.13-Pkt.-3-Zustands-Restaurations-Invariante). §7: Leasing-Bullet um die Story-3.12-Verankerung erweitert (originaler Wortlaut textuell unverändert); §8: Revisionslog-Addendum 3.7 (Abschlussklausel AD-3). Sandbox-Nachweis (_bmad-output/implementation-artifacts/sandbox-3-12/run-sandbox.sh,/tmp-Baum, nie der reale Ist-Baum; re-executierbar): L-1..L-9, 9/9 harte PASS, Exit 0 — L-1 LIVENESS_AKTIV (Gen-Bump ohne bestätigten Abbruch macht eine lebende Lease nicht stale; Lock-Inhalt = Liveness-Bestätigung), L-2 STALE_UEBERNAHME genau einmal (Takeover als Ownership-CAS, ersetzte Holder-ID benannt imlog.md, genau eine aktive Root-Lease), L-3 DIRTY_GETRACKT (Scratch-Sicherung + byte-identischer Restore +UNCOMMITTED_INPUT-Abbruch), L-4 DIRTY_UNGETRACKT (Protect: sichern + Restore, nie gelöscht), L-5 ROLLBACK_NACH_MUTATION (git reset --hard <Baseline>— Index + Worktree, leerer Post-Rollback-Diff), L-6 ROLLBACK_NACH_COMMIT_VOR_RELEASE (Kill-Punkt nach Commit, Konsistenz-Endzustand), L-7 RELEASE_DURABLE (Mutation + Nachweis committet, Lock per Ref-Delete entfernt, Worktree sauber, Folge-Run besteht Clean-Input-Guard), L-8 KANONISCHES_LOG (nur vertragskonforme fachliche + Koordinationsereignisse; Sandbox-/Review-/Build-Historie textuell zurückgewiesen), L-9 KILLPUNKT_TESTS (vier Kill-Punkte je konsistenter Endzustand). Defer-Aufgriffe:deferred-work.mdappend — drei Story-3.12-Home-Defers →aufgegriffen(Sandbox-3.5/-3.6-check-then-act-Abgleich mit dem §5.17-Scope-Lock — Home §5.18 Pkt. 1/2/5; Banner-/I-O-Matrix-Kosmetik undscopelock_header_banner-Platzhalter via Banner-Konvention der Sandbox L-1..L-9). Abschlussklausel: keine Änderung anschema/validator.md/schema/wiki-compiler.md/adapters//raw/(AD-3); keine neue §7-Invaliditätsklasse; kein neuer Frontmatter-/Format-Key; kein Standalone (D-3); keine Vertragsänderung; §5.11-Pkt.-1/2-Wortlaut, §5.12-, §5.13- und §5.17-Anker textuell unverändert (additive Klammer, Fugen-Identität); kein textueller Auto-Merge (AD-17c); Kollisions-/Klassifikations-Semantik bleibt AD-16/Epic 4; keine Wanduhr-/Systemzeitsteuerung (A0-20).sprint-status.yaml-Key3-12-lease-lifecycle-und-commit-abschluss-transaktional-schliessen→review(Implementierungs-Flip, HEAD-Stand 08-21-2026; finalerdone-Flip im Step-05-Status-Sync nach konvergiertem Review-Loop, Präzedenz Story 3.7/3.8/3.9/3.10/3.11),last_updated→ 08-21-2026 20:45. Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); Staleness-Nachfolge bleibt offen. - Story 3.11 → Review-Loop-1-Abschluss +
done(Root-Scope-Leasing atomar und worktree-übergreifend akquirieren, bmad-code-review 4 Layer — blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor, 2026-08-21): Re-Review der Implementierung (Diffforma8b486d..e02cf84, 7 Dateien); Triage: 2 decision-needed / 20 patch / 5 defer / 5 dismissed; keine intent_gap/bad_spec (kein Loopback). Nutzer-Entscheidungen: D-3.11-1 AC-d-Beweisart = Konstruktiv + härten („niemals zwei aktive Root-Leases“ konstruktiv belegt — eine scope-bezogene Ref + atomarer create-only-Write —, A-2-Sampler gehärtet, Nachweis um „konstruktiv“ qualifiziert); D-3.11-2 A-4-Mutations-Regime = Intentionalen Mutationsversuch bauen (Worktree-Beobachtung des Arbeitsbaums statt invarianter Baseline-Blob-Selbstvergleich). Patches (20, angewendet): Sandbox — A-2-Sampler wirksam (Ref-Kardinalität + Wert-Evidenz im Überlappungs-Fenster;TWO_LOCKS_AT_ONCE/TWO_VALUES_IN_WINDOW-Marker per stdout ins Capture, statt strukturell tot per>&2+ nie >1), A-4 Worktree-Beobachtung (Arbeitsbaum sauber,wiki/alpha.md/log.mdbyte-gleich, keine Commits über Baseline; D-3.11-2), A-7MERGE_OKhart abgewiesen (stiller textueller Auto-Merge = AD-17c/AC-e-Verletzung; stattMERGE_CONFLICT|MERGE_OK-Durchlass) + stale-Kommentar-Korrektur + tautologischehold_msg-Variablen-Case entfernt + Post-Merge-State-Assertions aufbranch-y-HEAD/Body +baseline=$BASEimlog.md-Hold-Eintrag (Hold-Mechanik-Form §5.16-Pkt.-8),assert_frontmatter-Aufrufe an den A-7-Varianten (tote Funktion wird ausgeführt), A-3-Kommentar-Korrektur (sequentiell, echte Überlappung liegt in A-2) + exakter Identitäts-FallRUN-A3geübt, A-1 toterrun_a1-Blob entfernt, A-8 Commit-Zähl-Check nach erstem Release (vorher vor dem Release = wirkungslos), finale No-op-Schlusskontrolle → echte Arbeitsbaum-Sauberkeits-Assertion + Worktree-Abbau (git worktree remove, A-2/A-4),scopelock_release()-Ownership-Prüfung + Exit-Code-Kopplung (Inhaber-Run-ID muss Lock-Inhalt tragen; Release-Fehler = HARD-FAIL),isolate()-Ref-Namespace-Raum (hängende Scope-Locks kontaminieren keine Folgeszenarien), Release-Ende-Leereprüfung je Szenario vereinheitlicht (A-1/A-2/A-3/A-4/A-5/A-6/A-8). compiler.md §5.17 — Pkt. 1 Ref-Objekttyp (Ref verweist auf geschriebenen Blob-Inhalt, kein Commit-Objekt; endet per Ref-Delete), Pkt. 4 Determinismus-Grenze (sequentielle Versuche deterministisch; überlappende Producer → Gewinnerwahl Scheduling-abhängig, Invariante bleibt genau-ein-Gewinner), Pkt. 5 Grammatik-Korrektur + Ablage-Stelle (datumsgruppiertelog.md-Eintrag als normatives Hold-Ziel benannt), §8-Revision-3.6 + log-Nachweis um „konstruktiv“ qualifiziert. Spec — Frontmattercontext:umepic-3-context.md(Präzedenz 3.10),review_loop_iteration: 0 → 1, Verification-Kommandos berichtigt (ungültigesgit -C <datei>entfernt, gezieltegrep -n "Revision 3.6"/## 5.17), Suggested-Review-Order-Anker neu gesetzt (compiler.md:424 Abgrenzung, log.md:4, deferred-work.md:578; compiler.md:415 verifiziert korrekter §5.17-Überschrift-Anker). Defer (5, → deferred-work.md append-only): AC-d-Token-Statussynchronisation (Home Epic 4), Sandbox-3.5/-3.6-check-then-act-Abgleich (Home 3.12/3.13), A-2-garantierte-Überlappung (Home Sandbox-Härtung/3.13), Status-Kontraktion 3.9-Präzedenz (kein Defekt, hier aufgelöst), Banner-/I/O-Matrix-Kosmetik (Home 3.12) — inkl. KORREKTUR-Teileintrag (vorheriger Zeilen-Drift-Defer „§5.11/§5.12-Anker veraltet“ widerlegt: §5.11 weiterhin Z. 304, §5.12 Z. 323, Fugen-Identität verifiziert). Sandbox re-executiert:bash _bmad-output/implementation-artifacts/sandbox-3-11/run-sandbox.sh(Windows/Git-Bash) → A-1..A-8, 8/8 harte PASS, Exit 0, kein Zugriff auf reales Bundle/raw/(AD-3); Ask-First-Pflicht nicht ausgelöst (create-only-Primitiv zuverlässig atomar belegbar). Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS.sprint-status.yaml-Key3-11-root-scope-leasing-atomar-akquirieren→done(finaler Step-05-Flip nach konvergiertem Loop-1; D-3.9-2-Präzedenz: Impl-Commit-reviewmaßgeblich, finalerdone-Flip hier),last_updated→ 08-21-2026. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; §5.11-Pkt.-1/2-Wortlaut und §5.12-Anker textuell unverändert (Fugen-Identität); Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); Lease-Lifecycle (Story 3.12) und Staleness-Nachfolge bleiben offen. - Story 3.11 →
review(Root-Scope-Leasing atomar und worktree-übergreifend akquirieren, Verankerung §5.17 + Revision 3.6, 2026-08-21):schema/compiler.mdRevision 3.6 — neue Sektion §5.17 „Atomare Root-Scope-Lease-Akquise (Story 3.11)“ (nach §5.16, vor §6): operationelle Atomaritäts-Präzisierung der Root-Scope-Akquise über der textuell unveränderten §5.11-/§5.12-Mechanik (Fugen-Identität; D-3, AD-17b/A0-13; TOCTOU-Race der bisherigen Lockfile-Lage geschlossen). Punkte 1–6: (1) Exklusivitätsschlüssel = scope-bezogener Lock im clone-geteilten Zustand (AC-a: geteilter Git-Ref-/Objektnamespace aller Worktrees/Prozesse eines Clones; eine committete Ref je Root-Scopewiki/, z. B.refs/leases/wiki; Run-ID = Lock-Inhalt, nicht Schlüsselbestandteil), (2) atomare Akquise (create-only), genau ein Gewinner (AC-b:git update-ref <lock-ref> <wert> $ZERO_SHA; Ask-First-Pflicht → HALT/Alternativ-Primitiv), (3)LEASE_HOLD-Semantik (AC-c: keinwiki/-/Lock-Eingriff, kein Compilation-Commit, keine Fremd-Lease-Entfernung, sauberes Ende, AD-16-Pfad), (4) Determinismus (AD-17h/A0-19: clone-geteilter Zustand = eindeutige Gewinner-/Verlierer-Entscheidung), (5) Kollisions-Hold an Epic 4 (AC-e/AD-17c/A0-14: kein textueller Auto-Merge, strukturierter Kollisions-Hold mit beiden Commit-Hashes + Scope via §5.16-Pkt.-8-/§5.10-Pkt.-8-Hold-Mechanik), (6) Abgrenzung (keine Wanduhr/Systemzeit A0-20, keine Staleness-/Recovery-Logik — §5.12/Story 3.6 und Story 3.12 —, kein Branch-Lifecycle nach Übernahme — Story 3.12). §7: Leasing-Bullet um die Story-3.11-Verankerung erweitert; §8: Revisionslog-Addendum 3.6 (Abschlussklausel AD-3). Sandbox-Nachweis (_bmad-output/implementation-artifacts/sandbox-3-11/run-sandbox.sh,/tmp-Baum, nie der reale Ist-Baum; re-executierbar): A-1..A-8, 8/8 harte PASS, Exit 0 — A-1 Exklusivitätsschlüssel (AC-a), A-2 reale Zwei-Worktree-/Zwei-Prozess-Überlappung (git worktree addüber Baseline, zwei getrennte Prozesse, create-only-Akquise) mit Zwischenzustands-Assertions „niemals zwei aktive Root-Leases“ (AC-b/AC-d), A-3 Weder-Noch (nie zwei, nie keiner), A-4 LEASE_HOLD-Nicht-Mutation (AC-c:wiki/unverändert, keine Commits, fremde Lease unangetastet), A-5 Schlüssel-ohne-Run-ID, A-6 späte Abweisung, A-7 Kollisions-Hold mit beiden Commit-Hashes (AC-e), A-8 Freigabe-erneut; Erhaltungs-Invariante +at-Normalform je Szenario (Vertrag §3.3/§3.4, §6.5); kein Zugriff auf reales Bundle/raw/(AD-3). Abschlussklausel: keine Änderung anschema/wiki-compiler.md/schema/validator.md/adapters//raw/(AD-3); keine neue §7-Invaliditätsklasse; kein neuer Frontmatter-Key für Lease-Metadaten (Vertrag §3.1–§3.7 unverändert); kein Standalone (D-3); keine Vertragsänderung; §5.11-Pkt.-1/2-Wortlaut und §5.12-Anker textuell unverändert (additive Präzisierung).sprint-status.yaml-Key3-11-root-scope-leasing-atomar-akquirieren→review(Implementierungs-Flip, HEAD-Stand 08-21-2026; finalerdone-Flip im Step-05-Status-Sync),last_updated→ 08-21-2026 12:30. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); Lease-Lifecycle/Commit-Abschluss transaktional (Story 3.12) und Staleness-Nachfolge bleiben offen. - Story 3.10 →
review(Inkrementelle Update- & Synthese-Erhaltung + Hold-Ausbau, Verankerung §5.16 + Revision 3.5, 2026-08-21):schema/compiler.mdRevision 3.5 — neue Sektion §5.16 „Inkrementelle Update- & Synthese-Erhaltung + Hold-Ausbau (Story 3.10)“ (nach §5.15, vor §6): operationelle Erhaltungs-Klammer (A0-21-Incrementality, Fugen-Identität; keine A|B-Aneinanderreihung, kein Regenerate-Everything). Punkte 1–8: (1) Kontinuitäts-Garantie (AC-1: in-place Update/Konsolidierung/Synthese auf der gemeinsamen Wissensrepräsentation, kein hartes Duplikat, Identität +index.md-Link erhalten), (2) Korrigieren mit Run-Receipt-Trace (AC-2: ersetzte Wortlautfolge + Source-Basis im Run-Receipt außerhalb des Bundles, §5.14 Pkt. 2; mehrdeutige Korrektur → benannter Hold, Epic-4-/AD-16-Klassifikation, kein textueller Auto-Merge AD-17c), (3) Schutzbestandteile & Byte-Identität (AC-3: gültige belegte Aussagen, §5.5-Inline-Verweise,sourcesgültiger Belege, §5.6-Links, human-verifiedgeschützt; nicht betroffene Concepts byte-identisch via §5.9-Pkt.-5-Ghost-Diff-Rollback), (4) CONFIRMING-Konsolidierung (AC-4: bestätigende neue Source → Aussage genau einmal, alle Evidenzanker via §5.5-Multi-Beleg,sources-Zuwachs,generated.at-Bump, kein NO_OP; Anker- statt Content-Abgleich), (5) gemeinsame Wissensrepräsentation (AC-5: §5.10-Pkt.-2/3/5 als Synthese-Erhaltung), (6) byte-erhaltender NO_OP (AC-6: volle Evidenzanker-Menge → NO_OP ohne Mutation/at-Bump/sources-Zusatz; fehlender Anker → Pkt. 4), (7) Provenienz-/Link-Selbsttest aus aktuellem Run (AC-7: Baseline = aktuelles<Baseline-Commit>, erwartete Deltas = Kandidaten-Liste ∪ Neu-Anlage ∪log.md∪ nachgeführteindex.md, keine hart kodierten Pläne/Bodies/Zählwerte — §5.14 Pkt. 2, AC-7/§5.14-Pkt.-2-Konsistenz), (8) benannter Hold (AC-8/NFR-7: post-Reconcile-Orphan über alle Erhebungs-Stufen a/b/c — Story-3.9 übte nur Stufe a —, Mehrziel via D-8-Mehrfach-Term-Vereinigung → primäre Ziel-Repräsentation, sonst fail-closed benannter Hold; beide Evidenzpfade im Run-Receipt). §7-Bullet erweitert (Story-3.10-Verankerung; §5.9-Abgrenzungs-Reihenfolge bleibt die einzige Form-Wahl); Hold-Home-Nachführungen: §5.15-Zelle-3 + §5.15-Scope-Präzisierung + §5.10-Pkt.-8-D-4-Bullet verweisen auf §5.16 (Story 3.10, Hold-Ausbau); Revisionslog Revision 3.5 mit Abschlussklausel (AD-3 —schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert; keine neue §7-Invaliditätsklasse; keine neue Update-Form; keine neuen Prädikat-/Frontmatter-/Format-Keys; kein Standalone/D-3; keine Vertragsänderung; Umlaut-vs-Transkription-Defer bleibt offen — kein neuer Normalisierungs-Operand, ask-first).sprint-status.yaml-Key3-10-inkrementelle-update-und-synthese-erhaltung-absichern→review(Implementierungs-Flip, HEAD-Stand 08-21-2026; finalerdone-Flip im Step-05-Status-Sync),last_updated→ 08-21-2026 12:00. Sandbox-Nachweis (_bmad-output/implementation-artifacts/sandbox-3-10/run-sandbox.sh,/tmp-Baum, nie der reale Ist-Baum; re-executierbar): E-1..E-9, Exit 0, 9 harte PASS-Assertionen — E-1 Kontinuität/AC-1 (Update in-place, kein Duplikat, Identity + Index-Link erhalten); E-2 Korrigieren-Receipt-Trace/AC-2 (Wortlautfolge + Source-Basis im Receipt außerhalb Bundle; mehrdeutig → benannter Hold ohne Mutation); E-3 Schutzbestandteile/AC-3 (nicht betroffenes Concept byte-identisch, Ghost-Diff-Rollback stellt Baseline wieder her); E-4 CONFIRMING/AC-4 (CONFIRMING ≠ NO_OP byte-bewiesen: Aussage genau einmal, neuer Anker, Multi-Beleg, sources-Zuwachs, at-Bump); E-5 Synthese-Erhaltung/AC-5 (gemeinsame Repräsentation erweitert, keine A|B-Aneinanderreihung); E-6 NO_OP byte-erhaltend/AC-6 (volle Evidenzanker-Menge: keine Mutation, kein at-Bump, kein sources-Zusatz); E-7 Selbsttest aktueller Run/AC-7 (Baseline = aktuelles<Baseline-Commit>frisch erzeugt, Delta = Kandidaten-Liste ∪ Neu-Anlage, keine hart kodierten Zählwerte); E-8 Orphan + Mehrziel/AC-8 (Stufen a/b/c belegt, D-8-Vereinigung → primäre Ziel-Repräsentation, fail-closed Hold, beide Evidenzpfade im Receipt); E-9 Zwei-Run-Identität deterministisch (gleicher Eingang → identische Bytes, Zustandswechsel messbar — Nicht-Vakuum). Defer-Aufgriff:deferred-work.mdappend — Defer «Orphan voller Stufen b/c + Mehrziel» (Story-3.9-Block, Home Story 3.10) →aufgegriffen(§5.16 Pkt. 8 verankert, Sandbox E-8 ausgeübt; Umlaut-vs-Transkription-Defer bleibt offen). Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Epic-3-Abnahme (Story 3.13) bleibt offen (epic-3 in-progress); Zwei-Run-über-reale-Inhalte/Stufen-b-c-über-reale-Bäume bleibt Story-3.13-Abnahme-Gate. - Story 3.9 → Review-Loop-3-Abschluss +
done(Deterministische Relevanz- & Reconcile-Routing, bmad-code-review Re-Run 4 Layer — blind-hunter ×2 / edge-case-hunter / acceptance-auditor, verification-gap über Retry, 2026-08-21): Re-Review der Loop-2-zustands Implementation (Diffform2f079ee..73f2c9e, 7 Dateien); Triage: 3 decision-needed / 15 patch (1 nach Re-Verifikation verworfen → 14 anzuwenden) / 2 defer / 9 verworfen; keine intent_gap/bad_spec (kein Loopback). Nutzer-Entscheidungen (empfohlene Optionen): D-3.9-1 §8-Revision-3.3-Nachführung behalten (3.8 ist faktisch done; Dokumentation über den append-only Spec-Change-Log, kein Rückbau); D-3.9-2 Status-Kontraktion aufgelöst auf die 3.7/3.8-Präzedenz: maßgeblichreview(Impl-Commit-Flip), Spec-Frontmatter-donezurückgesetzt, finalerdone-Flip in diesem Eintrag (Step-05-Status-Sync); D-3.9-3 Minimal-Härtung der tautologischen Sandbox-Szenarien (echte Mechanik statt Selbstvergleich; strukturelle Restlimits — volle Stufen-b/c-Traversal, Zwei-Run über realen Contents — bleiben benannte Defers, Home Story 3.13, Präzedenz DET-1/2). Patches (14): compiler.md §5.15 Pkt. 1 (/dev/null-Sort → LC_ALL=C-bytetreue Stable-Sortierung; Status-Code-Entflechtung Befund A/M/D/R/C ↔ Akzeptanz A/C vs. Run-FAIL M/D/R über Pkt. 4), Pkt. 2 (Actor-Body → Concept-Body), Pkt. 5 (hängender „§3.2-Endergebnis"-Verweis → §5.8-Instruktions-Hold als Run-Status-Definition), Revision 3.4 (Status-Wortlautreview+ Status-Code-Korrektur); Sandbox: README-Reserviertheits-Fall case-insensitiv (P-3.9-2), R-9-Bundle-Grep-Anchorung(^|/)(index|log)\.md$+ Benennung der index/log-Ausnahme (P-3.9-7, re-scoped: Enden-Präfixe wiemyindex.mdnicht mehr still ausgeschlossen), R-8-Hold-Assert auf beide Worktrees (P-3.9-8), Worktree-Re-Run-Idempotenz unter$ROOT(P-3.9-14),local rc=$?-Dead-Diagnostics → lebendigerc-Erfassung (P-3.9-15), Term-Quoting +sort -u; D-3.9-3-Härtung: R-1 Negativ-Manifest → echter Run-FAIL-Sub-Run vor jeder Mutation (Mutation-Sentinel bleibt abseits), R-1b/R-4 saubere je-Status-Sub-Runs (M/D/R-Run-FAIL ohne kumulative-Baseline-Kontraktion; A-Sub-Run Guard-Pass mit Sentinel), R-3-Fall-2 echter Full-Containment-Check (Token-weise, mit Negativ-Kontrolle) + Stufe-b via echtem index.md-Link-Parsing und Zielpfad-Existenz, R-5 echteroute()-Funktion (leere Candidate-Liste → CREATE-Bewertungsraum, nie NO_OP — NO_OP-Regression negativ geprüft) + D-8-Vereinigung ausgeübt, R-6/R-7 Slug rein aus dem committeten Dateinamen (Datums-Suffix-Strip + Norm, kein nicht-instruktioneller-doc$-Strip). Verworfen (1): P-3.9-1 „Escaper defekt" = Fehlalarm — die „Ausführung"-Evidenz war durch die Bash-Tool-Transport-Schicht korrumpiert (Backslash-Ebene halbiert; getesteter Code ≠ Datei-Code);od-Beweis (Z. 74/790:\\&) + Negativ-/Positiv-Kontrolle aus Datei-Bytes (v1.0matchtv10-Body nicht,v1.0-Body ja) → Escaper literal-sicher, Z. 74/790 unverändert (Korrektur im Spec-Change-Log). Defers (2, → deferred-work.md append-only): W-3.9-1norm()/trohneLC_ALL-Pinning (Home: Sandbox-Härtung, 952-Zeilen-Scope); W-3.9-2 positive Zwei-Run-Identität strukturell trivial (Home: Story-3.13-Abnahme, Präzedenz DET-1/2). Frozen-Änderungen (im Spec-Change-Log autorisiert/dokumentiert): I/O-Matrix-RAW_GUARD_MODIFIZIERT-Zelle um Rename (M/D/R) +</frozen-after-approval>-Schließtag-Nachtrag (Präzedenz Spec-3-7/3-8); keine AC-/Intent-Wortlaut-Änderung, keine Neu-Verhandlung nötig. Sandbox re-executiert:bash _bmad-output/implementation-artifacts/sandbox-3-9/run-sandbox.sh→ R-1..R-9 harte PASS, Exit 0 (inkl. R-1b/R-4 je-Status-Guard-Sub-Runs, R-3 Full-Containment + Stufe-b-Link-Parsing, R-5 route(), R-6/R-7 echte Slug-Ableitung, R-8 beide Worktrees, R-9 ankerter Bundle-Vergleich). Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS.sprint-status.yaml-Key3-9-…→done(finaler Step-05-Flip nach konvergiertem Loop-3),last_updated→ 08-21-2026. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Umlaut-vs-Transkription bleibt benannter Defer; Hold-Ausbau (post-Reconcile-Orphan, Mehrziel) + Stufen-b/c-Traversal-Coverage bleiben Story 3.10/3.13.
2026-08-20
- Story 3.9 → Re-Ableitung Loop-2 +
in-progress(Deterministische Relevanz- & Reconcile-Routing, 2026-08-20): Loop-2-bad_spec-Loopback (bmad-code-review Re-Run — 2 bad_spec, 4 patch, 2 defer; kein intent_gap, kein Eingriff ins<frozen-after-approval>). Kern-Defekte behoben: BS-L2-1 — NO_MATCH/leere Candidate-Liste ist bei neuer Einheit NICHT NO_OP, sondern CREATE (Zelle 2) / ORPHAN-HOLD (Zelle 3); NO_OP (Zelle 4) bleibt ausschließlich Unter-Entscheidung des Update-Pfads (bestehende Evidenz identisch repräsentiert) — §5.15-Pkt.-3-Tabelle, §3.2-Pkt.-3d-Verweis-Anker und Sandbox R-3/R-5 in Einklang; BS-L2-2 — Status-Codes geschlossen: R (Rename) einer committetenraw/-Datei = AD-3-Verletzung → Guard-FAIL, C zählt als A (Copy/neu),--diff-filter=ACMRdokumentiert die Zuordnung. Weitere Loop-2-Auflagen: P-L2-1 Sandbox-norm()auf die eine Kollaps-Definition (§3.2-Pkt.-1b) vereinheitlicht (keine vierte Pipeline); P-L2-2 R-2-index.md-Traversal real gefeuert (Fixture enthält den Term, Traversal-Exklusion negativ assertiert); P-L2-3 R-1-Diff↔Manifest-Äquivalenz um Negativ-Zweig ergänzt (divergentes Manifest → Run-FAIL vor Mutation); P-L2-4 R-8-Zwei-Run-Hold über zwei getrennte Worktrees (Behebung der Doppel-Read-Tautologie); P-L2-5 R-6/R-7-Slug aus dem abgeleiteten Kandidaten +git ls-tree-Schnittmengen-Fixture + entdoppelte toteCAND-Assertion (kein|| true); P-L2-6 R-9-Receipts umgenerated.at-Feld + praktisch ausgeübte at-Exzeption (legitime at-Abweichung ≠ AD-16; andere als-at-Differenz = HARD-FAIL). Defer-Aufgriffe (Home Story 3.9): D-8 (Mehrfach-Term-Vereinigung) und D-9 (Term-Ableitung aus demraw/-Zuwachs + voller Kandidaten-Scan statt fester 2-Datei-Liste) in §5.15 Pkt. 1 / Sandbox R-1/R-5 realisiert. Verankerung (schema/compiler.mdRevision 3.4): neue §5.15 „Deterministische Relevanz- & Reconcile-Routing (Story 3.9)" (Pkt. 1–6) — Pkt. 1 Termgewinnung (geschlossen, geordnet, AC-1: Dateiname→Term-Mapping, Sidecar-Exklusion, Status-Codes A/M/D/R/C via--diff-filter=ACMR, §5.9-Pkt.-6-Diskrepanz-/Fallback-Kopplung, Diff↔Manifest-Äquivalenz, D-8-Mehrfach-Term-Vereinigung mit ≥2-Zeichen-Segmenten, Einzelzeichen-Segmente kein eigener Term, optional committetes Term-Manifest), Pkt. 2 symmetrische Normalisierung + literal-sichere Suche (AC-2, §3.2-Pkt.-1b-Kollaps-Klasse[-–— _]→-;index.md-Treffer → Traversal-Stufe, kein Concept-Kandidat), Pkt. 3 die eine exklusive Routing-Tabelle (AC-3: UPDATE → CREATE → ORPHAN/HOLD → NO_OP; NO_OP als Update-Unter-Entscheidung; Leere-Candidate-Absatz; Stufe-b-Zelle), Pkt. 4 Raw-Immutability-Guard (AC-4: M/D/R → Run-FAIL vor Mutation, A/C akzeptiert), Pkt. 5 reservierte Zielpfade (AC-5:index/log/source/READMEerschöpfend, deterministischer Hold, Ist-Dateimenge viagit ls-tree-Schnittmenge), Pkt. 6 Zwei-Run-Identität (AC-6: positive UND negative Fixtures, Zwei-Worktree-Vergleich, praktisch ausgeübteat-Exzeption, kein hart codierter Erwartungswert). §3.2-Pkt.-3d-§5.15-Verweis-Anker nachgeführt; §5.14-Pkt.-5-Scope-Präzisierung (Story-3.9-ACs verankert); §7-Relevanzbestimmung-Bullet erweitert (Vorbehalt aufgelöst); Revisionslog Revision 3.4. Re-Derivation:deferred-work.mdD-8/D-9 →aufgegriffen;epic-3-context.mdZ. 39 → Ist (§5.15 verankert);sprint-status.yamlKey3-9-…→in-progress(finalerreview/done-Flip im Step-04/05). Sandbox-Nachweis:bash _bmad-output/implementation-artifacts/sandbox-3-9/run-sandbox.sh→ R-1..R-9 harte PASS, Exit 0 (inkl. R-1b R/C-Guard, R-5-CREATE-Bewertungsraum, R-8-Zwei-Worktree-Hold, R-9-at-Exzeption + Negativkontrolle). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw//schema/canonical-terms.mdunverändert); kein Standalone (D-3), keine neue §7-Invaliditätsklasse, keine Vertragsänderung; Umlaut-vs-Transkription bleibt benannter Defer; Hold-Ausbau (post-Reconcile-Orphan, Mehrziel) bleibt Story 3.10. - Story 3.8 → Review-Loop-3-Abschluss +
done(Determinismus-Vertrag, bmad-code-review Re-Run 4 Layer — blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor, 2026-08-20): Re-Review der Loop-2-zustands Implementation; Triage: 4 decision-needed / 13 patch / 6 defer / 7 dismissed; keine intent_gap/bad_spec (kein Loopback). Nutzer-Entscheidungen D-1..D-4 = 1/1/1/1 (empfohlene Optionen): D-1 §5.14-Schließungs-Bullet macht den Z. 53 „Bekannte Determinismus-Lücke"-Bullet superseded (append-only-Superseded-Hinweis, kein Umbruch); D-2 Story-Status-Flip aufdonenach Loop-3-Abschluss (Change-Proposal-Sequenzierung „3.9 → 3.10 / 3.11 → 3.12 → 3.8 Abschluss → 3.13 Abnahme" betrifft das Epic-3-Abnahmegate (3.13) — Story-3.8-Instruktionsverankerung abgeschlossen, 3.9–3.12-Verankerungen + 3.13-Abnahme bleiben offen, epic-3 in-progress); D-3 autorisierte Neu-Verhandlung des Frozen-Intents in geringfügigem Umfang: Typo „documenthuman" → „document-human" (spec Z. 24, dokumentiert); D-4 Hold-Home = Story 3.10 (Epic 3), Korrektur-/Erweiterungs-Klassifikation = Epic-4-Interface/Story 4.1 (§5.10 Pkt. 8 präzisiert). Patches (13): P-1 SRO-/Code-Map-Anker auf IST-Zeilen (compiler.md 375/376/377/477; Code Map §5.14 365–377, §7 424ff, §8 445, Rev 3.3 477; Sandbox 245/265/442/275/447/531); P-2/P-4 symmetrische Term-/Body-Normalisierung (identisch normalisiert vor Vergleich, kein host-abhängiges-i, Wortgrenze = Tool-Wortdefinition rg-w/\b) — §3.2 Pkt. 2a +match_stufe_a(Term + Body identisch normalisiert,-ientfernt, ASCII-Boundary[^A-Za-z0-9]); P-3 re-executierbare Zwei-Run-Formel als Receipt-Hashvergleich (git-diff-Formel = Austauschbar-Form derselben Eigenschaft) — §5.14 Pkt. 2; P-5 Sandbox-Fresh-Kontext-Restlücke textuell benannt (mechanisch simuliert; Nachweis echter frischer Kontexte = Story-3.13-Abnahmegate) — §5.14 Pkt. 2; P-6 Manifest-generated_bywird konsumiert (Guard + Konzepts-Frontmatterby:aus Manifest statt hart-codiert); P-7 at-Ausnahme hart assertiert (Wiederholungs-Schleife bei Wanduhr-Sekundenkollision erzwingt real unterschiedlicheat_cell-Werte;HARD-FAILstatt stiller PASS) — re-executiert:BEFUND: at-Ausnahme aktiv (assertiert)mit real differierenden Wanduhrwerten; P-8 „vollständig pinbar"/„keine offene Frage" ge scopet (nur für die mit §5.14 geschlossenen Lücken; Umlaut-Defer + Story-3.9-ACs bewusst nicht damit geschlossen, sichtbar als benannte Defers/Geplante) — §5.14 Pkt. 5 + §7-Bullet; P-9 epics.md AC-2: „Determinismusfehler" = AD-16-Klassifikationsdefekt (AD-16-Kopplung nachgeführt, AC-Wortlaut erhalten); P-10 specreview_loop_iteration: 0 → 2(Counter ab Loop-3 gepflegt); P-11 epic-3-context.md Technical Decisions Z. 39/41/43 als Zielzustand markiert (Story 3.9/3.11/3.12 — noch nicht in compiler.md verankert, §3.2/§5.11 maßgeblich bis dahin); P-12 verifiziert + dokumentiert (epics.md enthält kein Literal „AD-17a..h"; die AD-17-Enums sind mit dem Change-Proposal konsistent — AD-17g liegt in Epic 4 Z. 101; kein Edit nötig); P-13 Spec Change Log Review-Loop-3 (append-only, nach Loop-2-Eintrag, vor</frozen-after-approval>). Defers (6, → deferred-work.md append-only, Block „Deferred from: code review of spec-3-8… (2026-08-20)"): D-5 Sandbox-Härtungs-Guards (8 Befunde), D-6 DET-1/2-Plan-Literale (Home: 3.13-Abnahme), D-7norm()-Locale-Pinning, D-8 Mehrfach-Term-Union, D-9 Orphan-Term-Hand-Pin/feste 2-Datei-Scan (Home: 3.9), D-10 Umlaut-vs-Transkription im Match-Pfad (bereits „Aufgegriffen (teilweise)" offen). Dismissed (7): u. a. Blind-Hunter-Claim „alle Sandbox-SRO-Anker stale" — widerlegt (alle 6 exakt vor den eigenen Edits); übrige: Loop-1/2-Präzedenz-Doppelzählungen + by-design-Lesarten (Details im Spec Change Log). Sandbox re-executiert:bash _bmad-output/implementation-artifacts/sandbox-3-8/run-sandbox.sh→ DET-1..DET-8 harte PASS, Exit 0; at-Ausnahme aktiv (assertiert, real unterschiedliche Wanduhr-at-Werte A vs. B); Manifestgenerated_bykonsumiert; Witness nicht-vakuum (Baseline-SHA ≠ Run-SHA). Spec-Frontmatter:status: 'done',review_loop_iteration: 2; Frozen-Intent nur im D-3-Umfang geändert (Typo, autorisiert).sprint-status.yaml-Key3-8-…→done(D-2; Sequenzierungs-Hinweis im Key-Kommentar),last_updated→ 08-20-2026 17:04. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag); AD-3 read-only (schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert). - Story 3.8 → Review-Loop-2-Abschluss + Step-05 (Determinismus-Vertrag, 2026-08-20): Re-Review der Re-Open-Implementierung (3 Layer synchron — blind-hunter / edge-case-hunter-Retry / verification-gap; edge-case-hunter erste Ausgabe leer → per Re-Run ersetzt). Triage: keine intent_gap/bad_spec (kein Loopback); 10 Patch / 0 defer / Rest Reject. Kern-Veranlassung: die drei Re-Open-ACs wurden als nicht wirklich ausgeübt erkannt (Manifest dekorativ/nie konsumiert;
at-Maskierung vor dem Commit = stiller Ausschluss statt dokumentierter Ausnahme; keinverified[]-Feld; Receipt ohne Reihenfolge-/Entscheidungsfeld; Subshell ohneset -e). Patches (ausschließlichsandbox-3-8/run-sandbox.sh): DET-2 ganzheitlich gehärtet —generated.atwird als **reale Wanduhr-**Ausgabe je Lauf committet (date -u) und alsat_cellim Receipt festgehalten; Normalisierung aufATerst beim Vergleich (Hash über at-normalisierte Content-Projektion, §5.14 Pkt. 2 „ohne die maskierte at-Zeile"); Nach-Commit-Attestierungcommitted_at == at_now; Zwei-Run-Abgleich byte-identisch für alle deterministischen Receipt-Bestandteile, nur die zwei Ausnahme-Cellsat_cell/treedürfen differieren — dieat-Varianz wird real demonstriert (Wanduhratdifferiert in getrennten Worktree-Läufen); kanonisches Eingabemanifest wird konsumiert/validiert (abschnittsbewusste Extraktionsources:/output_visible_run_identity:, Baseline-Quellen-Existenz nach Input-Commit, HARD-FAIL bei fehlenden Keys); Receipt umorder:unddecisions:erweitert (§5.14 Pkt. 2) + Receipt-Nicht-Vakuum-Guard; Subshellset -e(kein false-PASS);match_stufe_aliteral-sicher (Term regex-escaped, §3.2-Pkt.-2a/§5.14 Pkt. 5) + CRLF-tolerante Body-Extraktion;cand-Newline-Normalisierung;log_bulletfail-hard (mktemp/mv-Fehler nicht mehr geschluckt — ein verlorener log-Eintrag hätte Vakuum-Gleichheit durch identische Baseline-Hashes erzeugt);git worktree prunevor dem Add (Re-Run-Sicherheit);git cleanfail-hard unterset -e. Verifikation re-executiert:bash _bmad-output/implementation-artifacts/sandbox-3-8/run-sandbox.sh→ DET-1..DET-8 harte PASS, Exit 0;BEFUND: at-Ausnahme aktivmit real unterschiedlichen Wanduhr-at-Werten (Lauf A vs. B), Witness nicht-vakuum (Baseline-SHA != Run-SHA); Validator-Verdikt (human-mechanisch, Rev 9, D-3): allewiki/-Dateien SUCCESS (keine Inhalts-Mutation). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlich diesen Eintrag inwiki/log.md;schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3). Spec Change Log Review-Loop-2 (append-only); Suggested Review Order auf gehärtete Sandbox-Anker aktualisiert.sprint-status.yaml-Key3-8-…→review(Review-Start/Neu-Flip; finalerdone-Flip Story-Konvention),last_updated→ 08-20-2026 17:05; Spec-Frontmatterstatus: 'in-review' → 'done',review_loop_iteration: 0. - Story 3.8 → Re-Open-Delta (Determinismus-Vertrag, genehmigtes Sprint-Change-Proposal 2026-08-20):
_bmad-output/planning-artifacts/sprint-change-proposal-2026-08-20.md(approved, ProMods, explizite Chat-Freigabe) nimmt Story 3.8 ausreviewnachin-progresszurück (Epics-Datei ACs Z. 357–370). §5.14-Wortlaut (Re-Open-Delta): Zwei-Run-Bestätigungs-Mechanik umgestellt auf zwei getrennte saubere Worktrees + frische Agent-Kontexte (Q-6/A0-19 — eine zweite Ausführung in derselben Session genügt nicht), unter kanonischem Eingabemanifest (Baseline-Commit, geordnete Source-Eingaben, output-sichtbare Run-/Zeit-/Identitätswerte, A0-19) und mit Run-Receipt (Candidate-Liste, Reihenfolge, Plan, Entscheidungen, Output-Hashes) außerhalb des Knowledge Bundle; keine hart codierten erwarteten Pläne/Concept-Bodies und keine pauschaleverified-Maskierung (einzige benannte Ausnahme bleibt der dokumentiertegenerated.at-Wanduhr-Gap, A0-20/§5.14 Pkt. 3). Sandbox DET-2 umgebaut (zwei getrennte Worktreeswt-a/wt-b+manifest.yaml+receipts/run2a.receipt/run2b.receiptaußerhalb des Bundles; Candidate-Ableitung aus Git-State via deterministischem Stufe-a-Match, nicht hart codiert; Abgleich der beiden Receipts als tatsächlicher Zwei-Run-Vergleich, nicht-vakuum):bash _bmad-output/implementation-artifacts/sandbox-3-8/run-sandbox.sh→ DET-1..DET-8 harte PASS, Exit 0 (Zwei-Run-Identität byte-identisch bis auf die benannteat-Ausnahme; Witness weicht von Baseline ab).schema/compiler.md§8 Revision 3.3 (Re-Open-Klausel); §5.13-„in einer Session" unverändert (AD-6-Phasen-Disziplin, Fugen-Identität). Validator-Verdikt (human-mechanisch,schema/validator.mdRev 9, D-3 — kein CLI): allewiki/-Dateien SUCCESS (keine Inhalts-Mutation). Erhaltungs-Invariante §5.9 Pkt. 5:git status --porcelain -- wiki/zeigt ausschließlich diesen Eintrag inwiki/log.md;sprint-status.yaml→in-progress; AD-3 read-only (validator/wiki-compiler/adapters/raw/ unverändert). - Story 3.8 →
in-progress(Determinismus-Vertrag (AD-17h) als Agent-Instruktions-Validator, Verankerung §5.14, 2026-08-20):schema/compiler.mdRevision 3.3 — neue Sektion §5.14 „Determinismus-Vertrag & Agent-Instruktions-Validator (Story 3.8)“ (nach §5.13, vor §6; §5.13 Pkt. 7-Seam auf den §5.14-Anker umgehängt): geschlossene Bestätigungs-Mechanik des Determinismus-Vertrags (AD-17h/FT-10/A0-19) — (1) Bundle-State-Definition (deterministische Projektion des committeten Git-States: committeter Baum gg. Baseline, Plan-/Kandidaten-/Reihenfolge-Outputs, Ausführungs-Entscheidungen;generated.at/verified[].atals benannte Ausnahme der Projektion), (2) Zwei-Run-Bestätigungs-Mechanik (agent-Instruktions-basiert D-3/Q-6: Producer führt zweimal über demselben committeten Git-State aus, Vergleichs-Operandum = committeter Baum, diff-/hashbasierte Formeln, identische Outputs byte-identisch bis aufat; Sandbox DET-2 nicht-vakuum; kein Prozess/Server/MCP/Standalone, AD-6/AD-11), (3) Ausnahme-Menge (allein dergenerated.at-Wanduhr-Gap als dokumentierte A0-20-Konvention — kein stiller Ausschluss; alle übrigen Bestandteile byte-identisch), (4) Abweichungs-Klassifikation (jede Differenz außerhalb der Ausnahme = AD-16-Klassifikationsdefekt, kein Rauschen, textuell benannt NFR-4, korrigiert/zurückgerollt, erneut bestätigt), (5) Normalisierungs-/Match-/Orphan-Schließung (verweist auf §3.2-Pkt.-1b-/§5.10-Pkt.-8-Verankerung). §3.2 Normalisierungs-Lücken geschlossen (append-only, kein Umbruch): Em-Dash in der Kollaps-Klasse ([-–— _]→-), Kollaps-Reichweite (jedes Vorkommen → genau ein-+ Trim), Match-Scope der Stufe a (ganze Wörter über den Body, Frontmatter exkludiert). §5.10 Pkt. 8 Orphan zur deterministischen Reconcile-Orphan-Regel präzisiert (Zuwachs gg.<Baseline-Commit>, datumsgruppierterlog.md-Eintrag, kein Banner, AD-16-Default). §7-Determinismus-Vorbehalt aufgelöst (Story-3.8-Verankerung, bestehende Bullets unverändert); §8-AD-17hauf den §5.14-Anker angehoben (mitgenerated.at-Wanduhr-Gap-Ausnahme-Nennung); Revisionslog Revision 3.3 mit Abschlussklausel (AD-3 —schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert; keine neue §7-Klasse; kein Standalone/D-3; keine Vertragsänderung; kein neuer Prädikat-/Format-/Frontmatter-Key;generated.at-Verhalten unverändert, Ask-First bei Verhaltens-Wechsel; keine eigene Workflow-Engine).sprint-status.yaml-Key3-8-determinismus-vertrag-ad-17h-als-agent-instruktions-validato→in-progress(Implementierungs-Flip, HEAD-Stand 08-20-2026 09:05; finalerreview/done-Flip im Review-Schritt — Step-04/05),last_updated→ 08-20-2026 09:05. Sandbox-Nachweis (_bmad-output/implementation-artifacts/sandbox-3-8/run-sandbox.sh,/tmp-Baum, Linux-Semantik, nie der realewiki/-/raw/-Baum): DET-1..DET-8, Exit 0, 8 harte PASS-Assertionen — DET-1 Bundle-State-Definition (Projektion zweimal byte-identisch extrahiert, KEINE_EIGENE_ENGINE-Negativkontrolle D-3/AD-11); DET-2 Zwei-Run-identisch nicht-vakuum (echte Content-Hashes Plan-/log-/index-/alpha + Bundle-TREE byte-identisch über zwei unabhängige Läufe, Witness weicht byte-weise von Baseline ab); DET-3 Zwei-Run-Abweichung (künstlich divergenter Lauf → AD-16-Klassifikationsdefekt textuell benannt NFR-4, korrigierter Lauf == Referenz); DET-4at-Gap-Ausnahme (diff ausschließlich at-Zeile, nach at-Maskierung byte-identisch, Negativkontrolle Body-Differenz = Defekt); DET-5 Em-Dash (identische canonische Form wie En-Dash/Bindestrich/Unterstrich/Leerzeichen); DET-6 Kollaps (a--b→a-b,-x→x,x-→x); DET-7 Match-Scope (ganze Wörter, Body-exklusiv, Substring-/Frontmatter-Treffer liefern keine Kandidaten); DET-8 Orphan (verwaiste Evidenz unzugeordnet,log.md-Verwaist-Eintrag mit<Baseline-Commit>, kein Banner, keine eigenständige Anlage, Erhaltungs-Invariante nurlog.md). Defers aufgegriffen/geschlossen →deferred-work.mdappend-only (7### Aufgegriffen-Blöcke + 1### Aufgegriffen (teilweise)-Block: Em-Dash → §3.2 Pkt. 1b/§5.14 Pkt. 5; Kollaps-Reichweite → §3.2 Pkt. 1b; Match-Scope Stufe a → §3.2 Pkt. 1b; Orphan → §5.10 Pkt. 8;generated.at↔AD-17h-Gap → §5.14 Pkt. 1–3; A0-20-Post-Zustand-Negativkontrolle → §5.14 Pkt. 2–4; Misch-Run-Coverage → §5.14; Umlaut/Em-Dash teilweise aufgegriffen — der Em-Dash-Anteil in §3.2 Pkt. 1b/§5.14 Pkt. 5 geschlossen, der Umlaut-vs-Transkription-Anteil bleibt offen, kein Instruktions-Defekt). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story D-3);schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3, viagit statusgeprüft);schema/canonical-terms.mdunverändert (append-only-Registry unangetastet). Validator-Verdikt auf Ist-Bundle (human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): allewiki/-Dateien SUCCESS. - Story 3.7 → Review-Loop-2-Abschluss (bmad-code-review Re-Run, 4 Layer — blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor, 2026-08-20): Nutzer-Entscheidungen D1/D2/D3 = 1/1/1 (je empfohlene Option). Findings: 3 decision-needed / 7 patch / 3 defer / 9 dismissed (False-Positives: „18 PASS lines"-Claim → 14; Wanduhr-Datumsgruppen-Verdacht → Vertrag-§5-Datumsgruppen-Pflicht; Zeilenanker-Off-by-one → exakt; CONSIST-2-ad-hoc-Rollback → korrekte §5.9-Pkt.-5-Semantik; „Nur compiler.md mutiert" → D-3-Scope-Klausel-Misread; „die Baseline" → in §5.9 Pkt. 6 definiert; frontmatter-Status-Timing / fehlender Verification-Transkript → by-design; CONSIST-3-raw-SHA-vs-Setup → korrekt). Patches: (1) D1:
deferred-work.mdappend — zwei Delokalisierungs-Blöcke (Terminologie-DriftINPUT_UNCOMMITTED/UNCOMMITTED_INPUTpre-existing §5.9/§5.11, Sandbox nutzt §5.9-Label; Misch-Run-Coverage Neu-Anlage+Update → Home Story 3.8) → das done-Bullet („Delokalisierungs-Doku") ist jetzt wahr; in-progress-Bullet-Präzisierung („Defers aus dem Review-Lauf sind im done-Bullet nachgeführt") — Protokollwiderspruch aufgelöst. (2) D2:sprint-status-Wertreviewim Diff behalten (Review-Start-Flip, File-Header-Konvention „review: Implementation complete, ready for review") + 4 Dokumentationsstellen korrigiert (Spec-Code-Mapbacklog → review, SRO-Anker-Text, dieses in-progress-Bullet, §8-Revision-3.2-Klausel „in-progress" → „review(Impl.-Flip + Review-Start-Flip im selben Commit; finalerdone-Flip im Step-05-Status-Sync)"). (3) D3:p2_plan-Element-(1)-Scope-Fixgit status --porcelain -- raw wiki— exakt wie Instruktion §5.9 Pkt. 6 Element (1) (die dev-interne E1-Ablehnung „Sandbox läuft nur auf sauberen Bäumen" aufgehoben; in den IST-Szenarien wirkungslos, Demo folgt jetzt der Instruktion). Sandbox-Patches: CONSIST-1-EC-1-Isolation (Quellen-Löschung committet → Element (3) feuert isoliert; Element (1) isoliert über untracked-Datei); CONSIST-2 Misch-Run-Erweiterung (Neu-Anlagedelta+ Updatealpha; Neu-Anlage-Zielpfad+deltaals erlaubter Plan-Freeze-Teil; Duplikat-Kontrolle inp2_plan; Voll-Rollback → Neu-Anlage-Absenz viaassert_restored-Neu-Anlage-Guard — Guard erstmals real geübt); CONSIST-5-raw/-SHA gg.$BASE-Blob (tautologischer Selbstvergleich entfernt, Muster CONSIST-4); CONSIST-6 committierter Zustand gültig (Body-Zeile zitiertraw/alpha-v2.md#S-3mit vorhandenersources-Nachführungid: s3+generated.at-Bump — §5.9-Pkt.-2-Update-Form vollzogen, kein mehrdeutiger Referenz-Demo);rollback()-Doku-Block (Voll-Rollback = §6-Pkt.-3-Teilzustand; in der Sandbox sind ungetracktewiki/-Dateien lauf-eigener Teilzustand, fremde Änderungen schützen vorher Stash/Scratch nach §5.11 Pkt. 3 — AD-17e); Tippfehler (porcelan/texuelle/Ferien-Zustand). Instruktions-Patch: §5.13 Pkt. 7 Determinismus-Vertrag für „Post-Zustand" um den dokumentiertengenerated.at-Wanduhr-Gap ergänzt (§5.10 Pkt. 8, A0-20-Konvention, Home Story 3.8) — konsistent zu §5.10/§5.12, die das Gap bereits ausweisen. Defers: 3 →deferred-work.mdSection „Deferred from: code review of … (Story 3.7, 2026-08-20)" (CONSIST-7-Label-Präzisierung; A0-20-Post-Zustand-Negativkontrolle → Story 3.8; pre-existing-Zeitpunktswort-Fuge §5.9 „Anfang der Mutationsphase" vs. §5.13/I/O-Matrix „vor der Mutationsphase" — §5.9 wortlautgeschützt). Sandbox re-executiert: CONSIST-1..CONSIST-7, Exit 0, 14 harte PASS-Assertionen (7 Szenario-Ende + 4assert_restored— CONSIST-2 neu — + 2assert_invariant— CONSIST-2-Endprobe durch Rollback-Flow ersetzt — + 1assert_frontmatter); einzige HARD-FAIL-Zeile = intendierte CONSIST-2-Freeze-Negativkontrolle (Ghostgamma); CONSIST-7 non-vakuum (plan_shab855ee9a…byte-identisch über beide Runs). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation;schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3). - Story 3.7 →
done(Step-04-Review-Abschluss, 2026-08-20): Der Review-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention, Story-3.1/3.2/3.3/3.4/3.5/3.6-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-7-reason-mutate-trennung-und-konsistenz-endzustand-sicherstell→review(Review-Schritt; dasdone-Flip ist Workflow-Konvention des Review-Abschlusses — Step-05 setzt Spec-Frontmatterstatus: 'done'),last_updated→ 08-20-2026 00:30; Spec-Frontmatterstatus: 'in-review' → 'done',review_loop_iteration: 0; Spec-## Suggested Review Order(Review-Trail: §5.13-Reason/Mutate-Sektion → §7/§8-Nachweis → Sandbox-Nachweis → Story-Protokoll/Defers) mit klickbarenpath:line-Ankern (343/356/358/362/420/461 inschema/compiler.md). Review-Ergebnis (Review-Loop 1, 3 Subagenten — blind-hunter / edge-case-hunter / verification-gap, kein Loopback): keine intent_gap/bad_spec; Stapel Autofix-Patches — Spec/SRO/Code-Map-Anker auf IST-Zeilen korrigiert (§5.13 Einstieg Z. 343, Änderungsplanung Z. 356, Zustands-Restaurations-Invariante Z. 358, keine Engine Z. 362, §7-Bullet Z. 420, §8-Revision-3.2 Z. 461; §6-Start Z. 364, §8-AD-6 Z. 430; SRO-Sprint-Status-Label „in-progress (Implementierung)", keinedone-Transition im Diff), „fünf AD-6-Phasen" → „vier" (Design Notes + §5.13-Intro-Post-Tabelle + Rev-3.2 + Boundaries + Review-Hinweis — konsistent zur AD-6-Rule und der 4-Zeilen-Zuordnungstabelle; Reconcile in die Analyse-Zelle gefasst;fünfin compiler.md = 0), CONSIST-6-Sequenz (assert_frontmatter+log_commitVORgit commit— der Commit enthält alpha + log.md mit Plan- und SUCCESS-Bullets; Commit enthält den §6-Pkt.-4-Nachweis, Commit-Boundary AD-17f), CONSIST-7-log_sha-Vakuum (log_sha nach Rollback ist Baseline-Konstante → nur Kommentar; Determinismus-Zeuge =plan_sha/plan_stateaus dem committeten Plan-Capture-Baum, non-vakuum), CONSIST-1-EC-1-Negativkontrolle (P2-Element (3), fehlenderaw/alpha-v2.md-Existenz →p2_planmussreturn 1, textuell benannt, keine Mutation), pgrep-Robustheits-Guard (KEINE_ENGINE-Negativkontrolle:command -v pgrep→ sonstps-Fallback — pgrep auf Git-Bash-Host nicht vorhanden; vorher stille vacuöse Negativkontrolle, jetzt reellerps aux-Scan),assert_restored-Neu-Anlage-Guard (git cat-file -e "$BASE:wiki/$p"— nicht-Baseline-Pfad darf nach Rollback nicht existieren), Setup-Existenz-Assert (CONSIST-4:git cat-file -e "$BASE:raw/..."ersetzt toten|| sha256sum-Fallback ohne pipefail), Tippfehlerinv_viol„§5.9 Pkt. 8" → „Pkt. 5", plan-run.capture-Disclaimer (nur deterministischer Sandbox-Zeuge, kein §5.13-Artefakt; „kein Artefakt-File" bleibt Ask-First-Norm), Delokalisierungs-Doku (deferred-work.md append-only: Terminologie-DriftINPUT_UNCOMMITTED/UNCOMMITTED_INPUTpre-existing §5.9/§5.11, §5.11-Wortlaut geschützt — XY nutztINPUT_UNCOMMITTEDwie §5.9-P2-Element (1); Misch-Run-Coverage Neu-Anlage+Update → Story 3.8), Rejects dokumentiert (u.a. E1 full-repo-P2-Check — Instruktionstext „Working-Copy von raw/ und wiki/" korrekt; Sandbox läuft nur auf sauberen Bäumen). Sandbox re-executiert: CONSIST-1..CONSIST-7, Exit 0, 14 harte PASS-Assertionen, einzige HARD-FAIL-Zeile = intendierte CONSIST-2-Negativkontrolle (Freeze-Verletzung aufgamma); CONSIST-7 non-vakuum (plan_sha byte-identisch über beide Runs); keine ungewolltencat:/sha256sum:-Zeilen; Zeilenanker real. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story D-3);schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3); Validator-Verdikt auf Ist-Bundle (human-mechanisch,schema/validator.mdRev 9, D-3): allewiki/-Dateien SUCCESS. - Story 3.7 →
in-progress(Reason/Mutate-Trennung & Konsistenz-Endzustand, Verankerung §5.13, 2026-08-20):schema/compiler.mdRevision 3.2 — neue Sektion §5.13 „Reason/Mutate-Phasen-Trennung & Konsistenz-Endzustand (Story 3.7)“ (nach §5.12, vor §6): verbindliche Verankerung von AD-6/A0-7 (Reason/Mutate-Trennung; A0-7-AC-2: konsistenter Endzustand bei Abbruch). Die §0-Ablaufstruktur (0)–(5) bleibt unverändert (deterministische Takt-Folge, keine Um-Nummerierung); §5.13 ordnet nur logisch zu (AD-6-Phase ↔ §0-Zuordnungstabelle). Inhalte: P2-Block (§5.9 Pkt. 6) institutionalisiert als Änderungsplanung (Wortlaut-unverändert referenziert, Rückverweis); Plan-Freeze (Veränderungs-Sperre: erlaubte Pfad-Menge = Kandidatenliste ∪ Neu-Anlage ∪ log.md ∪ index.md, Verletzung = Ghost-Diff §5.9 Pkt. 5); Zustands-Restaurations-Invariante (Post-Rollback-Diff gg. Baseline leer, Bundle == Baseline ∨ valid committet, deterministisch, ohne Wanduhr A0-20); kein Teilerfolg (Commit-Boundary = Mutations-Boundary, AD-17f); VALIDATION_FAIL (Rollback, keine weiteren Mutationen) vs. VALIDATION_SUCCESS (Mutationen als Ganzes committen, §6-Pkt.-4-Nachweis); KEINE_EIGENE_ENGINE (D-3/AD-11: logische Trennung in einer Session, kein Prozess/Server/MCP). §7-Bullet ergänzt (Nachweis-Block), §8-AD-6-Anker, Revisionslog Revision 3.2 mit Abschlussklausel (AD-3 —schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert; keine neue §7-Klasse; kein Standalone; keine Vertragsänderung; kein neuer Prädikat-/Format-/Frontmatter-Key; keine Workflow-Engine; §0 unverändert; Commit-Boundary-Regel unverändert).sprint-status.yaml-Key3-7-reason-mutate-trennung-und-konsistenz-endzustand-sicherstell→review(Implementierungs-Flipin-progress+ Review-Start-Flipreviewim selben Commit; finalerdone-Flip im Step-05-Status-Sync),last_updated→ 08-20-2026 00:30 (Story 3.7). Sandbox-Nachweis (_bmad-output/implementation-artifacts/sandbox-3-7/run-sandbox.sh,/tmp-Baum, Linux-Semantik, nie der realewiki/-/raw/-Baum): CONSIST-1..CONSIST-7, Exit 0, 14 harte PASS-Assertionen — CONSIST-1 konsistente Änderungsplanung (P2-Block) aus committetem Input + Plan-Defizit-Abbruch VOR der Mutationsphase (uncommitteter Input AD-17a); CONSIST-2 Plan-Freeze (Verletzung auf Nicht-Plan-Pfadgammaerkannt, Ghost-Diff-Rollback); CONSIST-3 Zustands-Restaurations-Invariante (Post-Rollback-Diff leer, Bundle == Baseline, SHA-256 byte-identisch,raw/unverändert AD-3); CONSIST-4 kein Teilerfolg als fertige Mutation (Commit-Boundary = Mutations-Boundary AD-17f); CONSIST-5 VALIDATION_FAIL (§6-Pkt.-3-Rollback, keine weiteren Mutationen); CONSIST-6 VALIDATION_SUCCESS (Mutationen als Ganzes committet, Diff-Selbsttest ohne Ghost-Diff, §6-Pkt.-4-Nachweis, kein Wanduhr-Trigger A0-20); CONSIST-7 Determinismus-Zwei-Run nicht-vakuum (identische Plan-/Rollback-/State-Outputs, AD-17h/A0-19; der Plan wird nach Rollback aus dem committeten Baumgit show-gelesen — der einzige deterministische Zeuge, darollbackauf Baseline resettet) + KEINE_ENGINE-Negativkontrolle (kein Prozess/Server/MCP — D-3/AD-11, AC-4). Die einzige HARD-FAIL-Zeile im Sandbox-Output ist die intendierte CONSIST-2-Negativkontrolle (Freeze-Verletzung aufgamma— erwarteter Non-Zero-Exit, vom Szenario hart assertiert). Keine Story-3.7-Defers (per Implementierungsstand, per Spec-README: keine Home-3.7-Defers; Defers aus dem Review-Lauf sind im done-Bullet nachgeführt). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story D-3);schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3); Validator-Verdikt auf Ist-Bundle (human-mechanisch,schema/validator.mdRev 9, D-3): allewiki/-Dateien SUCCESS.
2026-08-19
- Story 3.6 →
done(Step-04-Review-Abschluss, 2026-08-19): Der Review-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention, Story-3.1/3.2/3.3/3.4/3.5-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-6-…→done,last_updated→ 08-19-2026 22:10; Spec-Frontmatterstatus: 'in-review' → 'done',review_loop_iteration: 0; Spec-## Suggested Review Order(Review-Trail: §5.12-Leasing-Staleness-Sektion → §7/§8-Nachweis → Sandbox-Nachweis → Story-Protokoll/Defers) verankert. Review-Ergebnis (Review-Loop 1, 3 Subagenten — blind-hunter / edge-case-hunter / verification-gap, kein Loopback): keine intent_gap/bad_spec; Stapel Autofix-Patches (Terminologie-Inversion „jünger→älter" in §5.12 Pkt. 1/3/6 + §8-Revisionslog + log.md + Spec, Gen kleiner = älter; Generations-Quellen-Präzedenz deterministisch gepinnt — committeterlease-granite-root-Marker gewinnt, sonstlease/-Baumableitung, sonst Startwertgen = 0; STALE-1-kern generationenbasiertes TTL gegen dieselbeiddurchgesetzt, STALE-3-Re-Akquise, STALE-5-Same-id-A/B, holder_id-genuine Ableitung, baseline_commit-Merge-Base-Diskrepanz real, STALE-4-lesender-raw/-Bind (Recovery-Basis Zugriffs-/Consistency-Basis), Marker-Idempotenz-Regex, STALE-6-Full-State-Invariante, log_bullet-Datumsgruppen); 1 neuer Defer →deferred-work.mdappend-only (Schicksal deslease/<area>/<id>-Branch nach Übernahme/Stale-Markierung — Home: spätere Instruktions-/Sandbox-Runde oder Story 3.8). Sandbox re-executiert: STALE-1..STALE-6 + Erhaltungs-Invariante, Exit 0, 12 harte PASS-Assertionen; AD-3 geprüft (schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert); Validator-Verdikt auf Ist-Bundle: allewiki/-Dateien SUCCESS (keine Inhalts-Mutation). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story). - Story 3.6 →
in-progress(Lease-Staleness & Recovery-Basis, Verankerung §5.12, 2026-08-19):schema/compiler.mdRevision 3.1 — neue Sektion §5.12 „Lease-Staleness & Recovery-Basis (Story 3.6)“ (nach §5.11, vor §6), die verbindliche Verankerung der Staleness-/Recovery-Dimension (AD-17d, A0-15; §5.11-Seam-Kriterium S-1 und Pkt.-7-Text sowie §5.11 Pkt. 1 „verbleibt bis Story 3.6“ textuell unverändert — Haltbarkeits-Fuge): (1) Lease-Registrierung & generationenbasiertes TTL — Registrierung im Clone-Root-State (nichtwiki//raw//Concept-Frontmatter, Vertrag §3.1–§3.7 unverändert), monotoner Run-Generator (generation-Zähler je Clone-Root, deterministisch aus dem committeten Git-State ableitbar:lease/-Baumableitung oder Mono-Commit-lease-granite-root-Marker), TTL-Ablauf-Kriterium generationen-basiert (ältere Erzeugungs-Generation = stale, blockiert keinen nachfolgenden Run, I/O-MatrixSTALE_ABLAUF), kein Wanduhr-Timestamp im Lockfile-/Registrierungs-Format (A0-20; streng durchsetzendes Zeit-TTL = Ask-First); (2) holder_id-Ableitung (deterministischer Defaultholder_id := <producer>-<id>, reproduzierbar aus dem committeten Git-State; Story-3.5-Defer aufgegriffen); (3) Verwaist-Klassifikation, Übernahme & Stale-Markierung (AD-17e/AD-17g) —VERWAIST_UEBERNEHMENgg. erneute Merge-Base-Prüfung (Pkt.-4-Regel) mit log.md-Protokoll,VERWAIST_STALE_MARKIERENvia Registry-Marker der aktuellen Generation (Blockade aufgehoben); verwaiste Leases nie still gelöscht (AD-17e); (4) baseline_commit-Merge-Base-Diskrepanz-Regel —git merge-basegewinnt, notierter<Baseline-Commit>bleibt Sekundär-Fingerprint, Fallback ohne Boundary (alleraw/-Dateien Zuwachs, Merge-Base = ältester Fundamentpunkt, §5.9 Pkt. 6 R-1/AD-14); gilt auch bei Lease-Übernahme (Defer aufgegriffen); (5)raw/-Recovery-Basis & nativegit stash-Variante —raw/immutable AD-3 als Zugriffs-/Consistency-Basis, Real-Baum-Beweis auf Sandbox-Evidenzwege beschränkt (EC-1-Grenze),git stash push -- <Pfade>als zweite textuell zulässige Schutzvariante (byte-identisch, nie gelöscht, Restore dokumentiert; Defer aufgegriffen); (6) Registrierungs-Invariante & kumulativer Registry-Aufbau über Runs (Vertrag §5) —Gen > erzeugend oder gleiche Gen, hält den sichtbar höchsten Reg-Generator, kein eigener# Log-Stand in der Registry (wiki/log.mdalleiniger Aufzeichnungs-Ort; Defer aufgegriffen); (7)log.md-Eintragspflicht & Determinismus-Vertrag (AD-17h/A0-19) — Registrierung/TTL, Lease-Übernahme, Stale-Markierung, Recovery-Basis-Nutzung als datumsgruppierte Einträge (neueste zuerst,<Baseline-Commit>D-2), deterministisch aus dem committeten Git-State, kein Wanduhr-Timestamp steuert einen Vorgang. §7-VorbehaltLease-Staleness/Recovery(:376) aufgelöst: „in §5.12 dieser Instruktion verankert (Story 3.6)“ (§5.11-Pkt.-7-Seam-Satz und §7-Leasing-Enum-Bullet-Text unverändert). §8-Normreferenzen AD-17d/A0-15 von reiner Story-Zuordnung auf §5.12-Anker angehoben (AD-17d (Lease-Staleness, §5.12),A0-15 (Lease-Staleness, §5.12)). §8-Revisionslog Revision 3.1 mit Abschlussklausel (keine Änderung anschema/wiki-compiler.md/schema/validator.md/raw/AD-3; keine neue §7-Invaliditätsklasse; kein Standalone D-3; keine Vertragsänderung; kein neuer Frontmatter-Key für Lease-Metadaten; kein Prädikat-/Format-Key; Commit-Boundary-Regel unverändert). Sandboxsandbox-3-6/run-sandbox.shre-executierbar (Muster sandbox-3-5,/tmp-Baum,core.autocrlf false-Pin für deterministischegit stash-Roundtrips; nie der realewiki/-/raw/-Baum): STALE-1 STALE_ABLAUF (abgebrochener Run hinterlässt Lease + Registrierung ohne Freigabe; nachfolgender Run klassifiziert sie generationenbasiert als stale — kein Blockade-fail, akquire run-b erfolgreich; Lockfile + Registry-Zeile bleiben, AD-17e; kein Wanduhr-Timestamp A0-20; log.md-TTL-Eintrag Pkt. 6a/7a), STALE-2 VERWAIST_UEBERNEHMEN (Übernahme gg. erneute Merge-Base-Prüfunggit merge-base == $BASE, log.md-Übernahme-Eintrag Pkt. 6b/7b, holder_id-Ableitung Pkt. 2, nichts still gelöscht AD-17e), STALE-3 VERWAIST_STALE_MARKIEREN (Registry-Markerstale: run-a (Gen 2),lease_active=false→ Blockade aufgehoben, log.md-Eintrag Pkt. 6c/7c, Gen-Invariante gehalten, Lockfile+Zeile bleiben AD-17e), STALE-4 RECOVERY_RAW_BASIS (raw/-SHA-256 vor/nach identisch — immutable AD-3, EC-1-Grenze; nativegit stash push/popumwiki/alpha.mdbyte-identischer Restore via SHA-256, nie gelöscht; log.md-Recovery-Eintrag Pkt. 6d/7d), STALE-5 REGISTRIERUNGS-INVARIANTE (drei Runs in EINERregistry/wiki— Gen 3 == höchster, Regression auf Gen 1 zurückgewiesen (Invariante Pkt. 6); verwaiste Kanten run-a/run-b/run-c nie gelöscht AD-17e; HOLD gegen aktive Lease deterministisch (akquire run-c verweigert), kein Abbruch-Text; kein Wanduhr), STALE-6 DETERMINISMUS (AD-17h/A0-19: zwei identische Runs → Registry- undlog.md-SHA-256 byte-identisch, identische Stale-Markierungs-Klassifikation); Exit 0, 6/6 harte PASS-Szenarien (re-executiert, 08-19-2026). 4 Defers aufgegriffen (Story 3.5, Home 3.6):deferred-work.mdappend-only — vier### Aufgegriffen-Blöcke (holder_id-Quelle → §5.12 Pkt. 2; baseline_commit-Diskrepanz → §5.12 Pkt. 4; Sandbox-log-Akkumulator/cumulative Registry → §5.12 Pkt. 6; nativegit stash-Variante → §5.12 Pkt. 5), je Statusaufgegriffen (Home erledigt in §5.12 …)+ Sandbox-Nachweis; keine neuen Story-3.6-Defers. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story;sprint-status.yaml/deferred-work.md/sandbox-3-6/liegen außerhalbwiki/und sind nicht Teil der Diff-Probe). Validator-Verdikt (per-Datei, human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI; unverändert zur Story 3.5, Story 3.6 mutiert keine Concept-Inhalte): alle 7wiki/-Dateien SUCCESS —wiki/index.md(Punkt 11, Bundleroot),wiki/knowledge-kompilation-inkrementell.md,wiki/llm-wiki-prinzip.md,wiki/wissensarchitektur-trennung-states.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1),wiki/log.md(frontmatterlos, Punkt 10),wiki/wissensarchitektur/index.md(frontmatterlos, Punkt 10/11),wiki/wissensarchitektur/source-material.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1; Punkt 11 inkl. Area-Lesart Rev 9).schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3, viagit statusgeprüft); keine neue §7-Klasse; kein Standalone (D-3).sprint-status.yaml-Key3-6-…→in-progress,last_updated→ 08-19-2026 21:30. - Story 3.5 →
done(Step-04-Review-Abschluss, 2026-08-19): Der Review-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention, Story-3.1/3.2/3.3/3.4-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-5-…→done,last_updated→ 08-19-2026 20:37; Spec-Frontmatterstatus: 'in-review' → 'done',review_loop_iteration: 0; Spec-## Suggested Review Order(Review-Trail: §5.11-Leasing-Sektion → §7/§8-Nachweis → Sandbox-Nachweis → Story-Protokoll/Defers) verankert. Review-Ergebnis (Review-Loop 1, 3 Subagenten — blind-hunter / edge-case-hunter / verification-gap, kein Loopback): keine intent_gap/bad_spec; Stapel Autofix-Patches (Text-Fixes (§5.11): Pkt.-1-Querverweis „Pkt. 3" → „Pkt. 2", UNCOMMITTED_INPUT als dieselbe §5.9-P2-Prüfung deklariert, „neueste zuerst"-Datumsgruppe, Lease-Freigabe als deterministischer Pkt.-1-Sub-Bullet + Pkt.-6-Eintragstyp (e), testbares 3.5/3.6-Seam-Kriterium, AD-17d/A0-15-Norm-Rückverweis, §8-Revision 3.1; Sandbox: Header-Bullet-Paare, L2-Lease-Hold-Exit-Assertion, L4-Restore-Weg + UNCOMMITTED_INPUT-Abbruch-Wirkung, L6-BUILD_HEAD, L5-Klassifikations-Bullet, N1-§5.10-Pkt.-8-Orphan-Nachbarschaft, D2-Kumulative-Aufzeichnung); 4 Defers →deferred-work.mdappend-only (holder_id-Quelle · baseline_commit-Merge-Base-Diskrepanz-Regel · Sandbox-log-Akkumulator [D2 schließt] · nativegit stash-Variante — Home je Story 3.6/3.8). Sandbox re-executiert: L1–L6 + N1 + D1 + D2, Exit 0, 21 harte PASS-Assertionen; AD-3 geprüft (schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert); Validator-Verdikt auf Ist-Bundle: allewiki/-Dateien SUCCESS (keine Inhalts-Mutation). Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story). - Story 3.5 →
in-progress(Leasing & Dirty-Tree-Schutz, Verankerung §5.11, 2026-08-19):schema/compiler.mdRevision 3.0 — neue Sektion §5.11 „Leasing & Dirty-Tree-Schutz für konkurrierende Producer (Story 3.5)“ (nach §5.10, vor §6): Lease-Akquise auflease/<area>/<id>-Branches vom Merge-Base mit Lockfile (lease/<area>/<id>.lock, semantisch identisch in jedem Adapter, A0-12; deterministische Felderarea/id/producer/baseline_commit/holder_id— kein Zeitstempel, AD-17h), Basis-Commit = eindeutiger Commit-Object-Wert (Merge-Base-Disziplin); Root-Scope-Lease (AD-17b, A0-13:wiki/inkl.log.md,index.md, aller Root-Dateien; kein Bereich jenseitswiki/); Dirty-Tree-Schutz (AD-17e/f, A0-16: Pre-Mutation-Prüfung, Stash/Scratch-Zone außerhalbwiki/, fremde uncommittete Änderungen NIE gelöscht, log.md-Dokumentation, UNCOMMITTED_INPUT-Abbruch „published/committed Input erforderlich“ AD-17a); kein textueller Auto-Merge (AD-17c, A0-14: compiler-vermittelter AD-16-Pfad, Default Erhaltung, log.md-Klassifikations-Eintrag, Eskalation AD-17g); Commit-Boundary = Mutations-Boundary unverändert (§0/§5.3);log.md-Eintragspflicht (Akquise/Schutz/Klassifikation/Eskalation,<Baseline-Commit>, D-2); Determinismus-Vertrag (AD-17h/A0-19) · Lease-Staleness/Recovery bleibt → Story 3.6 (AD-17d, A0-15). §7-Vorbehalt:357aufgelöst (→ §5.11), §8-Normreferenzen um AD-17b/c/d/e-f/g + A0-12..A0-16 ergänzt, Abschlussklausel (AD-3, keine neue §7-Klasse, kein Standalone D-3, keine Vertragsänderung, kein neuer Frontmatter-Key).sprint-status.yaml-Key3-5-…→in-progress. Sandboxsandbox-3-5/run-sandbox.shre-executierbar (Muster Story 3.4, /tmp-Baum): L1 Lease-Akquise (Branch-Form, Lockfile-Felder, Merge-Base = eindeutiger Commit-Object-Wert), L2 Lease-Hold (zweite Akquise verweigert, Lockfile unverändert, keine Mutation), L3 Root-Scope (index/log/Root-Dateien erfasst; raw//lease/ keine Mutationsziele), L4 Dirty-Tree-Schutz (Pre-Mutation-Prüfung erkennt Fremd-Aenderung, Scratch-Zone byte-identisch, NIE gelöscht, log.md-Dokumentation; UNCOMMITTED_INPUT-Abbruch), L5 NO_AUTO_MERGE (Merge-Versuch scheitert; AD-16-Erhaltung + Eskalation AD-17g, beide Behauptungen erhalten), L6 COMMIT_BOUNDARY (Zwischenstand nie committet; validierte Mutation committet; invalidierter Zwischenstand → Validierungs-FAIL → Rollback §5.3), N1 ??-Ghost-Diff-Negativkontrolle (Ghost-Datei als Duplikat/Ghost-Diff verworfen, Kontrolle nicht vacuous), D1 Determinismus (Lockfile-Inhalt + Merge-Klassifikation Zwei-Run-identisch, AD-17h/A0-19); Exit 0, 21 harte PASS-Assertionen (2 HARD-FAIL-Zeilen sind die intendierte N1-Ghost-Erkennung). Review-Loop-1-Patches (Step-04, kein Loopback, 2026-08-19): log-Helfer → Header-Bullet-Paare je Eintrag (Vertrag-§5-Datumsgruppe, neueste zuerst, wie §5.9 Pkt. 4); L1 Lease-Freigabe (Release, deterministisch, §5.11 Pkt. 1) —free_leaseentfernt nach committetem Run das Lockfile und dokumentiert den Abschluss als log.md-Freigabe-Eintrag (+ log_release-Helfer; Lockfiles häufen sich nicht; eine ohne Freigabe beendete Lease verbleibt → Story 3.6); L2akquire-Exit-Status != 0 als Fehlerpfad-Assertion; L4 Restore-Weg (Scratch → Bundle, byte-identischer Restore; Fremd-Aenderung nie gelöscht) + UNCOMMITTED_INPUT-Abbruch-Wirkung hart assertiert (HEADunverändert[ "$(git rev-parse HEAD)" = "$BASE" ],ALPHA_ONLYexakt „alpha" — dieselbe Pre-Run-Prüfung wie §5.9-P2-Element (1)INPUT_UNCOMMITTED, kein zweiter Abbruch-Pfad, §5.11 Pkt. 3); L5 Merge-Klassifikations-Bullet in Datumsgruppen-Form (-- '- Merge-Klassifikation: …'); L6 Widerspruchs-Tautologie (BROKEN_HEAD/COMMIT_AFTER_RUN) → einzelnesBUILD_HEAD, Frontmatter-Negativtest subshell-gewrappt (Exit-1-safe); N1-Header um §5.10-Pkt.-8-Orphan-Nachbarschaft + §5.9-Pkt.-5-Erhaltungs-Invariante; L3-??-Sicht-Assertion (^?? wiki/beta.md); neues D2 „Kumulative Koordinations-Aufzeichnung" — 4 Koordinationsentscheidungen (log_lease + log_dirty + log_merge + log_release) in EINEMlog.md:HEADERS = 4, jede Bullet präsent, erst an der Commit-Boundary committiert — PASS. Seam-Kriterium 3.5/3.6 (compiler.md §5.11 Pkt. 7): 3.5 = committeter-Git-State-Determinismus (AD-17h), 3.6 = Zeit-/Umgebungs-Zustands-Frage (TTL-Ablauf, verwaiste/hängende Leases,raw/-Recovery). 4 Defers →deferred-work.md(holder_id-Uniqueness-Quelle; baseline_commit-Merge-Base-Diskrepanz-Regel; Sandbox-log-Akkumulator vs. isolierte Szenarien [D2 schließt]; nativegit stash-Variante ungetestet — Home je Story 3.6). Sandbox nach allen Patches re-executiert: Exit 0, 21 PASS. Validator-Verdikt auf Ist-Bundle:schema/validator.md/schema/wiki-compiler.md/adapters//raw/unverändert (AD-3); allewiki/-Dateien SUCCESS (keine Inhalts-Mutation);git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag). - Story 3.4 →
done(Step-04-Review-Abschluss, 2026-08-19): der Review-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention, Story-3.1/3.2/3.3-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-4-…→done,last_updated→ 08-19-2026 16:40 (Präzisions-Rückgewinnung auf HEAD-FormatHH:MM); Spec-Frontmatterstatus: 'in-review' → 'done',review_loop_iteration: 0; Spec-## Spec Change Log-Review-Loop-1-Eintrag +## Suggested Review Order(Review-Trail: Synthese-Sektion → §7/§8 → Sandbox-Nachweis → Provenienz/Status) verankert. Review-Ergebnis (Loop 1, 3 Subagenten — blind-hunter / edge-case-hunter / verification-gap, kein Loopback): keine intent_gap/bad_spec; Stapel Patches (compiler.md §5.10: Reflektiertheits-Selbsttest-Muster auf Zeilenanfangs-Label erweitert^(Quelle|Source) [A-Z][A-Za-z0-9_ -]*:, Body-Reihenfolge deterministisch über Beleg-Anker LC_ALL=C, Konsolidierungs-Kriterium Befund-Äquivalenz, Duplikat-Fall + Orphan-Kontrolle in Pkt. 8, Stil-/Genus-Korrekturen; Sandbox:git add -A-wiki-Staging entfernt → Pkt.-8-??-Sicht lebendig, S5-Pkt.-8-??-Negativkontrolle (Ghost-Datei-HARD-FAIL), N1-Stimulus-Kommentar, neue Szenarien N2 Disagreement (AD-16, §5.10 Pkt. 3/7) + N3 AD-4c-Übernahme-Marker — erstmals = 10 Szenarien S1–S6 + N1–N3 + FW, Exit 0 dreimal re-executiert, 30 harte PASS-Assertionen; S1/S2-log.md-Multi-Source-Listen; log.md-/Spec-/sprint-status-Konsistenz); 4 Defers →deferred-work.mdappend-only (AD-16/AD-4c-reale-Anwendung Home Epic-4, Orphan-Kontrolle Home Story 3.8, Umlaut/Em-Dash-Sandbox-Normalisierung Home Story 3.8, Frozen-„Nickel"-Typo Re-Negotiation); Rejects dokumentiert. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story);schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3, geprüft). Sandbox re-executiert: 10/10 Szenarien PASS, Exit 0. - Story 3.4 — Step-03-Abschluss Audit (2026-08-19): Sandbox-Nachweis re-executiert (Story-3.4-Sandbox,
bash _bmad-output/implementation-artifacts/sandbox-3-4/run-sandbox.sh, Linux-Semantik auf einem/tmp-Baum, Exit 0) — jetzt S1–S6 + N1–N3 + Form-Wahl-Probe FW = 10 Szenarien (zuvor 7): N1 NO_OP-SYNTHESE ergänzt (deckt die I/O-Matrix-ZeileNO_OP_SYNTHESE, Story-3.3-U4-Muster: zweite committete Quelle mit redundanter Evidenz zum selben Thema → keine Form greift → No-Op als Nicht-Form: volle Byte-Identität vonalpha.md/log.md/index.md, keingenerated.at-Bump, kein sources-Zusatz, keinlog.md-Eintrag, Probe leer = Ghost-Diff-negativ — PASS), N2 DISAGREEMENT (AD-16-Default, §5.10 Pkt. 3/7: widersprüchliche Aussagen zweier Quellen werden nicht still zu einer scheinbar eindeutigen Aussage zusammengeführt; beide Behauptungen + je Beleg bleiben, kein(e; f)-Falsch-Multi-Beleg,Disagreement:-Eintrag inlog.md— Epic-4-Interface — PASS) und N3 AD-4c-UEBERNAHME-MARKER (Kontext-Marker-Muster „übernommen ausgammaauf Basis vonraw/gamma-v1.md#S-1, nicht eigenständig belegt"; eigenständig belegte Aussagen tragen den Marker nicht;raw/gamma-v1.mdwird nicht als eigenesources-Quelle eingetragen — PASS). S5-Pkt.-8-??-Negativkontrolle nun lebendig: eine ungetrackte Nicht-Ziel-Datei (ghost.md) außerhalb der erlaubten Ziel-Pfade wird von der??-Sicht als Duplikat/Ghost-Diff HARD-FAIL erkannt (Story-3.3-U9-Muster, nicht vacuous). S5-Mechanik korrigiert (auditierte&&-Verkettung vonassert_invariant/assert_frontmatterersetzt): die Erhaltungs-Invariante wird in Non-Exiting-Varianten aufgespalten (inv_viol+assert_frontmatter_ok), S5-Setup als regelkonforme Anlage (delta + Index-Link + log-Eintrag) restrukturiert — der Verstoß sitzt jetzt ausschließlich in der Struktur-Ebene (unbefugter Keyfoo:); Path-Set-Ebene teils erwartet gehalten, teils das Erkennen des Struktur-Verstoßes hart assertiert (P2-Element (6), Vertrag §3.3/§3.4-Subset — nicht vacuous) — PASS. Matrix-Test-Audit (step-03): alle 7 I/O-Matrix-Zeilen abgedeckt+bestanden — HAPPY_SYNTHESE_NEUANLAGE→S1, HAPPY_SYNTHESE_KONSOLIDIERUNG→S2, HAPPY_SYNTHESE_UPDATE→S4, NO_OP_SYNTHESE→N1, ANEINANDERREIHUNG_NEGATIV→S3, STRUKTUR_ERHALT→S5, SYNTHESE_OVERLAP_FORMCROSS→FW. Spec-## Tasks & Acceptance: alle 4 Execution-Tasks[x]. Layout-/Struktur-/AD-3-/Erhaltungs-Invariante-Verifikation erneut bestanden (git status --porcelain -- wiki/ausschließlichwiki/log.md;schema/validator.md/schema/wiki-compiler.md/raw/unverändert). - Story 3.4 «Wissen aus mehreren Sources synthetisieren — gemischte claim-granulare Provenienz operationalisieren» (Implementierung, Instruktions-Story D-3;
sprint-status.yaml: Key3-4-wissen-aus-mehreren-sources-synthetisierenin-progress):schema/compiler.md→ Revision 2.9 — die Synthese-Dimension (AD-4, FR-7; §7-Vorbehalt:343aufgelöst) als neue Sektion §5.10 „Synthese aus mehreren Sources (Story 3.4)" verankert (nach §5.9, vor §6): (1) Synthese-Stimulus — ≥ 2 belegenderaw/-Quellen desselben Themas per §2-Interpretation → eine Synthese-Einheit; einzelne Quelle bleibt auf §5.9-/§3.2-Pfad; (2) Ein-Ziel-Repräsentation (FR-7 AC-1) — ein Synthese-Concept über einen Ziel-Pfad (§5.7-Routing),sources-Liste ≥ 2 Einträge, deterministisch lexikografisch nachresource(LC_ALL=C, AD-17h/A0-19), getrennte Zusammenfassungs-Concepts je Quelle verboten (FR-7); (3) gemischte claim-granulare Provenienz (AD-4a/4b, A0-3) — je Aussage Inline-raw/-Verweis §5.5, Multi-Beleg-Konsolidierung (§5.5-Semikolon-Form, voller Pfad je Beleg; keine Beleg-Tilgung AD-4), AD-16-Default (widersprüchliche Aussagen bleiben, Disagreement inlog.md— Epic-4-Interface); (4) AD-4c-Übernahme-Marker („übernommen aus<Concept>auf Basis von<source>, nicht eigenständig belegt" — nie alleinige Provenienz); (5) Reflektiertheits-Selbsttest (FR-7 AC-4/NFR-7) — keine per-Source-Zusammenfassungs-Struktur („Quelle A: …/Quelle B: …"), grepbasiertgrep -nE 'Quelle [A-Z]:|Source [A-Z]:', Befund = textuell benannter Instruktions-Selbsttest-FAIL (NFR-4), vor Run-Abschluss zu beheben; (6) §5.6-Pin unverändert + Form-Wahl-Klassifikationsprobe (Story-3.3-Defer U2/U7) — Überlapp-Einheiten an die §5.9-Abgrenzungs-ReihenfolgeKorrigieren → Präzisieren → Erweitern → No-Op(erste zutreffende Form, AD-17h), Textgenauigkeits-Rahmen der übrigen Formen je Teilbestand; (7)log.md-Eintragspflicht — „Story 3.1-Update" bei Synthese-Update, Anlage-Eintrag bei neuem Synthese-Concept (disambiguierbar), Multi-Source-Liste +<Baseline-Commit>(R-1); (8) Erhaltungs-Invariante (§5.9 Pkt. 5 gilt unverändert) + Determinismus-Vertrag — Ziel-Pfad via §3.2/§5.7,sources-Lexikografie, Konsolidierung/Form-Zuordnung deterministisch;generated.at-Wanduhr-Gap bleibt A0-20-Konvention, Home Story 3.8. §7: Synthese-Vorbehalt aufgelöst („in §5.10 verankert"); Scope-Einleitung um §5.10 geöffnet; verbleibende 3.x-Themen: Leasing/Dirty-Tree → Story 3.5/3.6. §8: Revisionslog Revision 2.9 mit Abschlussklausel (keine Änderung anschema/wiki-compiler.md/schema/validator.md/raw/AD-3; keine neue §7-Invaliditätsklasse; kein Standalone D-3; keine Vertragsänderung; keine fünfte Update-Form — Abgrenzungs-Reihenfolge §5.9 unverändert, Synthese = Querschnitt; kein Leasing-Scope; Commit-Boundary-Regel unverändert). Sandbox-Nachweis (re-executiert 2026-08-19, ab Workspace-Root,bash _bmad-output/implementation-artifacts/sandbox-3-4/run-sandbox.sh; Linux-Sandbox-Semantik auf einem/tmp-Baum, nie der realewiki/-Baum; Exit 0, zweimal re-executiert): Mini-Bundle mitalpha/gamma-Root-Concepts; Szenarien S1–S6 + N1–N3 + Form-Wahl-Klassifikationsprobe FW (10), harte Pass/Fail-Assertionen (Exit 1; damit inzwischen 10 Szenarien, Exit 0, zweimal re-executiert): S1 NEU-ANLAGE (zwei Quellenraw/synth-a.md+raw/synth-b.md→ ein Synthese-Conceptdelta,sources≥ 2 lexikografisch LC_ALL=C — PASS, gemischte §5.5-Belege je Aussage — PASS, keine per-Source-Struktur — PASS, Index-Link Punkt 11 + Anlage-Eintrag — PASS, Probe{delta index log}— PASS, Frontmatter — PASS), S2 KONSOLIDIERUNG (redundante Aussage in beiden Quellen → eine konsolidierte Aussage mit Multi-Beleg-Semikolon-Form(raw/synth-c.md#S-1; raw/synth-d.md#S-1)— PASS, keine Beleg-Tilgung AD-4 — PASS, Probe{delta index log}— PASS), S3 NEGATIV-KONTROLLE ANEINANDERREIHUNG („Quelle A:/Quelle B:"-Struktur wird vom Reflektiertheits-Selbsttest erkannt — nicht vacuous — und durch integrierte, provenance-versehene Aussagen umgebaut (NFR-4) — PASS), S4 SYNTHESE-UPDATE (zwei Quellen treffen den bestehenden Pfadalpha→ §5.9-Formwahl ERWEITERN,sources-Zuwachss2+s3lexikografisch, bestehende belegte Aussagen byte-identisch, »Story 3.1-Update«-Eintrag, Probe{alpha log}— PASS; Index-Link unverändert, §5.9 Pkt. 3), S5 STRUKTUR-/FRONTMATTER-INVARIANTE (unbefugter Keyfoo:im Synthese-Concept → Frontmatter-Subset-HARD-FAIL, Pkt. 8/P2-Element (6) — PASS; Pkt.-8-??-Negativkontrolle lebendig: ungetrackte Nicht-Ziel-Dateighost.md→ Duplikat/Ghost-Diff-HARD-FAIL, nicht vacuous), S6 ZWEI-RUN-IDENTITÄT (AD-17h/A0-19) (zwei unabhängige Synthese-Runs über dieselben zwei Quellen → byte-identisches Ergebnis:delta.md/log.md/index.md-SHA-256 identisch je Lauf, auch nach Commit — PASS), N2 DISAGREEMENT (AD-16, §5.10 Pkt. 3/7) (widersprüchliche Quellen-Befunde → beide Behauptungen + je Beleg bleiben, kein(e; f)-Falsch-Multi-Beleg,Disagreement:-Eintrag inlog.md— Epic-4-Interface — PASS), N3 AD-4c-ÜBERNAHME-MARKER (Kontext-Marker „übernommen ausgammaauf Basis vonraw/gamma-v1.md#S-1, nicht eigenständig belegt"; eigenständig belegte Aussagen tragen den Marker nicht;raw/gamma-v1.mdals übernommene Quelle nicht insources— PASS), FW FORM-WAHL-KLASSIFIKATIONSPROBE (Story-3.3-Defer U2/U7: gemischte Einheit mit Ersetzungs-Befund → erste zutreffende Form KORRIGIEREN; Ablösung mit Ersetzungs-Multi-Beleg, alter Wortlaut erhalten AD-16-Default, Nebenbefund byte-identisch,sources≥ 2 lexikografisch, Probe{alpha log}— PASS). Erhaltungs-Invariante §5.9 Pkt. 5 wird hart erzwungen (Proben-Einträge normalisiert ⊆ {betroffener Pfad, log} ∪ Neu-Anlage-Zielpfade ∪ Index;??-Sicht = keine neue Datei außer echten Ziel-Pfaden; kein Ghost-Diff lässt sich still durchschleusen). Status-/Diff-Nachweis: nach diesem Instruktions-Run zeigtgit status --porcelain -- wiki/ausschließlichwiki/log.md(dieser Eintrag) — Erhaltungs-Invariante gewahrt, keine Concept-Inhalts-Mutation (Instruktions-Story, Demonstration per Sandbox). Validator-Verdikt (per-Datei, human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI; unverändert zur Story 3.3, Story 3.4 mutiert keine Concept-Inhalte): alle 7wiki/-Dateien SUCCESS —wiki/index.md(Punkt 11, Bundleroot),wiki/knowledge-kompilation-inkrementell.md,wiki/llm-wiki-prinzip.md,wiki/wissensarchitektur-trennung-states.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1),wiki/log.md(frontmatterlos, Punkt 10),wiki/wissensarchitektur/index.md(frontmatterlos, Punkt 10/11),wiki/wissensarchitektur/source-material.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1; Punkt 11 inkl. Area-Lesart Rev 9).schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3, viagit statusgeprüft); keine neue §7-Klasse; kein Standalone (D-3); keine fünfte Update-Form. Spec-Frontmatter:status: 'in-progress',review_loop_iteration: 0(zum Audit-Zeitpunkt). - Story 3.3 →
done(Step-04-Review-Abschluss, 2026-08-19): der Review-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention, Story-3.1/3.2-Präzedenz: Review-Abschluss setztdoneim selben Loop) ist hier als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-3-…→done,last_updated→ 08-19-2026 13:21; Spec-Frontmatterstatus: 'done',review_loop_iteration: 0; Spec-## Suggested Review Orderverankert (Review-Trail: Abgrenzungs-Mechanik → Struktur-Invariante/P2 → Sandbox-Nachweis → Provenienz/Status). Review-Ergebnis (Loop 1, 3 Subagenten, kein Loopback): keine intent_gap/bad_spec; 1 Stapel Patches (Präzedenz-Reihenfolge + No-Op-Nicht-Form + Korrigieren-Wortlaut-Erhaltung inschema/compiler.md; Sandbox U1–U9 mit 2 neuen Negativ-Kontrollen U8/U9, vollen byte-Identitäts-Assertionen, reellenS-N-Ankern,-eq 1-Konsolidierung, Frontmatter-Reihenfolge/Duplikat); 5 Defers →deferred-work.md; Rejects dokumentiert. Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:git status --porcelain -- wiki/zeigt ausschließlichwiki/log.md(dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story);schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3). Sandbox re-executiert: 9/9 PASS, Exit 0. - Step-04-Review Loop 1 / Patch-Runde (Story 3.3, 2026-08-19): bmad-code-review, 3 Subagenten (blind-hunter 9, edge-case-hunter 2+Minors, verification-gap 18 Findings); Klassifikation (Dedupe → Severity → Route, s. Spec-
## Spec Change LogReview-Loop-1-Eintrag): kein intent_gap, kein bad_spec (kein Loopback) — patch (auto-fixiert) + defer (5 Einträge →deferred-work.mdappend-only) + reject (noise). Patches (auto-fixiert, erneut verifiziert): (1)schema/compiler.md§5.9 Pkt. 2 — Operationelle-Ebene: Abgrenzungs-ReihenfolgeKorrigieren → Präzisieren → Erweitern → No-Op(strikt pro Evidenz-Einheit, erste zutreffende Form — überlappende Kriterien deterministisch gebunden, AD-17h/A0-19); No-Op als Nicht-Form geklärt (eigenes Abgrenzungskriterium + Erhaltungsregel „volle Byte-Identität"); Korrigieren-Struktur-Erhaltung präzisiert (Original-Wortlaut bleibt als abgelöster Bestand erhalten, nur die Aussage-Fortschreibung wechselt); at↔AD-17h-Gap-Kreuzreferenz aufgenerated.at-Konvention (Home Story 3.8). (2) Sandboxrun-sandbox.sh(jetzt 9 Tests U1–U9, Exit 0): U1/U2/U3 byte-Identität auf alle drei bestehenden Aussagen erweitert (Lücke aus V-1); U8 neu — unbefugter Frontmatter-Keyfoo:im YAML → Struktur-Ebene-HARD-FAIL (Pkt. 5/P2-Element (6)) — U9 neu — ungetrackte neue Dateiwiki/neu.md→??-Sicht-Duplikat-HARD-FAIL; U7-le 1→-eq 1+ konsolidierter log-Eintrag verlinkt jetzt beide raw/-Quellen (raw/alpha-v2.md + raw/alpha-v3.md, Pkt. 4);assert_frontmatterum canoniche Reihenfolge + Duplikat-Prohibition erweitert; realeS-N-Anker (Markdown-Headings) in allen raw/-Evidenzdateien statt Prosa-„Stelle S-N" — die#S-N-Fragmente lösen jetzt im Rohdokument auf (§5.5-Anker-Semantik); U3 verändert den Wortlaut der abgelösten Aussage nicht mehr (omrotierte-Tense). (3)wiki/log.md: Spec-Frontmatter-Status-Mismatch korrigiert (in-progress→in-review, Review-Handoff). (4)sprint-status.yaml last_updated: Präzisions-Regression zurückgesetzt (08-19-2026 13:21, HEAD-Format08-19-2026 13:14-Familie); General-Verhalten des Sync-Steps als Defer notiert. Defers (5,deferred-work.mdappend-only): last_updated-Präzision (Sync-General), frozen Story-3.1-Typos „Schärferung/Formata" (Re-Negotiation), U6-„auch nach Commit"-Überzeichnung + at↔AD-17h-Gap (Home Story 3.8), U2-Selbsterfüllung + U7-Ordnungs-Rationale, Umlaut/Em-Dash-Normalisierungs-Politik im Sandbox-Evidenztext. Rejects (noise): U6-log.md-SHA-Reproduzierbarkeit (random$BASE-SHA konstruktionsbedingt), Diff-Artefakt-Pfad-Präfix, Spec-Change-Log „leer" (per Konvention erst in Review-Loops befüllt). Re-executierte Verifikation (2026-08-19, ab Workspace-Root): Sandbox 9/9 PASS, Exit 0 (re-runnablebash _bmad-output/implementation-artifacts/sandbox-3-3/run-sandbox.sh);grep -n "Struktur-Erhaltungsregel\|operationelle\|Revision 2.8" schema/compiler.md→ 5 Marker; AD-3git status --porcelain -- schema/validator.md schema/wiki-compiler.md raw/leer; kein Standalone (D-3), keine neue §7-Klasse, kein Leasing-Scope. Spec-Frontmatter:status: 'in-review',review_loop_iteration: 0; Spec-## Spec Change LogReview-Loop-1-Eintrag befüllt. - Story 3.3 «Bestehende Concepts erweitern/präzisieren/korrigieren — Update-Formen operativ schärfen» (Implementierung, Instruktions-Story D-3;
sprint-status.yaml: Key3-3-bestehende-concepts-erweitern-präzisieren-korrigierenbleibtin-progress— der Review-Abschluss-Flipdoneerfolgt gemäß Workflow-Konvention durch den Review-Schritt):schema/compiler.md→ Revision 2.8 — die drei Update-Formen operationell ausformuliert (deterministische Brücke Regel → Run, AD-17h/A0-19; kein neuer normativer Inhalt, kein Schema-/Validator-/raw/-Change AD-3; der frozen Story-3.1-Regeltext bleibt unverändert als normative Basis, die operationellen Regeln sind die Präzisierungsebene darunter — keine Re-Negotiation): (1) §5.9 Pkt. 2 — Präzisierungsebene je Update-Form (Sub-Bullet an die Commit-Boundary-Regel angefügt): je Form (a) Abgrenzungskriterium (aus der committeten Evidenz — neue belegte Aussage → Erweitern; Schärfung einer bestehenden Formulierung/Abgrenzung ohne Ersatz → Präzisieren; Ersetzung einer fehlerhaften/überholten → Korrigieren; keines davon → No-Op, engere Auslegung — gleicher Git-State + gleiche Eingabemenge → identischer Update-Vorgang), (b) Struktur-Erhaltungsregel (das Geschützte aus FR-6/AC-2: Frontmatter-Subset — nursources-Zuwachs um echten neuen Beleg +generated.at-Bump, kein neuer Key, keine Entfernung ohne Beleg; bestehende belegte Aussagen nicht umgeschrieben ohne dass Präzisieren/Korrigieren greift; §5.5-Inline-Verweise gültig soweit Beleg Body-Bestand; §5.6-Linkform unverändert, keine neuen Links außer bei echten Beziehungen) und (c) Textgenauigkeits-Rahmen (Schärfen an der Aussage selbst, kein Satz-Umbau, kein Neuschreiben ohne Ersetzungsbeleg). (2) §5.9 Pkt. 5 — Erhaltungs-Invariante um den Struktur-Erhaltungs-Bezug ergänzt: die Diff-Probe (§5.9 Pkt. 5, D-1-Form) verifiziert zwei Ebenen — die Pfad-Mengen-Ebene (bestehender Teilmenge-Vergleich) und die Struktur-Ebene je berührtem Pfad (pro betroffenem Concept-Pfad über die Pkt.-2-Regeln geprüft: Frontmatter-Subset, keine Umschreibung belegter Aussagen außerhalb der Formen, Inline-Verweise, Linkform; Verstöße textuell benannt NFR-4, vor dem Commit zu beheben, sonst Ghost-Diff mit Rollback). (3) §5.9 Pkt. 6 — P2-Check-Block um den Struktur-Erhaltungs-Check erweitert (Element (6), zusätzliches textuelles Element: keine unbefugten Keys — Vertrag §3.3/§3.4-Subset, keine stille Löschung — AD-16/„Korrigieren"-Form, Links unverändert/keine neuen ohne echte Beziehung — §5.6-Pin). (4) §8 Revisionslog Revision 2.8 mit Abschlussklausel (keine Änderung anschema/wiki-compiler.md/schema/validator.md/raw/AD-3; keine neue §7-Invaliditätsklasse; kein Standalone D-3; keine Vertragsänderung; Commit-Boundary-Regel unverändert; kein Leasing-Scope — AC-4 → Story 3.5/3.6, AD-17.3-Hinweis unverändert in §7). Sandbox-Nachweis (re-executiert 2026-08-19, ab Workspace-Root,bash _bmad-output/implementation-artifacts/sandbox-3-3/run-sandbox.sh; Linux-Sandbox-Semantik auf einem/tmp-Baum, nie der realewiki/-Baum; Exit 0): Mini-Bundle mit Conceptalpha+ nicht-betroffenem Kontroll-Conceptbeta; committete Neuevidenz je Szenario; alle drei Update-Formen + No-Op durchgespielt: U1 ERWEITERN (neue belegte Aussage angefügt, bestehende drei Aussagen byte-identisch — PASS; Probe{alpha log}⊆ erlaubte Menge — PASS; Frontmatter-Konformität — PASS), U2 PRAEZISIEREN (Aussage an ihr selbst geschärft, Position/Struktur erhalten, Beleg nachgeführt §5.5 — PASS; Probe{alpha log}— PASS; Frontmatter — PASS), U3 KORRIGIEREN (fehlerhafte Aussage explizit abgelöst + Ersetzungsbeleg, keine stille Löschung AD-16-Default — PASS; Probe{alpha log}— PASS; Frontmatter — PASS), U4 NO_OP (Evidenz bereits vollständig enthalten — byte-identisch, keinat-Bump, keinsources-Zusatz, keinlog.md-Eintrag — PASS; Probe leer = Ghost-Diff-negativ — PASS), U5 NEGATIV-KONTROLLE (simulierter Ghost-Diff aufbetawird von der Assertions-Mechanik zuverlässig als HARD-FAIL erkannt — PASS, Mechanik nicht vacuous), U6 ZWEI-RUN-IDENTITÄT (AD-17h/A0-19: zwei unabhängige Runs über dieselbe Evidenz → byte-identischer Update-Vorgang — SHA-2566b148dd1…(alpha.md) /a6d08427…(log.md) identisch je Lauf, auch nach Commit — PASS), U7 MEHRFACH_TREFFER (I/O-Matrix-Zeile; zwei Neuevidenzenraw/alpha-v2.md+raw/alpha-v3.mddesselben Runs treffen denselben Concept-Pfadalpha→ ein konsolidiertes Update: eine Body-Mutation, einlog.md-Eintrag, ein konsolidiertersources-Zuwachss2+s3, eingenerated.at; Zuwachs-Sicht-Ordnungv2-vor-v3(lexikografischer Tie-Break bei Body-Ende); bestehende drei Aussagen byte-identisch; Probe{alpha log}— PASS; Frontmatter-Konformität — PASS). Die Erhaltungs-Invariante (§5.9 Pkt. 5) wird als harte Assertion erzwungen: Proben-Einträge (normalisiert:wiki/-Präfix +.md-Suffix strippend) ⊆ {betroffener Concept-Pfad, log}; bei Verstoß oder neuer Datei (??-Sicht) → HARD-FAIL + Exit 1; kein Ghost-Diff lässt sich still durchschleusen (U5). Status-/Diff-Nachweis: nach diesem Instruktions-Run zeigtgit status --porcelain -- wiki/ausschließlichwiki/log.md(dieser Eintrag) — Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt, keine Concept-Inhalts-Mutation (Instruktions-Story, kein neues committetesraw/-Material; Demonstration per Sandbox). Validator-Verdikt (per-Datei, human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI; unverändert zur Story 3.2, Story 3.3 mutiert keine Concept-Inhalte): alle 7wiki/-Dateien SUCCESS —wiki/index.md(Punkt 11, Bundleroot),wiki/knowledge-kompilation-inkrementell.md,wiki/llm-wiki-prinzip.md,wiki/wissensarchitektur-trennung-states.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1),wiki/log.md(frontmatterlos, Punkt 10),wiki/wissensarchitektur/index.md(frontmatterlos, Punkt 10/11),wiki/wissensarchitektur/source-material.md(Punkte 1/2/6/7/8/9/11/12/13/14, EC-1; Punkt 11 inkl. Area-Lesart Rev 9).schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3, viagit statusgeprüft); keine neue §7-Klasse; kein Standalone (D-3). Spec-Frontmatter:status: 'in-review'(Step-04-Review-Handoff),review_loop_iteration: 0. - Step-04-Review Loop 3 / Patch-Runde (Story 3.2, 2026-08-19):
schema/compiler.md→ Revision 2.7 (D-3-Instruktions-Patch, kein neuer Inhalt; bmad-code-review Loop 3, 4 Layer; Nutzer-Entscheidungen D-1/D-2/D-3/D-4/D-5 = 1/1/1/1/1, jeweils empfohlene Option; + Patches P-1/P-2). (1) D-1 — Statuskette abgeschlossen: der Review-Loop-Abschluss-Flipin-progress → done(Sprint-Sync-Konvention; Story-3.1-Präzedenz: Review-Abschluss setztdoneim selben Loop) ist mit dieser Zeile als eigener dokumentierter Schritt nachgeführt;sprint-status.yaml-Key3-2-…bleibtdone(die gefrorene Always-Klausel→ in-progressbeschreibt den Implementierungsstand; Review-Handoff/-Abschluss ist der übliche Folgezustand, s. Sprint-Status-Workflow-Kommentar). (2) D-2 — Sandbox erweitert:run-sandbox.shum T5LINK_FOLLOWING_ZYKLUS(Zyklus alpha ↔ omega via Backlink; besuchte Menge → endliche, doppelungsfreie Candidate-Listeomega,alpha— der Zyklus endet), T6TRAVERSAL_REACH_ONLY(Termtrafo-gebiettrifft nur die Area-index.md→ die gewurzelten Concept-Pfadetrafo/delta,trafo/epsilonsind die Kandidaten;index.mdselbst ist kein Concept-Kandidat) und T7TERM_ABLEITUNG_SYNONYM(Registry-Test-Doppel:Quanten Protocol→ Normalisierung →quanten-protocol(Canon-Treffer),QuantenProtocol→quantenprotocol(Variante-Treffer) → canonische Formquanten-protocol; Negativ-Fallnicht-in-registry→ wie notiert, kein stiller Ausschluss); T2-Kommentar zuindexkorrigiert (Stufe-a-Treffer aufwiki/index.mdlöst Stufe b aus — kein Concept-Kandidat); P-1 — T1/T4 jetzt mit harten Pass/Fail-Asssertionen (exit 1bei Abweichung). (3) D-3 — Selbsttest-Beleg (b) neu belegt: die Rev-2.5-Log-Zeile (b) beschrieb einen nicht committierten Baum (Termquanten-protocol,sub/beta.md, SHA-256159092bb…) — Stale-Evidenz-Falle (B1-Präzedenz); die Rev-2.5-Zeile bleibt historisch unverändert (append-only, Vertrag §5), der korrigierte Nachweis steht in dieser Zeile (re-executierte Sandbox-Ausgabe, s. (5)(b)). (4) D-4 — §3.2-Pkt.-3b-Ordnung: Stufe-a-Treffer jetzt rein lexikografisch (LC_ALL=C) innerhalb jeder Stufe; die Term-Verarbeitungsreihenfolge dient nur der Interpretation/Erhebung, nicht der Listen-Ordnung (dieselbe Treffermenge → identische Liste, AD-17h/A0-19). (5) D-5 —schema/canonical-terms.md-Lookup-Semantik: Lookup-Verfahren deterministisch fixiert (lowercasing →[-–_ ]→--Kollaps → Lookup der normalisierten Form; Spalten tragen ausschließlich normalisierte Formen), Eindeutigkeits-Invariante (jede normalisierte Form in genau einem Eintrag — Canon oder Variante, nie beides/zweimal) + Konflikt-Verfahren (keine stille Anhängung;deferred-work.md/Ask-First, analog zur Umbenennungs-Regel). (6) P-2 — Typos korrigiert:Determinsmus→Determinismus(compiler.md §8-Referenz, diese Log,deferred-work.md-Belege),§3.2-beankert→§3.2-angeankert(Rev-2.5-Log-Zeile),Membrum→Mitglied(Spec-Design-Notes),Konventionelle Determinismus-Lücke→Bekannte Determinismus-Lücke(deferred-work.md-Beleg;compiler.md:53sagt „Bekannte"),Resovierung→Auflösung(Spec-Change-Log/-Verification). Re-executierte Selbsttest-Belege (2026-08-19, ab Workspace-Root; Sandbox-Run exit 0): (a) live:grep -rl 'A0-18' --exclude=log.md wiki/→ exaktwiki/knowledge-kompilation-inkrementell.md(ein Concept-Pfad,log.mdausgeschlossen); (b) Mini-Sandbox (_bmad-output/implementation-artifacts/sandbox-3-2/run-sandbox.sh, re-executierbar): alle 7 Tests PASS — T1 Membership (exaktalpha; Kontaminations-Kontrolle ohne Exklusion trifft zusätzlichlog), T2 Zwei-Run-Identität (identisch), T3 NO_MATCH (leer), T4 Vereinigungalpha,gamma(hart assertierte), T5 LINK_FOLLOWING_ZYKLUS (endlich, doppelungsfrei, Zyklus endet), T6 TRAVERSAL_REACH_ONLY (trafo/delta,trafo/epsilon), T7 TERM_ABLEITUNG_SYNONYM (beide Varianten →quanten-protocol; Negativ-Fall wie notiert); (c)git status --porcelain -- wiki/nach diesem Run: ausschließlichwiki/log.md(dieser Eintrag) — Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt, kein Ghost-Diff (die Instruktions-Story mutiert keine Concept-Inhalte). Abschlussklausel Rev 2.7:schema/wiki-compiler.md/schema/validator.md/raw/unverändert (AD-3); keine neue §7-Invaliditätsklasse; kein Standalone (D-3); keine Vertragsänderung; Commit-Boundary-Regel unverändert.sprint-status.yaml: Key bleibtdone,last_updated→ 08-19-2026. Spec-Frontmatter:status: 'done',review_loop_iteration: 3; Spec-### Review Findingsabgehakt (5 Decisions + 2 Patches + 4 Defers →deferred-work.md). - Step-04-Review Loop 2 / Patch-Runde (Story 3.2, 2026-08-19):
schema/compiler.md→ Revision 2.6 (D-3-Instruktions-Patch, kein neuer Inhalt; bmad-code-review VG-Findings verarbeitet). (1) §4-Überschrift wiederhergestellt — die §3.2-Einfügung (Rev 2.5) hatte die Überschrift## 4. Synthetisieren (Provenienz & Trust)verdrängt (der §3.2-Sektionskopf ersetzte die §4-Überschrift; der gesamte Frontmatter-Body hing kopflos unter §3.2; alle §4-Referenzen wären dangling geblieben). Der §4-Kopf ist zwischen §3.2-Body und dem Frontmatter-Body wieder eingefügt. (2) rg-Flag-Defekt behoben (--excludeist kein rg-Flag): die Rev-2.5-Form in diesem Log- plus dem §3.2-Eintrag, §3-Pkt.-2, §3.2-Pkt.-2a, §5.9-Worked Example (Pkt. 7) und §7 nutztenrg -l '<term>' --exclude=log.md wiki/— nicht-existent (ripgrep 14.1.1:rg --exclude→unrecognized flag; GNU grep unterstützt--exclude, ripgrep nutzt-g '!log.md'/--glob '!log.md'). Die Instruktion nutzt jetzt tool-korrekte Formen: rgrg -l '<term>' -g '!log.md' wiki/(native Glob-Exklusion) bzw. GNU grepgrep -rl '<term>' --exclude=log.md wiki/; die §5.6-Formeln (bereits GNU-grep) und §5.9-Pkt.-7-Erhebung adoptieren die Exklusion. Dieser Eintrag zitiert den alten Defekt historisch (verlaufsgetreue Log-Führung; die operative Form ist jetzt tool-korrekt). (3) §5.9-Worked Example (Pkt. 7) auf die Exklusions-Form gehoben (rg -l 'FR-12' -g '!log.md' wiki/), Kommentarwiki/log.mdexkludiert gemäß §3.2-Pkt.-2a. (4) Mini-Sandbox re-executierbar verankert (_bmad-output/implementation-artifacts/sandbox-3-2/run-sandbox.sh, Muster Story-3.1-Sandbox S1–S6): Tests T1–T4 (Membership-Pin — Term auf Concept-Bodies UNDlog.mdverteilt, Candidate-Liste nur Concept-Pfade; Zwei-Run-Identität AD-17h; NO_MATCH → leere Candidate-Liste → UNTOUCHED_CONCEPT; Mehrfach-Treffer → Vereinigung + lexikografische Ordnung). (5)deferred-work.md-Em-Dash-Eintrag append-only ergänzt (Home: Story 3.8) — die §3.2-Pkt.-1b-Kollaps-Klasse deckt En-Dash/Bindestrich/Unterstrich/Leerzeichen, aber nicht den Em-Dash—; dieser Handoff wird nicht stillschweigend gelöst, sondern als offene Determinismus-Frage dokumentiert. Re-executierte Selbsttest-Belege (2026-08-19, ab Workspace-Root): (a) rg-Form real:rg -l 'A0-18' -g '!log.md' wiki/→ exaktwiki/knowledge-kompilation-inkrementell.md; ohne Exklusionrg -l 'A0-18' wiki/→ zusätzlichwiki/log.md(Selbstkontamination — der §3.2-Pkt.-2a-Fall, reell belegt); (b) GNU-grep-Äquivalentgrep -rl 'A0-18' --exclude=log.md wiki/→ identischwiki/knowledge-kompilation-inkrementell.md; (c)rg -l 'FR-12' -g '!log.md' wiki/→wiki/knowledge-kompilation-inkrementell.md(§5.9-WE-Korrektur reell); (d) Mini-Sandbox T1–T4 → siehe Rev-2.6-Eintrag; (e)git status --porcelain→wiki/nurlog.md(dieser Eintrag; Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt),schema/compiler.md+deferred-work.mdsind außerhalbwiki/(kein Teil der Diff-Probe). Abschlussklausel Rev 2.6:schema/wiki-compiler.md/schema/validator.md/raw/unverändert (AD-3, geprüft viagit status); keine neue §7-Invaliditätsklasse; kein Standalone (D-3); keine Vertragsänderung; Commit-Boundary-Regel unverändert. (Der Rev-2.5-Implementierungs-Eintrag oben bleibt unverändert — dokumentiert den Zustand bei Rev-2.5-Veröffentlichung inkl. der damaligen--exclude-Form; historische Korrektheit des Logs.) - Story 3.2 «Relevanzbestimmung textual-deterministisch umsetzen (grep/ripgrep + Markdown-Traversal + Link-Following)» (Implementierung, Instruktions-Story D-3;
sprint-status.yaml: Key3-2-relevanzbestimmung-textual-deterministisch-umsetzen-grep-ripbacklog→in-progress):schema/compiler.md→ Revision 2.5 — die beiden Story-3.2-Vorbehalte aufgehoben (§3 Pkt. 2 + §7) und die feinkörnige Relevanz-Findungsmechanik als neue Sektion §3.2 „Relevanzbestimmung (Story 3.2)" verankert (nach §3, vor §4; Pkt. 2 bleibt Kern-Anker „Erhebung nach §3.2"): (1) Term-Ziehverfahren deterministisch — bedeutungstragende Token-Folgen nach §2-Interpretation; Normalisierung lowercasing +[-–_ ]→--Kollaps (En-Dash/Bindestrich/Unterstrich/Leerzeichen); kanonischer Schreibweisen-Resolver als committete, append-only Registryschema/canonical-terms.md(canon. Form + erlaubte Varianten,[]; Bestandteil des Git-States → Auflösung pinbar, AD-17h/A0-19); genau eine canon. Form je Semantik (A0-18); kein stiller Ausschluss nicht auflösbarer Varianten (Verwendung wie notiert); mehrere Terme je Einheit → Vereinigung; bekannte Determinismus-Lücke: Em-Dash—fällt nicht unter den[-–_ ]-Kollaps → an Story 3.8 übergeben (nicht still hinzugefügt); (2) dreistufige term-übergreifende Erhebung überwiki/— (a)rg -l '<term>' --exclude=log.md wiki/(GNU-grep-Äquivalentgrep -rl '<term>' --exclude=log.md wiki/;log.mdstrukturell exkludiert — die Candidate-Liste ist auf Concept-Pfade definiert,log.mdist kein Kandidat), (b)index.md-Traversal (gewurzelte Erreichbarkeit Root → Area → Concept, §5.8; TRAVERSAL_REACH_ONLY; fehlende Bundleroot → Run-FAIL V-1), (c) Link-Following mit besuchter Menge (file-relativ, §5.7 Pkt. 4; Zyklen enden — LINK_FOLLOWING_ZYKLUS); (3) Candidate-Liste + Determinismus-Vertrag — relative OKF-Pfade ohne.md(Stripwiki/-Präfix +.md-Suffix), Zuwachs-Sicht-Ordnung mit Reihenfolge auch für Stufe-b/c (lexikografischer Tie-Break; AD-17h/A0-19), keine Duplikate (besuchte Menge), NO_MATCH → leere Candidate-Liste → UNTOUCHED_CONCEPT (Story-3.1-Pfad, Ghost-Diff-negativ); Determinismus-Selbsttest (Membership + Zwei-Run-Identität) unten belegt. §8-Normreferenzen: AD-13 (bereits gelistet, §3.2-beankert), A0-18 (Deterministische Relevanzbestimmung, §3.2), A0-19 (Determinismus-Vertrag — war im Ist-§8 noch nicht gelistet, als Determinismus-Referenz ergänzt, §3.2/AD-17h) und PRD OQ-3 (Compilation Scope, §3.2) ergänzt;schema/canonical-terms.mdals Resolver-Registry referenziert. Abschlussklausel Rev 2.5:schema/wiki-compiler.md/schema/validator.md/raw/unverändert (AD-3); keine neue §7-Invaliditätsklasse; kein Standalone (D-3); keine Vertragsänderung; Commit-Boundary-Regel unverändert.deferred-work.md: der Story-3.1-Defer-Eintragepic-3-context.md(„Home: Story-3.2-Handoff") als aufgegriffen markiert (append-only); der F17/Em-Morphologie-Handoff (Story 3.8) bleibt bestehen. Determinismus-Selbsttest (Membership + Identität, re-executiert 2026-08-19, ab Workspace-Root): (a)grep -rl 'A0-18' --exclude=log.md wiki/zweimal ausgeführt → beide Ausgaben identisch, exaktwiki/knowledge-kompilation-inkrementell.md(ein Concept-Pfad;log.mdausgeschlossen — der--exclude=log.md-Fakt ist ehrlich dokumentiert: ohne die Exklusion würdelog.mdab dem Moment selbst „Kandidat", in dem dieser EintragA0-18zitiert — die B1-log.md-Kontamination ist damit geschlossen); (b) mini-Sandbox-Baum (/tmp/sb32-…, Termquanten-protocolauf Concept-Bodies undlog.mdverteilt) → exakte Candidate-Liste nur Concept-Pfade (wiki/alpha.md,wiki/sub/beta.md;log.mdausgeschlossen,wiki/gamma.mdohne Term nicht getroffen); normalisiertalpha,sub/beta; Zwei-Run-Identität (SHA-256159092bb…≡); Kontrolle ohne--exclude→log.mdwird Kandidat (B1-Falle belegt und geschlossen); (c) §5.6-Formeln unverändert re-executierbar: Formel 2 (Form-Check)0(Exit 0), Formel 3 (Dangling-Check) keine Ausgabe, Formel 4 Ist-Zählung 38 (keinwiki/-Dateimenge-Change durch Story 3.2 — keine Re-Baseline nötig). Validator-Lauf (human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI): alle 7wiki/-Dateien SUCCESS (Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1 — unverändert zur Story 3.1, Story 3.2 mutiert keine Concept-Inhalte;wiki/log.mdbleibt frontmatterlos, Punkt 10); das per-Datei-Verdikt ist der Ausführungs-Nachweis der Spec-Verification Pkt. 4 und AC 5.git status --porcelain -- wiki/nach diesem Run: ausschließlichlog.md(modifiziert) — Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt, kein Ghost-Diff. - Story 3.1 «Inkrementellen Datenfluss implementieren (Interpret → Reconcile → Synthesize → Update)» →
done(bmad-code-review Loop 2, 4 Layer: blind-hunter / edge-case-hunter / verification-gap / acceptance-auditor; Diff-Baseline802a557→efc543c; Nutzer-Entscheidungen D-1/D-2/D-3/D-4 = 1/1/1/1, jeweils empfohlene Option):schema/compiler.md→ Revision 2.4.2 (alle 4 Decision-Resolutions + 16 Patches, rein textuell — kein Code, kein Standalone, keine neue §7-Klasse): (1) D-1: Diff-Selbsttest (Pkt. 5) operationalisiert — Probe =git diff --name-only <Baseline-Commit> -- wiki/plusgit status --porcelain -- wiki/(erfasst ungetrackte??-Dateien — die Duplikat-Kontrolle braucht diese Sicht;git diffallein ist blind dafür), Probe-Zeitpunkt vor dem Commit (am Ende des P2-Blocks, nach den Mutationen; nach dem Commit wäre die Probe vacuous, AD-17f), erlaubte Menge um Neu-Anlage-Zielpfade (§5.1/§5.7) ergänzt (Misch-Runs: keine fälschlichen Ghost-Diffs), Pfad-Normalisierung (Stripwiki/-Präfix +.md-Suffix vor dem Teilmenge-Vergleich), Rollback-Mechanik deterministisch benannt (git checkout -- <wiki/pfad>für modifizierte Pfade, ungetrackte löschen, Indexgit checkout -- <index>); (2) D-2: R-1-Baseline deterministisch —<Baseline-Commit>(HEAD der vorherigen Mutations-Boundary, AD-17f) wird vom Producer imwiki/log.md-Run-Eintrag notiert (voller SHA; AD-14: Git liefert Historie, nicht Domain-State — deshalb die Notiz); Diskrepanz-Regel:git diffgewinnt, SHA-256 bleibt Sekundär-Fingerprint; Fallback: ohne vorherige Mutations-Boundary gelten alleraw/-Dateien als Zuwachs; (3) D-3: INPUT_UNCOMMITTED-Abbruch implementiert — neuer P2-Check-Block-Element (1) Input-Zustand: Working-Copy vonraw/+wiki/gegen HEAD prüfen, bei Abweichung benannter Abbruch „published/committed Input erforderlich" (AD-17a) vor Interpretation und vor jeder Mutation — die gefrorene I/O-Matrix-Verpflichtung ist damit als Zustandsprüfung + Abbruchmeldung umgesetzt (zuvor nur Referenz auf §1 Pkt. 1); die Spec↔Anker-Divergenz (frozen Spec zitiert 3× „§1.1", §1 ist eine nummerierte Liste Pkt. 1–4 ohne §1.1-Label) ist als dokumentierte Fußnote in Rev-2.4.2 gesichert (Spec bleibt frozen); (4) D-4: Sandbox-Edge-Test-Nachweis — die fünf I/O-Matrix-Szenarien (HAPPY_PATH_UPDATE, UNTOUCHED_CONCEPT, CONCEPT_COLLISION_BESTEHEND, CHANGE_DETECTION, PRE_RUN_RECONCILE) + die D-3-Abbruch-Kontrolle sind als re-executierbares Skript (_bmad-output/implementation-artifacts/sandbox-3-1/run-sandbox.sh,bash …ab Workspace-Root, Sandbox-Bäume unter/tmp) mit konkreten deterministischen Ausgaben in der Spec-## Verification Record (Ausführungs-Beleg, 2026-08-19)verankert — die Verweise „in der Spec-Verification enthalten" (dieses Log,deferred-work.md) sind damit auflösbar; (5) Instruktions-Präzisierungen: P2-Block-Zeitpunkt (nach Reconcile, am Anfang der Mutationsphase; Diff-Probe am Block-Ende), No-Op-Kandidat-Regel (Evidenz bereits vollständig enthalten → keine Mutation/keinat-Bump/keinlog.md-Eintrag, byte-identisch), Mehrfach-Treffer-Reihenfolge für alle Einheiten (Zuwachs-Sicht-Ordnung; lexicografisch nur Tie-Break — AD-17h), Update-Pfad-Rollback in §5.3 Pkt. 3 (modifizierte Pfade aus Baseline-Commit wiederherstellen),generated.at↔AD-17h-Gap explizit benannt (Home: Story 3.8 — Wanduhr-aterzeugt bei gleichem Input unterschiedliche Bundle-States; Konvention A0-20 bleibt bindend, Wechsel = Ask-First), Term-Ableitung als §2-Interpretation abgegrenzt (Erhebung mit festem Term deterministisch; Term-Mechanismus Story 3.2), Link-Following mit besuchter Menge (keine Schleife bei zyklischen Links), Worked Example (Pkt. 7) auf den realen Ist-Baum korrigiert (rg -l 'FR-12' wiki/trifftwiki/knowledge-kompilation-inkrementell.md, nichtwissensarchitektur/source-material.md— das Rev-2.4.1-Beispiel enthielt den Term nicht), stale-Anker (§3.2-Kollisionsprüfung,§3-Voraussetzungsprüfung, §5.8-Pkt.-3-Zeiger „Pkt. 1" → „Pkt. 2") nachgeführt. Abschlussklausel Rev 2.4.2:schema/wiki-compiler.md/schema/validator.md/raw/unverändert (AD-3); keine neue §7-Invaliditätsklasse; kein Standalone (D-3); keine Vertragsänderung; Commit-Boundary-Regel unverändert. Review-Loop-2-Aufarbeitung zum Implementierungs-Eintrag (2026-08-18, oben): (a) der dortige (b)-Diff-Selbsttest-Beleg zitierte die Vor-Rev-2.4.1-Formgit diff --stat -- wiki/— die operative Probe ist seit Rev 2.4.2 die D-1-Form (git diff --name-only <Baseline-Commit> -- wiki/+git status --porcelain -- wiki/); (b) der Implementierungs-Eintrag dokumentierte „Revision 2.4" — der Story-3.1-Commitefc543centhält Revision 2.4 + 2.4.1 (Step-04-Review-Patch-Runde 2026-08-18, indeferred-work.mdals „Story-3.1-Review-Protokoll" protokolliert) und ist jetzt auf 2.4.2 (dieser Eintrag) fortgeführt; (c) Statuskette:in-progress(Implementierungs-Eintrag) →review(Review-Handoffefc543c) →done(dieser Eintrag — Loop-2-Abschluss: 4 Decision-Resolutions + 16 Patches, keine unresolved Findings; spec-Frontmatterstatus: 'done'+review_loop_iteration: 2deckungsgleich). Selbsttest-Beleg (re-executiert 2026-08-19, ab Workspace-Root, D-1-Probe-Form;<Baseline-Commit>=802a5576eb4bbf54761a947e43e68b7e7ea9d67d= Review-Baseline, hier als Konventions-Demonstration notiert — bei echten Run-Einträgen ist es der HEAD der vorherigen Mutations-Boundary, D-2): (a) Instruktions-Integrität —grep -n "5.9" schema/compiler.md→ §5.9-Sektion vorhanden;grep -n "Aktualisierung ist Epic 3" schema/compiler.md→ kein Treffer (Hold ersetzt, unverändert); (b) Diff-Selbsttest (Erhaltungs-Invariante) —git diff --name-only 802a557… -- wiki/→ ausschließlichwiki/log.md(dieser Eintrag; keine Concept-Datei, kein Index, kein Ghost-Diff auf nicht betroffenen Pfaden — die Instruktions-Story mutiert keine Concept-Inhalte; FT-6/FR-12) +git status --porcelain -- wiki/→M wiki/log.md(tracked, modifiziert — im erlaubten Satz; keine??-Einträge = keine ungetrackten neuen Dateien = kein Duplikat); normalisiert:log⊆ erlaubte Menge (log.md); (c) Validator-Lauf (human-mechanisch ausgeführte Text-Instruktionschema/validator.mdRev 9, D-3 — kein CLI): alle 7wiki/-Dateien SUCCESS (Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1 — unverändert zur Story 2.5, Story 3.1 mutiert keine Concept-Inhalte); das per-Datei-Verdikt ist der Ausführungs-Nachweis der Spec-Verification Pkt. 3 und AC 5; (d) Sandbox-/Edge-Tests (I/O-Matrix) — ausgeführt, echte Outputs in der Spec-## Verification Record (Ausführungs-Beleg, 2026-08-19)(re-executierbar:bash _bmad-output/implementation-artifacts/sandbox-3-1/run-sandbox.sh): S1 HAPPY_PATH_UPDATE (Probe →alpha,log; 0 untracked), S2 UNTOUCHED_CONCEPT (leere Probe), S3 CONCEPT_COLLISION_BESTEHEND (nurM-Einträge, kein??), S4 CHANGE_DETECTION (außschließlichraw/alpha-v2.md; SHA-25621e7fc1d…identisch), S5 PRE_RUN_RECONCILE (Run-FAIL V-1, Zustand sauber), S6 INPUT_UNCOMMITTED (benannter Abbruch „published/committed Input erforderlich (AD-17a)").sprint-status.yaml:3-1-inkrementellen-datenfluss-implementieren-interpret-reconcilereview→done,last_updated→ 08-19-2026.
2026-08-18
- Story 3.1 «Inkrementellen Datenfluss implementieren (Interpret → Reconcile → Synthesize → Update)» (Implementierung, Instruktions-Story D-3):
schema/compiler.md→ Revision 2.4 (inkrementeller Datenfluss als Erweiterungs-Instruktion, rein textuell — kein Code, kein Standalone, keine neue §7-Klasse): (1) §3 Reconcile — Pkt. 2 Kollision-Hold durch Update-Routing ersetzt (bestehende Wissenseinheit → Update-Kandidat im bestehenden Concept-Pfad, kein Duplikat, kein stummer Überschreib, AD-16-Default-Erhaltung; der Epic-3-Abbruch entfällt) + textuell-deterministische Kandidatenliste (Konzept-/Term-Überschneidung viagrep/ripgrep,index.md-Traversal, Link-Following — AD-13; feinkörniger Relevanz-Mechanismus Story 3.2 vorbehalten); (2) neue §5.9 «Inkrementelles Update bestehender Concepts (Story 3.1)» (nach §5.8, vor §6): Update-Stimulus = Reconcile-Kandidatenliste (§3 Pkt. 2); Mutationsmechanik — Erweitern (Absatz/Beleg ergänzen), Präzisieren (Aussage schärfen, Beleg neu/nachgeführt, §5.5), Korrigieren (ersetzte Aussage + Ersetzungsbeleg, keine stille Löschung, AD-16-Default),sourcesnur um echte neue Belege ergänzen (§5.5-Pkt.-1b-Relokation, Vertrag §3.3-Subset),generated.at= aktueller Run-Zeitstempel (A0-20, einmaligeat-Festlegung pro Run), vorhandenes human-verifiedbleibt stehen; Index-/Link-Form unverändert (§5.6-Pin, kein neuer Link bei reinem Body-Update);log.md-Eintragspflicht (Vertrag §5, „Story 3.1-Update"-Markierung; Disagreement-Fälle dokumentiert — Epic-4-Interface, keine Korrektur-Klassifikation hier); Erhaltungs-Invariante (FT-6/FR-12) + re-executierbarer Diff-Selbsttest — nach jedem Rungit diff --stat -- wiki/, geänderte Dateien ⊆ (betroffene Concepts ∪log.md∪ nachgeführteindex.md), Ghost-Diff = textuell benannter Instruktions-Verstoß (NFR-4), nie „Regenerate Everything" (AD-5, A0-6); Run-Vorphase-Bausteine — Defer R-1 Input-Zuwachserkennung (Change-Detection viagit diffaufraw/und/oder SHA-256-Record ausraw/**/source.md) und Defer P2 Pre-Run-Reconcile-Check-Block (Zielpfade, Quellen-Existenz EC-1, Betroffenheits-Kandidatenliste,wiki/index.md-V-1) als wiederverwendbare textuelle Check-Blöcke (D-3, keine neuen Prozesse); Worked Example; (3) §0-Aufruf — sechs Phasen für Neu-Anlage- und Update-Variante präzisiert (Reconcile/Mutieren betreffen auch bestehende Concepts; AD-17a-Input-Regel referenziert, §1.1 bleibt); (4) §5.7 Pkt. 3 / §5.8 Pkt. 2/3 — Top-Level-Kollisions-Referenz auf das Update-Routing (§3 Pkt. 2/§5.9) nachgeführt (die bisherige Epic-3-Abbruch-Formulierung „aktualisieren ist Epic 3" ist entfernt: Das Update lebt in §5.9; das Schutzprinzip der Erhaltung — „nicht stumm überschreiben" — bleibt als AD-16-Default in §3 Pkt. 2/§5.9 erhalten); (5) §7-Selbstbegrenzung — Update-Thema aus dem Epic-3-Vorbehalt entlassen, Scope-Einleitung um die Update-Variante geöffnet; die verbleibenden 3.x-Themen im Vorbehalt benannt: Synthese über mehrere Concepts → Story 3.4 (AD-4/FR-7), Leasing/Dirty-Tree-Schutz → Story 3.5/3.6 (AD-17a..f), Relevanz-Verfeinerung → Story 3.2; (6) §8-Normreferenzen um A0-6/FR-6/FR-12 ergänzt (AD-5/AD-6/AD-17h bereits gelistet) + Revisionslog 2.4 mit Abschlussklausel (kein Vertrag-/Validator-/raw/-Change, keine neue §7-Klasse, kein Standalone, Commit-Boundary-Regel unverändert).deferred-work.md: Defer R-1 (Input-Zuwachserkennung) und P2 (Pre-Run-Reconcile-Check-Block) als aufgegriffen (2026-08-18, Story 3.1 — §5.9) markiert (append-only, bestehende Einträge unverändert).schema/wiki-compiler.md/validator.md/raw/unverändert (AD-3); keine neue §7-Klasse; kein Standalone (D-3).sprint-status.yaml:3-1-inkrementellen-datenfluss-implementieren-interpret-reconcilebacklog→in-progress(dieser Statuswechsel findet mit Story 3.1 statt; Sprint-Status bereits synchronisiert) →review(Review-Handoff, der übliche Folgezustand nach dem Implementierungs-Eintrag, s. Sprint-Status-Workflow-Kommentar „Dev moves story to 'review'"). Selbsttest-Beleg (re-executierbar, ab Workspace-Root): (a) Instruktions-Integrität —grep -n "5.9" schema/compiler.md→ neue §5.9-Sektion gefunden;grep -n "Aktualisierung ist Epic 3" schema/compiler.md→ kein Treffer (Hold ersetzt); §7 enthält „Update" nur noch als „aus dem Vorbehalt entlassen"-Verweis, nicht als offenes Vorbehalts-Thema; (b) Diff-Selbsttest (Erhaltungs-Invariante) —git diff --stat -- wiki/: ausschließlich die von Story 3.1 berührten Dateien (wiki/log.md; keine Concept-Datei, kein Index, kein Ghost-Diff auf nicht betroffenen Pfaden — die Instruktions-Story mutiert keine Concept-Inhalte; FT-6/FR-12); (c) Validator-Lauf (human-mechanisch ausgeführte Text-Instruktionschema/validator.md, D-3 — kein CLI): alle 7wiki/-Dateien SUCCESS (Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1 — unverändert zur Story 2.5, Story 3.1 mutiert keine Concept-Inhalte); das per-Datei-Verdikt ist der Ausführungs-Nachweis der Spec-Verification Pkt. 3 und AC 5. Sandbox-/Edge-Tests (I/O-Matrix): siehe Spec-Verification — isolierte Sandbox-Bäume für HAPPY_PATH_UPDATE (Update-Routing: bestehender Pfad aktualisiert, kein Duplikat), UNTOUCHED_CONCEPT (kein Diff auf nicht betroffenem Pfad), CONCEPT_COLLISION_BESTEHEND (Update statt Duplikat), CHANGE_DETECTION (nur Zuwachs übergit diff/SHA-256-Record), PRE_RUN_RECONCILE (Check-Block vor jeder Mutation; fehlende Bundleroot → Run-FAIL, V-1) — deterministische Formel-Ausgaben/Nachweise je Szenario. - Validierungs-Revision 9 (autorisiert; Epic-2-Retro F-02/AI-2-R-5, de-dupliziert mit
code-review-2-1-item-2; ausgeführt 2026-08-18, Quelle:_bmad-output/implementation-artifacts/spec-autorisierte-validator-revision-9-punkt-11-area-lesart.md):schema/validator.md→ Revision 9. Fünf inhaltliche Änderungen, keine neue §7-Klasse (kein Punkt 15; Vertragschema/wiki-compiler.md+ Instruktionschema/compiler.md+raw/+adapters/+ allewiki/-Concept-Dateien unverändert, AD-3/D-3): (1) Punkt-11-Area-Lesart formalisiert (§3 Zelle: Für ein Area-Concept genügt die file-relative Referenz in der Area-index.mddes nächsten Vorfahren; identitätsstiftend ist das Pärchen Area-Präfix (= bundle-relativer Verzeichnispfad der Area-index.md) + Link-Ziel ohne.md-Endung (AD-7a), textuelle Nennung der Bundle-Identität entfällt — Live:wissensarchitektur/source-materialüber](source-material.md)inwiki/wissensarchitektur/index.md; Normalisierung:././-Strip,..nicht Teil der Ein-Ebenen-Form); (2) Punkt-4-Vorlage umresolved=<pfad>-Token ergänzt + Semantik verankert (…|file://|resolved=<pfad>; §6.2: nur bei Ablehnung durch aufgelöste Lage außerhalbraw/, Wert = aufgelöster workspace-relativer Pfad) — Fixture 4a ableitbar; (3) Innen-Ebenen-Punkt-6-Fixtures in §7.3 (Negativ:role: xinsources-Eintrag → FAIL Punkt 6; Positiv-Gegenzeile ausschließlich erlaubte Keys → SUCCESS); (4) §7-Fixtures 11a (Negativ: Area-Concept unverlinkt →Concept nicht verlinkt=wissensarchitektur/source-materialam realen Live-Area-Namen; Positiv: file-relativ verlinkt → SUCCESS); (5) §8-Normreferenz-Notiz „Story 2.3 (Link-Form)" um die Rev-9-Area-Lesart ergänzt. Nachgeführt: Header auf „Revision 9" + Revisionslog-Eintrag Revision 9 (append-only, bestehende Einträge unangetastet). Zertifizierung (mechanisch, D-3): (a) Fixture 4a isoliert — Samplesources: [{resource: README.md}]mit existierenderREADME.mdan der Workspace-Root →FAIL … Punkt 4: resource ausserhalb raw/ oder unzulaessiger Pfad (…|resolved=README.md), kein Vorab-FAIL durch Punkt 3/andere Punkte (Punkt-4-vor-3-Priorität §6.2); (b) Innen-Ebenen-Sample isoliert —sources:\n - resource: raw/prd/prd-wow20-2026-08-14.md\n role: x(Datei existiert, sonst-valides Sample) → genauPunkt 6: nicht autorisiertes Feld (Key=role) bzw. unautorisierter Key in sources/generated/verified, kein anderer Punkt (Isolations-Prinzip §7.3); (c) Punkt-11-Area-Lesart-Fixtures — Negativ 11a (Area-index.mdverlinktsource-material.mdnicht) →FAIL … Punkt 11: Index-Regel verletzt (Concept nicht verlinkt=wissensarchitektur/source-material); Positiv 11a (file-relativer](source-material.md)-Link, Live-Lage) → SUCCESS (kein „nicht verlinkt"-FAIL); (d) reales Bundle gegen den revidierten Validator (human-mechanisch ausgeführte Text-Instruktion) — alle 7wiki/-Dateien weiterhin SUCCESS (Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1; Punkt 11 inkl. Area-Lesart), identisch zur Story-2.4/2.5-Lage — keine neu ausgelösten FAILs, Abschluss-Eigenschaft des §7-Katalogs gewahrt. Mechanische Belege (ausgeführt 2026-08-18): (e) AD-3/D-3-Freeze —git diff --name-only <base>..HEAD -- schema/wiki-compiler.md schema/compiler.md raw/ adapters/→ 0 Treffer (keine dieser Dateien geändert); (f) Live-Invariant der 7/7-SUCCESS-Behauptung —grep -qF '](source-material.md)' wiki/wissensarchitektur/index.md→ exit 0 (Area-Lesart lebend verankert).sprint-status.yaml:code-review-2-1-item-2undepic-2-retro-item-14-…(AI-2-R-5) →done(closed 2026-08-18, resolution mit Rev-9 + ref auf die Rev-9-Runde). - Story 2.5 «Progressive Discovery über
index.mdbereitstellen» (Implementierung, inkl. Review-Loop-1-Korrektur + Review-Loop-3-Patches, bmad-code-review 2026-08-18, 4 Layer; Nutzer-Entscheidungen 1/1):schema/compiler.md→ Revision 2.3 (neue §5.8 „Progressive Discovery überindex.md(Story 2.5)"): (1) Discovery-Pfad — Bundlerootwiki/index.md→ Area-index.md(frontmatterlos) → Area-Concepts in gepinnter §5.6-Form; Root-Concepts direkt aus der Bundleroot (AD-9, FR-11; gewurzelte Erreichbarkeit Root → Area → Concept, §5.7 Pkt. 5); (2) gewurzelte Erreichbarkeit als deterministisches Discovery-Kriterium + re-executierbarer Selbsttest (UNREACHABLE AREA: <area>für von der Bundleroot unverlinkte Area — AD-9;NESTED AREA: <area>für Zwei-Ebenen-Kandidaten, geprüft über zwei Läufe der Selbsttest-Formel: (A) Ein-Ebenen-Area-index.md→ Root-Verlinkungsstatus, (B)find wiki -mindepth 3 -type f -name "*.md"→ jede Datei in Tiefe ≥ 3 ist ein Zwei-Ebenen-Kandidat, Meldung je Verletzung genau eine; beide Läufe ohne Ausgabe = Discovery-SUCCESS; Instruktions-Selbsttest, schließt die Validator-Navigation-Lücke ohne Validator-Change — kein neuer §7-Punkt, AD-3); (3) konsolidierte Zwei-Ebenen-Kartografie (antwortet und schließt Defer F-07): Root + eine Area-Ebene;wiki/a/b/ist keine zugelassene Anlageform —wiki/a/b/concept.md-Kandidat (auch ohneindex.md; die Area-ohne-Index-Lücke, die der reineindex.md-Scan übersähe) wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten (keine Datei, kein Index-Link, textuelle MeldungNESTED AREA: <area>, Run „teilweise erfolgreich", NFR-4) — Loopback-1-Renegotiation (menschen-autorisierte Option A): Träger ist der §5.8-lokale Hold, nicht der §3.2-Kollisions-Hold (der bleibt der Dateikollision bestehender Concepts vorbehalten — ein brandneuer Zwei-Ebenen-Pfad kollidiert nie mit einem existierenden); (4) Suche = Consumer-grep (grep -rn <term> wiki/rekursiv bzw.rg <term> wiki/, AD-13 — keine Such-Datenbank, kein Embedding, kein Index-Datei-Format; NFR-3), (5) Discovery-Demo (optional, kein MOVE) — bei Durchführung: Formel-4-Re-Baseline-Pflicht (neuer Zuwachs-Run), sonst bleibt Formel 438 ≡ 38. Nachgeführt: §7 Story-2.5-Vorbehalt auf „Suche"-Rest gekürzt (Navigation/Area-Indizes jetzt §5.8-verankert, Suche = Consumer-Thema; die Vorbehalt-Zeile lag in der Baselinemainbei Z. 253, nach dem §5.8-Einschub bei Z. 285), §8 Normreferenzen (AD-9/AD-13 → §5.8, FR-11 → §5.7 Pkt. 5/§5.8, NFR-3 neu) + Revisionslog 2.3. Selbsttest-Beleg (re-executiert, die gehärtete Loop-3-§5.8-Pkt.-2-Selbsttest-Formel vonschema/compiler.md§5.8 Pkt. 2 (CWD-Präguard, Erreichbarkeits-Check auf Markdown-Linksyntax](pergrep -qF,LC_ALL=C sort -u) als wörtlicher Einzel-Quote-sh -c '…'-String — Live-Baum: keine Ausgabe, Exit 0; CWD-Präguard-Kontrolle außerhalb der Workspace-Root:SELBSTTEST-SETUP-Fehler: Workspace-Root (wiki/index.md fehlt)+ Exit 1): Areawissensarchitekturaus der Bundleroot verlinkt (Root→Area, Selbsttest-Lauf A); die Area→Concept-Verlinkung (source-material.mdin der Area-index.md) ist durch den Validator Punkt 11 mechanisch abgedeckt (kein Duplikat im Selbsttest). Sandbox-/Edge-Tests (I/O-Matrix, deterministische Formel-Ausgaben): (a) HAPPY — gewurzelte Erreichbarkeit ohne Verletzung; (b) AREA_UNREACHABLE — Area-index.mdexistiert, Bundleroot unverlinkt →UNREACHABLE AREA: <area>(textuell benannter Instruktions-Selbsttest-Befund, kein Validator-Punkt); (c) NESTED_AREA_KANDIDAT —wiki/a/b/index.md- undwiki/a/b/concept.md-Kandidaten (je einzeln) →NESTED AREA: a(erste Ebene der nicht-zulässigen Struktur; bei mehreren Dateien unter derselben ersten Ebene Konsolidierung überLC_ALL=C sort -u); Sandbox-Nachweis auf einem synthetischen Baum mit angelegter Testdatei (Zwei-Zustands-Klarstellung Loop-3-Decision-2: die Formel meldet bestehende Tiefe-≥-3-Dateien; der Hold-Zeitpunkt hält den Erstellungskandidaten an, ohne Datei). Die Sandbox-Kontrollen decken die I/O-Matrix-Szenarien AREA_UNREACHABLE und NESTED_AREA_KANDIDAT ab. §5.6-Formeln unverändert re-executierbar: Formel 2 (Form-Check)0(Exit 0), Formel 3 (Dangling-Check) keine Ausgabe, Formel 438 ≡ 38(Ist ≡ Extraktion aus dem Run-Kopf862cf41— keine neue Baseline nötig, keinewiki/-Dateimenge-Änderung durch Story 2.5; die Demo ist optional und würde bei Durchführung die Re-Baseline auslösen). Validator-Lauf (human-mechanisch ausgeführte Text-Instruktionschema/validator.md, D-3 — kein CLI): alle 7wiki/-Dateien SUCCESS (Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1) — unverändert zur Story 2.4; das per-Datei-Verdikt ist der Ausführungs-Nachweis für die Spec-Verification Pkt. 3 und AC 5.sprint-status.yaml:2-5-progressive-discovery-über-index-md-bereitstellenbacklog→in-progress(Implementierungs-Eintrag) →review(Review-Handoff, dieser Eintrag — die gefrorene Spec-Vorgabe „→in-progress" beschreibt den Implementierungsstand, der Review-Handoff ist der übliche Folgezustand, s. Sprint-Status-Workflow-Kommentar „Dev moves story to 'review'"); Loop-3-Abschluss mit diesem Review:review→done(Sprint-Status synchronisiert, spec-Frontmatterstatus: 'done'deckungsgleich,review_loop_iteration→ 3).schema/wiki-compiler.md/validator.md/raw/unverändert (AD-3); keine neue §7-Klasse; kein Standalone (D-3); keine Vertragsänderung. - Story 2.4 «Deterministische Bereichszuordnung & Concept-Hierarchie» (Review-Loop 2, bmad-code-review, 4 Layer): 3
decision-needed(Nutzer-Entscheidungen 1/1/1) + 11patchumgesetzt, 4defer(s.deferred-work.md), 8 dismissed.schema/compiler.md→ Revision 2.2: (1) Formel 3 quellenbasierte../schema/*-Exklusion (Decision 2): die Exklusion greift nur, wenn die Quell-Datei auf Bundleroot-Ebene liegt (dirname <quelle>=wiki); aus Area-Quellen läuft einstufiges../schema/…durch Auflösung + Containment + Existenztest (Prosa war bereits „nur aus Root-Dateien", die Formel folgt jetzt der Prosa); (2) Formel 4 Re-Baseline auf den Run-Kopf (Decision 1): Extraktions-Commit862cf410c624072833cd959da9a2fb26235716f6statt66451b6…— der gepinnte Selbsttest lief auf dem Zuwachs-Baum deterministisch38 ≠ 30= Run-FAIL (bekannt-böser Zustand aus Loop-1-A2, nur halb geheilt); jetzt 38 ≡ 38 (re-executiert: Ist=38, Extraktion862cf41=38;66451b6/30dokumentiert den Vor-Zuwachs-Zustand, bleibt als Referenz dieses Runs); (3) §5.7 Pkt. 1(a) Treffer-Prädikat + Tie-Break (Decision 3): „inhaltlich deckungsgleichen Eintrag" (Urteil, AD-13-Verstoß) ersetzt durch textuelles Prädikat (Identität des Link-Ziels ≡ kanonischer Name des Themas) + Mehrfachtreffer-Regel (Bundleroot-Links vor Area-Links, dann lexicografische Pfad-Reihenfolge); (4) file-relative Pin-Wortwahl in §5.3 Pkt. 3 (Oxymoron „file-relativ bundle-relativ" aufgelöst), §6.6-Zelle und §7-Bullet nachgeführt; (5) §7-Scope-Einleitung „Root-Ebene" → „Root-Ebene und in Areas gemäß §5.7"; (6) Typos („akte-Baseline" → „aktuelle Baseline", Doppel-Leerzeichen §6.6); (7) „Kopf dieser Spezifikation" → „Baseline-Commit des letzten Zuwachs-Runs".wiki/wissensarchitektur/index.md: Prosa auf den tatsächlichen Area-Inhalt gekürzt (nursource-material.mdexistiert; Link-Form/Discovery-Topics waren übergezeichnet). Negativ-Test-Nachweis (Sandbox-Baum, exakte Formel-Ausgabe): (a) TOP_LEVEL_COLLISION — Kandidat mit IDllm-wiki-prinzip:wiki/llm-wiki-prinzip.mdexistiert → §3.2-Hold „Concept existiert bereits — Aktualisierung ist Epic 3" (keine Datei, kein Index-Link, keinlog.md-Eintrag); (b) AREA_WITHOUT_INDEX — Sandbox-wiki/foo/ohneindex.md: wörtliche Punkt-11-MeldungFAIL wiki/foo/ Punkt 11: Index-Regel verletzt (Area ohne index.md=foo)(Validator-§7.1-Fixture-Wortlaut, kein inventiertesAREA_WITHOUT_INDEX-Label); (c) DIVING_NON_EXISTENT —[v](../fehlt.md)aus Area-Concept →DANGLING: ../fehlt.md; (d) Out-of-Bundle-Escape (Loop-1-A1-Kontrolle) —[x](../../README.md)→DANGLING: ../../README.md,[y](../../schema/compiler.md)→DANGLING: ../../schema/compiler.md; (e) In-Bundle-../schema/aus Area (Loop-2-Kontrolle) —[z](../schema/compiler.md)auswiki/wissensarchitektur/source-material.md→DANGLING: ../schema/compiler.md(vor dem Loop-2-Patch: still exkludiert, leere Ausgabe — Sandbox-Nachweis des gefixten Löchs). Positiv-Kontrolle nach allen Patches: Formel 2 (Form-Check) =0(Exit 0), Formel 3 (Dangling) = keine Ausgabe, Formel 4 =38 ≡ 38(beide re-executiert). Status-Nachführung (korrigiert zum obigen Implementierungs-Eintrag):sprint-status.yaml2-4-…backlog→in-progress(Implementierungs-Eintrag) →review(Review-Handoff, dieser Eintrag); die gefrorene Spec-Vorgabe („→in-progress") beschreibt den Implementierungsstand, der Review-Handoff ist der übliche Folgezustand (s. Sprint-Status-Workflow-Kommentar „Dev moves story to 'review'"). Loop-Abschluss mit diesem Review:review→done(Sprint-Status synchronisiert,sprint-status.yamllast_updatednachgeführt; spec-Frontmatterstatus: 'done'deckungsgleich,review_loop_iteration→ 2). Validator-Lauf-Korrektur zum obigen Eintrag: die gültige Datei-Zählung ist 7wiki/-Dateien (Bundleroot,log.md, 3 Root-Concepts, Area-index.md, Area-Concept) — der obige Verweis auf „Punkt 9/10" für die Differenz zur Spec-Zahl 6 war falsch belegt (Punkt 9 =okf_version-/Bundleroot-type-Verbot außerhalb der Bundleroot;log.mdwird über Punkt 10/V-2 mitvalidiert); die Spec-Zahl 6 ist eine frozen-Defizitzählung (Defer indeferred-work.md).schema/wiki-compiler.md/validator.md/raw/unverändert (AD-3); keine neue §7-Klasse; kein Standalone (D-3). - Story 2.4 «Deterministische Bereichszuordnung & Concept-Hierarchie» (Implementierung):
schema/compiler.md→ Revision 2.1 (neue §5.7 „Deterministische Bereichszuordnung & Concept-Hierarchie": Routing-Regel textual-deterministisch — (a) First-Class-Link aus dem bestehendenindex.md-Baum → Bereichwiki/<area>/<concept>.md, (b) Default Root-Ebene, neue Areas nur konsolidiert; nie Embedding/Vector, AD-7c/A0-10/AD-13; kanonische ID-Normalisierung AD-7a/A0-8 mit Beispieltabelle; Top-Level-Kollisions-Hold → fixierter §3.2, kein neues Prädikat, kein MOVE; file-relatives Link-Auflösungsmodell inkl. Out-of-Bundle-..-Containment; Area-index.md-Regel mit wörtlicher Punkt-11-MeldungFAIL … Punkt 11: Index-Regel verletzt (Area ohne index.md=<area>)— kein inventiertes Label; Worked Example). Nachgeführt: §5.1 Pkt. 1, §5.3 Pkt. 3 (Index-Regel area-bewusst), §5.6 Pkt. 1/2/3/4/5 (file-relativ;../-Exklusion aufgelöst; Formel 3 mit Quell-Datei-Spur + in-Bundle-..-Auflösung + Containment — Out-of-Bundle-..-Escape wirdDANGLING; Formel 4 neu aufbaseline_commit66451b6e6c9e139fb3aa3bbf4b01291e1e2d273a(deklariertebaseline_commit-Werte der Spec-Frontmatter, nicht mehr Story-2.3-7e1f449…; Loop-2: Re-Baseline auf den Run-Kopf862cf41, s. obiger Review-Eintrag), Basename-Filtergrep -v "log.md$"), §6 Pkt. 2, §6.6, §7, §8.deferred-work.md: drei Story-2.4-namige Einträge geschlossen (umgesetzt): bundlerelativ-vs-dateirelativ (→ §5.7 Pkt. 4 file-relativ), Cross-Page-Anker-Stale-Evidenz (→ Ist-Verhalten Fragment-Strip, keine Dangling-Ausgabe), künftiges Area-log.md-Baseline-Bruch (→ Formel 4 Basename-Filter). Neue Areawiki/wissensarchitektur/angelegt:wiki/wissensarchitektur/index.md(frontmatterlos, Vertrag §2/§6, Validator Punkt 10; verlinkt das Area-Concept in der gepinnten §5.6-Form) +wiki/wissensarchitektur/source-material.md(Area-Concepttype: concept,sourcess1=architecture-spine + s2=prd, §5.5-Inline-Verweise + Kontext-Marker, Body-Links auf Root-Concepts in file-relativer../-Form:llm-wiki-prinzip.md,wissensarchitektur-trennung-states.md,knowledge-kompilation-inkrementell.md).wiki/index.md: neue Area-Sektion verlinktwissensarchitektur/index.md(die 3 bestehenden Root-Concept-Links + die 3../schema/-Links byte-identisch, Null-Migration). Formel-4-Re-Baseline: Ist-Zählung auf dem neuen Baum = 38 (log.md-exkludiert;grep -roE '\(raw/'), Baseline-Extraktion aus66451b6= 30 (alter Baum, 4 nicht-log.md-Dateien:index.md+ 3 Root-Concepts;git ls-tree -r + git show, Basename-log.md-Filter) — Dokumentation verlangt die aktuelle Baseline aus66451b6(38 ≠ 30, kein Fehlalarm: Zuwachs-Re-Baseline; Loop-2-Korrektur: Re-Baseline auf den Run-Kopf862cf41,38 ≡ 38, s. obiger Review-Eintrag); die exakte Ist-Zahl hängt am finalen Concept/Body-Stand und wird in der Spec-Verification des Runs belegt.sprint-status.yaml:2-4-deterministische-bereichszuordnung-concept-hierarchiebacklog→in-progress(dieser Statuswechsel findet mit diesem Eintrag statt). Validator-Lauf: alle 7wiki/-Dateien SUCCESS (index.md+log.md+ 3 Root-Concepts + Area-index.md+ Area-Concept; Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1; die Spec-Verification nennt erwartungsseitig „6wiki/-Dateien" — die Differenz erklärt sich durch das reserviertelog.md(Protokoll, wird mitvalidiert, Punkt 9/10), die Validator-Effort-Zahl dieser erfolgten Ausführung ist 7).schema/wiki-compiler.md/validator.md/raw/unverändert (AD-3); keine neue §7-Klasse; kein Standalone (D-3).
2026-08-17
- Story 2.3 «Concepts verlinken — eine erlaubte Linkform» (Implementierung): Linkform auf bundle-relativ mit
.md-Endung gepinnt (Rationale: die 3 bestehenden Concept-Links inwiki/index.mdsind bereits in dieser Form → Null-Migration; Ziele sind explizite Dateien, auch mit Areas eindeutig; Standard-Markdown-Tools lösen ohne Konventionswissen auf — AD-7b, A0-9, FR-10, AD-8). Veränderte Dateien:schema/compiler.md→ Revision 1.8 (neue §5.6 „Concept-Links (Story 2.3)": Pin, Geltungsbereich Concept-Bodies +index.mdmit Ausnahmenraw/-Provenienz (§5.5)/../schema//http/Gleichseit-Anker, vier re-executierbare Selbsttest-Formeln (Bestands-, Form-, Dangling-, Kontakt-mit-raw/-Unverändert-Check, AD-17h), NFR-4-Regel, Worked Example; die „bis Story 2.3"-Klauseln in §5.3 Pkt. 3 + §5.5 Pkt. 1 referenzieren §5.6; §7-Bullet, §8-Normreferenzen AD-7b/AD-8/FR-10/A0-9 + Revisionslog 1.8),wiki/wissensarchitektur-trennung-states.md(zwei inhaltsbegründete Cross-Links in gepinnter Form: →llm-wiki-prinzip.md, →knowledge-kompilation-inkrementell.md, je mit §5.5-konformem Kontextsatz/Inline-raw/-Verweis; keine Frontmatter-/sources-Änderung),deferred-work.md(Linkform-Eintrag geschlossen).wiki/index.mdunverändert (die 3 Concept-Links bereits in gepinnter Form; die 3../schema/-Links außerhalb des Pin-Wirkungsbereichs).sprint-status.yaml:2-3-concepts-verlinken-eine-erlaubte-linkformbacklog→in-progress(dieser Statuswechsel findet mit diesem Eintrag statt). Kontakt-mit-raw/-Unverändert: die Vorkommen-Zählung der Inline-raw/-Verweis-Muster unterwiki/(Selbsttest-Formel §5.6 Pkt. 3, Formel (4)) ist identisch zur ausbaseline_commit7e1f449dynamisch extrahierten Baseline (30,log.md-exkludiert;git ls-tree+git show, deterministisch re-executierbar). Validator-Lauf: alle 5wiki/-Dateien SUCCESS (Punkte 1/6/11/14, EC-1; der Punkt-11-Check bleibt strukturell unverändert und akzeptiert beide Schreibweisen — keine neue §7-Klasse, kein Validator-Change). - Story 2.2 «Claim-granulare Provenienz dokumentieren» →
done(bmad-code-review 2026-08-17, 4 Layer, abgeschlossen): Review aufbb32acd → story-2-2— 1decision-needed(D1 Referenzform → Option 1: Komma-Form als zulässige Variante), 12patch(alle umgesetzt), 4defer, 2 dismissed.schema/compiler.md→ Revision 1.7: defekte Selbsttest-Grep-Formel behoben (ungeschlossene ERE'(raw/|]\(raw/'→'\(raw/'), Komma-Form + Multi-Beleg-Serialisierung in §5.5 Pkt.1, Relokations-Sub-Bullets als 1a/1b nummeriert, drei Marker-Muster, Forward-Referenz-Disambiguierung aufStory 3.1: Inkrementellen Datenfluss implementieren, §8-Normreferenzen um AD-4a/AD-9/AD-13/AD-14/AD-16/FR-16/A0-3 ergänzt.wiki/knowledge-kompilation-inkrementell.mdForward-Referenz-Zitat disambiguiert. Defer W2–W4 (Fragment-Existenz, Marker-Grammatik,sources-id-Eindeutigkeit — keine re-runnable Prüfung ohne Standalone, D-3) + W1 (sources-Closure) indeferred-work.md. Re-Verifikation:sh -c "grep -nE '\(raw/' wiki/*.md"27 Treffer, alle 3 Diagramm-Marker + Forward-Referenz mit exaktem Token,sources-idje Concept eindeutig,wiki-compiler.md/validator.md/raw/unverändert. Klassifikation:review-2-2-klassifikation.md.sprint-status.yaml: Story 2.2 →done. - Story 2.2 «Claim-granulare Provenienz dokumentieren» — Nachrüstung (Datei-Bodies,
index.md,log.md):schema/compiler.mdum §5.5 „Claim-granulare Provenienz" erweitert (nach §5, vor §6): Inline-raw/-Verweis je belegter Aussage +id-Attribution (Vertrag §3.3), Kontext-Marker je Übernahme (übernommen aus<raw-Quelle>(rohe Quelle) bzw. übernommen aus<Concept>auf Basis von<raw-Quelle>, jeweils „nicht eigenständig belegt"), eindeutigesid-Scoping je Concept, Selbsttest-Kriterien (AD-4a/4c, AD-13, AD-17h); Revisionslog (§8) → Revision 1.5 (Nachrüstung) bzw. 1.6 (Review-Patch-Runde: Stellen-Kennungs-Semantik, volle Pfade, Direktübernahme-Marker, worked example, korrigierte Grep-Formel), §7-Selbstbegrenzung entsprechend angepasst.wiki/index.md(Descriptions um(aus <raw-Pfad>)),wiki/knowledge-kompilation-inkrementell.md,wiki/llm-wiki-prinzip.md,wiki/wissensarchitektur-trennung-states.mdnachkonformiert — jede belegte Aussage trägt Inline-Verweis; Übernahmen tragen Kontext-Marker (keine Selbstreferenz, keine Concept-id-Fragmente#s1/#s2). Diagramm-Quell-Deklaration: Das ASCII-Diagramm inwiki/knowledge-kompilation-inkrementell.md(Datenfluss) stammt ausraw/architecture-spine/architecture-spine-2026-08-14.md#AD-5— zusätzlichersources-Eintrag (id: s2) ergänzt; das Diagramm inwiki/wissensarchitektur-trennung-states.md(Sources → Compilation → Knowledge Bundle → Consumers) ausraw/prd/prd-wow20-2026-08-14.md(§ 8.3 Separation of Concerns) — zusätzlichersources-Eintrag (id: s2) ergänzt.sources-idje Concept eindeutig; keine unautorisierten Keys.wiki-compiler.md/validator.md/raw/unverändert. Validator-Lauf: alle 5wiki/-Dateien SUCCESS (Punkte 1/6/11/14, EC-1) — Story 2.2review. - Story 2.1 «Concepts aus Source Material erzeugen (OKF-Konform)» →
done(Human-Review-Freigabe erteilt): Nutzer hat die verbleibende Schwelle (menschliche Review-Freigabe) überschritten — Statusreview→done,sprint-status.yamlnachgeführt. Alle 8 ACs PASS, kein AC-/Vertrags-Blocker; offene Folge-Arbeit (autorisierte Validator-Rev 9) ist kein Story-2.1-Blocker und bleibt als Action-Itemcode-review-2-1-item-2indeferred-work.mdverankert. - bmad-code-review Re-Run Story 2.1 (unabhängig, 4 Layer, Stand nach Validator-Rev-8): alle 8 ACs PASS, 17 Patch / 4 Defer / 2 Dismiss. 15 Patches umgesetzt —
schema/compiler.md→ Revision 1.4 (Prüfgrundlage Rev 8, §6.6-Referenzlabels §4.5/§4.2, §3.2 Kollision-Hold-Run-Fortsetzung, §5.3/§6.3 Rollback-Sequenz, Sprachkorrekturen),wiki/log.md(verlorener Bullet, Rev-8-Datum 08-17),wiki/index.md(Baumdiagramm um Root-Concepts-Ebene), Doku-/Referenz-Konsistenz (deferred-work.mdDedupe + n=21,review-input-dryrun-…md16+2-Auflösung,epic-2-context.mdAD-4c tautologisch, spec Verification/Change-Log,sprint-status.yamlclosed-Datum). 2 Patches auf der gefrorenenvalidator.md(Rev 8) geholdert → nächste autorisierte Validator-Revision (Rev 9: Punkt-4-Grammatikresolved=-Token, Innen-Ebenen-Punkt-6-Fixture-Zeile; s.deferred-work.md). - Story 2.1 «Concepts aus Source Material erzeugen (OKF-Konform)» →
review(Freigabe zur Human-Review): Option-A-Voraussetzung erfüllt — autorisierte Validator-Revision 8 ausgeführt und zertifiziert (s. Eintrag 2026-08-16).spec-2-1-…-Re-Review-Verdikt aktualisiert: Story istdone-fähig; einzige verbleibende Schwelle ist die menschliche Review-Freigabe (review→done). Action-Itemcode-review-2-1-item-1-autorisierte-validator-revision-option→done(Autorisations-Runde:validator-revision-8-autorisationsrunde-f14-innen-ebenen.md).sprint-status.yaml: Story 2.1 →review.
2026-08-16
- Autorisierte Validator-Revision 8 (Option-A-Heilung Story 2.1, ausgeführt 2026-08-17):
schema/validator.mdRevisionslog-Eintrag „Revision 8" + Header-Revisionszahl auf 8 angehoben (behebt OBS-1: Header „Revision 6" vs. Log „Revision 7"). Drei Änderungen: (1) F-14-Negativ-Fixture 4a in §7.1 (Punkt 4:resource: README.mdaußerhalbraw/, existierend →FAIL … Punkt 4; Retrospective F-14); (2) Innen-Ebenen-Key-Subset formalisiert — Punkt-6-Zelle verweist auf die §7.3-Isolations-Notiz (autorisiert, Revision 8); (3) Revisionslog nachgeführt. Vertragschema/wiki-compiler.mdundschema/compiler.mdunverändert (keine neue §7-Invaliditätsklasse). Zertifizierung selbstgeprüft: Fixture 4a isoliert → FAIL Punkt 4 (resolved=README.md) (Punkt 3 nicht verletzt, keine anderen Punkte); Innen-Ebenen-Sample (sources-Eintrag mitrole: xbei existierenderraw/-Datei) → FAIL Punkt 6 (Key=role); reales Bundle (5wiki/-Dateien) → SUCCESS (keine neu ausgelösten FAILs). schema/compiler.mdauf Revision 1.3 — §1-Überschrift ins Deutsche, Prüfgrundlage auf validator.md Revision 7 angeglichen, §6.6-canonical-Reihenfolge-Zeile von ✗- auf reine ✓-Vorgabe korrigiert (kein Validator-FAIL, Label §4.2 statt „§6.4"), §1.2/§1.4-Evidenz-Widerspruch aufgelöst (Artefakt-Ausnahme als dokumentarische Konvention).wiki/log.md-Demonstrationslauf-Einträge an Vertrags-§5-Format angeglichen (- neu:… angelegt (sources: …)). Story 2.1 bleibtin-progress(Option A: Heilung der validator.md-Rev-7-Klarstellung über die nächste autorisierte Validator-Revision).- Step-04-Review (Story 2.1): Nachschärfungen aus den drei Review-Layern (Blind Hunter, Edge Case Hunter, Verification Gap) angewendet —
schema/compiler.mdauf Revision 1.2 (Input-Regel auf AD-17a referenziert statt AD-17.2,sources-Eintrag-Key-Subset in §4.2/§6.5/§6.6 ergänzt,status-Absenz an Vertrag §3.6 angebunden, Bereichs-Ziel-Klarstellung bis Story 2.4, §6.6-Fehlerursachen korrigiert, AD-17f als Commit-Boundary sichtbar),schema/validator.mdauf Revision 7 (§7.3-Isolations-Hinweis auf Innen-Ebenen-Key-Subset erweitert),wiki/index.md-Workspace-Absatz korrigiert (schema/= drei Artefakte: Vertrag, Validator, Compiler),sprint-status.yaml: Story 2.1 →review(Review begonnen).at-Zeitstempel der drei Concepts (2026-08-16T09:23:33Z= 11:23:33 Lokalzeit +0200) decken sich mit den Datei-Mutationszeitpunkten (11:24) — im Review geprüft. - neu:
llm-wiki-prinzipangelegt (sources: raw/prd/prd-wow20-2026-08-14.md) — Root-Concept, Trust-Metadaten A0-20 (generated { by: wow-compiler/0.1.0, at: <ISO-8601-Datetime> },verifiedungesetzt) - neu:
knowledge-kompilation-inkrementellangelegt (sources: raw/epics/epics-2026-08-14.md) — Root-Concept, Trust-Metadaten A0-20 - neu:
wissensarchitektur-trennung-statesangelegt (sources: raw/architecture-spine/architecture-spine-2026-08-14.md) — Root-Concept, Trust-Metadaten A0-20 - Retrospective-Follow-up (AI-1/F-01):
schema/validator.mdauf Revision 3 —at-Nur-Datum-Toleranz zurückgenommen.at: 2027-01-01ist jetzt FAIL nach Punkt 14 (reine Datumsangabe ≠ ISO-8601-Datetime); Positiv-Fixture 14c neu mit±HHMM-Form (+0200) belegt. Vertragschema/wiki-compiler.mdunverändert (autorisiert). Validator-Zertifizierung zugehörig geprüft: Fixture 14c (Negativ) erzeugt FAIL. - Retrospective-Follow-up (AI-2/F-02):
schema/validator.mdauf Revision 4 — neue Fixture-Tabelle §7.3 für die §6-Fachprüfungen (EC-1 Existenz, EC-3 Kalender, stale_after-WARN, EC-11 non-md). Zertifizierung gegen erweiterte Fixtures selbstgeprüft — Ergebnis: PASS (je §6-Fixture isoliert geprüft, genau die angesprochene Prüfung löst aus; EC-1/EC-3-FAILs sind Run-FAIL, WARN ist Berichtskanal, non-md wird ignoriert ohne Verdikt). - Retrospective-Follow-up (AI-3/F-03):
schema/validator.mdauf Revision 5 — §3.2-Voraussetzungsprüfungen als fachliche Prüfklasse V-1/V-2 gelabelt (VerdiktFAIL (Voraussetzung) … (V-1|V-2)stattFAIL (Struktur)), §5-Grammatik/Selbstbegrenzung sowie §7.1/§7.3-Fixtures angeglichen. Zertifizierung: V-1/V-2-Fixtures selbstgeprüft — PASS (isolierte Auslösung; kein §7-Punkt-Nr.-Konflikt). - Retrospective-Follow-up (AI-4/F-09):
raw/*/source.md-Provenienz korrigiert —_bmad-output/IST versioniert; Herkunft auf Commit6cc667dgestützt und SHA-256 der Herkunftsdatein aufgenommen (byte-identisch zur materialisierten Evidenz, geprüft). - Retrospective-Follow-up (AI-5/F-05):
schema/validator.mdauf Revision 6 — BOM-/Leerzeilen-Stripping der Frontmatter-Erkennung von Punkt 10 auf Punkte 2/8 ausgedehnt (einheitliche §3-Präambel). Zertifizierung: neue Positiv-Fixtures 2a/8b (BOM + Leerzeile vor---) → SUCCESS; geprüft gegen isolierte Samples — PASS. - Retrospective-Follow-up (AI-7): Defer-Kontexte gesichert — F-04, F-06, F-07, F-08, F-11, F-14 als Folge-Aufgaben in
deferred-work.mdnotiert (mit Epic-2/3/Validator-Zuordnung); F-06/F-08 zusätzlich als „Offene Punkte" direkt im Validator (Rev. 6) verankert. - Retrospective-Follow-up (AI-6/F-10): Mechanische Validator-Verifikation nachgeschärft — spec-1-4-Verification enthält jetzt einen strengen, deterministischen Vertrag↔Validator↔Fixtures-Abgleich (14 Punkte, keine Punkt 15, Verifikations-Beleg-Tabelle) als Pflicht-Re-Check bei jeder Autorisierung. Bleibt innerhalb der D-3-Grenze (kein Standalone-Programm); dokumentarisch-mechanisch statt Existenz-Grep.
2026-08-15
- Validator-Zertifizierung:
schema/validator.md(Revision 2) gegen die Referenz-Fixtures (§7) selbstgeprüft — Ergebnis: PASS (alle Negativ-Fixtures erzeugen FAIL, alle Positiv-Fixtures SUCCESS; maschinenlesbares Verdikt gemäß §5 bestätigt). Jede Negativ-Fixture wird je Fixture isoliert gegen ein sonst-valides Sample geprüft, sodass genau ihr zugehöriger Punkt auslöst (kein Vorab-FAIL durch andere Punkte).