diff --git a/_bmad-output/implementation-artifacts/deferred-work.md b/_bmad-output/implementation-artifacts/deferred-work.md index 225b19d..de05112 100644 --- a/_bmad-output/implementation-artifacts/deferred-work.md +++ b/_bmad-output/implementation-artifacts/deferred-work.md @@ -632,3 +632,19 @@ Noch nicht adressierte, aber real erkannte Arbeit — gesammelt aus Reviews. Ein - DF1 — AC-3-`git stash push`-Variante und kombiniertes AC-5 „Fremd-Bytes restauriert" nie geübt: §5.18 Pkt. 3 benennt `git stash push -- ` bzw. `stash push -u` als zulässige native Alternative zur Scratch-Zone; die Sandbox L-3/L-4 übt ausschließlich die Scratch-Zweige (der Stash-Ast — Sichern, Worktree-Bereinigung, byte-identischer Restore aus dem Stash — hat keinerlei Coverage/Guard). Zusätzlich wird AC-5s Clean-Input-Guard-Klausel „geschützte Fremd-Bytes sind restauriert" nur isoliert in L-3/L-4 bewiesen, nie kombiniert mit Release + Folge-Run im selben Szenario. Home: Sandbox-Härtung (Story-3.13-Abnahme-Gate deckt native-Varianten-Abdeckung über echte Bäume). - DF2 — `assert_no_wallclock` überbreit (trifft jedes `YYYY-MM-DD`-Zeichenmuster, inkl. legitimer `### YYYY-MM-DD`-Datumsgruppen des `wiki/log.md` — Konventionsdaten, keine Wanduhr-Steuerung): der A0-20-Check ist daher nur auf `registry/wiki` (L-1) anwendbar, nicht auf `log.md`; der L-1-Kommentar „kein Zeitstempel in Lock/Registry" behauptet breitere Coverage als die Funktion liefert. A0-20-Steuerung greift korrekt (nur auf Registry/Lock); Kommentarschärfe + eventuelle schärfere Regex (z. B. `T[0-9]{2}`-Pflicht) = Kosmetik. Home: Sandbox-Kosmetik (nächste Sandbox-Härtung). + + +### Aufgegriffen: Story-3.13-Abnahme als Home der 3.13-namigen Defer (Gate-Runs realisiert; rd-Notiz-/Defer-Block unverändert) — Story 3.13, 2026-08-22 + +Der Epic-3-Abnahmegate-Lauf (`_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh`, RUN_OK/Exit 0, PASS_COUNT=70, FAILED=0) realisiert das Home „Story-3.13-Abnahme" der folgenden Defer-Einträge einschlägig. Die Original-Blöcke bleiben historisch unverändert (nur das Home ist erledigt, Spec-3.13 Code-Map Pkt. 59; AD-17e). + +- **DET-1/DET-2-Plan-/Form-Literale vs. AC-5 „nicht hart codiert"** (Story-3.8-Defer, Z. 551; Home: Story-3.13-Abnahme, echte Gate-Runs über die Instruktion) — aufgegriffen: Der 3.13-Gate-Kern E führt GEGEN die committete Fixture zwei echte frische Agent-Läufe (A/B, getrennte Worktrees auf demselben `$BASE`) über `schema/compiler.md` als einzige Instruktionsquelle aus; der Harness schreibt weder erwartete Bodies noch Receipts (AC-5); der A/B-Vergleich bestätigt bundle-State-Identität bis auf die `generated.at`-Ausnahme (§5.14 Pkt. 2). Die Nicht-Vakuum- und Determinismus-Last tragen die real erzeugten Bundle-Bäume (git diff A B -- wiki/, nur at-Zeilen) und die Negativ-Kontrolle G-6. +- **Positive Zwei-Run-Identität strukturell trivial (R-9 clean A==B)** (Story-3.9-Defer, Z. 560; Home: Story-3.13-Abnahme) — aufgegriffen: Die Zwei-frische-Agenten-Bestätigung ist im 3.13-Gate real (getrennte Kontexte, getrennte Worktrees, gemeinsamer `$BASE`, Instruktion als einzige Quelle), nicht mehr aus Skript-Literalen abgeleitet; A==B-Identität wird über den realen Bundle-Baum-Vergleich assertiert. +- **Externer Validator gegen das reale committete Bundle** (Story-3.10-Defer, Z. 576; Home: Story-3.13-Abnahmegate) — aufgegriffen: Abschnitt D des Gates startet einen frischen Agent-Kontext, der `schema/validator.md` (Rev 9) über alle 7 `wiki/`-Dateien der realen /tmp-Käfig-Kopie ausführt und Verdikte `SUCCESS`/`FAIL` je Datei ablegt; das Gate prüft Grammatik + Exhaustivität, urteilt nie selbst (D-3). +- **Zwei-Producer-verschiedene-``-Gewinner** (Story-3.11-Defer, Z. 594; Home: Story-3.12-Lifecycle / Story-3.13-Abnahme) — aufgegriffen: sandbox-3-12 (Sub-Run im Gate, Abschnitt C) übt den atomaren Ownership-CAS-Takeover des `refs/leases/wiki`-Scope-Locks; das 3.13-Gate hebt die 12 Sandbox-Suiten in einen einzigen fail-fast-Abnahmelauf (AC-1). +- **A-2 keine Synchronisations-Barriere / zeitliche Überlappung** (Story-3.11-Defer, Z. 597; Home: Sandbox-Härtung / Story-3.13-Abnahme) — aufgegriffen (Gate-Route): Der 3.13-E-Kern demonstriert die Real-Tree-Ausführung zweier unabhängiger Compiler-Runs in getrennten Worktrees; die atomare create-only-`git update-ref`-Semantik von sandbox-3-12 wird als Sub-Run des Abnahmegates re-ausgeführt. Die zwangsweise gleichzeitige (wanduhrgetaktete) Überlappung zweier Prozesse bleibt als benannter Rest-Term der Sandbox-Härtung (A0-20-rahmenkonform) bestehen. +- **Rest-Vertiefung echte Zwei-Worktree-Überlappung** (Story-3.11-Aufgegriffen-Notiz, Z. 611) — aufgegriffen (Rest-Term wie im Original-Eintrag benannt): das 3.13-Gate führt die Zwei-frische-Agenten-Bestätigung real in getrennten Worktrees aus; eine wanduhr-synchronisierte Echt-Überlappung beider Produzenten bleibt Rest-Vertiefung der Sandbox-Härtung. +- **Geteilter-Ref-Namespace-/Zwei-Worktree-Übernahme-Real-Beweis** (Story-3.12-Defer, Z. 629; Home: Story-3.13-Abnahme) — aufgegriffen: Das 3.13-Gate stellt den Clone-geteilten Käfig (ein `git init`-Repo, mehrere Worktrees auf demselben `$BASE`) bereit und führt die Zwei-frische-Agenten-Runs real aus — der Determinismus-/Takeover-Beweis läuft hier über echte unabhängige Worktrees statt über einen einzigen sequenziellen Worktree. +- **DF1 — AC-3-`git stash push`-Variante + kombiniertes AC-5** (Story-3.12-Defer, Z. 633; Home: Sandbox-Härtung / Story-3.13-Abnahme-Gate) — aufgegriffen (Gate-Route): Das 3.13-Gate re-ausführt sandbox-3-12 L-1..L-9 (inkl. Scratch-Zone-/Restore-Klasse und Clean-Input-Guard) als Sub-Run im Gesamtabnahmekontext; die zusätzliche native `git stash`-Alternativ-Variante und die wanduhr-gekoppelte Kombination bleiben als Rest-Term der Sandbox-Härtung benannt (keine neue §-Semantik, keine Instruktions-/Validator-Änderung, AD-3). + +- status: aufgegriffen (Home „Story-3.13-Abnahme" realisiert durch die echten Abnahmegate-Runs; Original-Defer-Blöcke unverändert; jeweils benannte Rest-Terme der weiterführenden Sandbox-Härtung bleiben offen — kein Instruktions-/Validator-Defekt, A0-20-konform) diff --git a/_bmad-output/implementation-artifacts/epic-3-context.md b/_bmad-output/implementation-artifacts/epic-3-context.md index c7d1f54..21e34d5 100644 --- a/_bmad-output/implementation-artifacts/epic-3-context.md +++ b/_bmad-output/implementation-artifacts/epic-3-context.md @@ -4,7 +4,7 @@ ## Goal -Der Compiler verarbeitet neues Source Material gegen das bestehende Knowledge Bundle, statt das Wiki bei jedem Lauf aus sämtlichen Rohquellen neu aufzubauen (Compounding Knowledge). Bestehende Concepts werden durch neue Erkenntnisse erweitert, präzisiert oder in eindeutig belegten Fällen korrigiert; mehrere Sources werden zu einer gemeinsamen Wissensrepräsentation mit gemischter, claim-granularer Provenienz synthetisiert; unverändertes Wissen bleibt erhalten. Relevanzbestimmung und Reconcile-Routing sind textual-deterministisch ohne Embedding- oder Vector-Infrastruktur. Konkurrierende Producer koordinieren sich über eine atomare Root-Scope-Lease mit transaktionalem Dirty-Tree-, Rollback- und Release-Lifecycle. Klassifikationspflichtige Kollisionen und Widersprüche werden bis Epic 4 fail-closed als strukturierter Hold erhalten; der Determinismus-Vertrag wird mechanisch qualifiziert. Epic 3 gilt erst nach einem realen, unabhängigen Source→Compilation→Wiki-Abnahmegate als abgeschlossen (AD-5, AD-6, AD-13, AD-17a/b/d–h, A0-6/7/12–16/18/19). +Der Compiler verarbeitet neues Source Material gegen das bestehende Knowledge Bundle, statt das Wiki bei jedem Lauf aus sämtlichen Rohquellen neu aufzubauen (Compounding Knowledge). Bestehende Concepts werden durch neue Erkenntnisse erweitert, präzisiert oder in eindeutig belegten Fällen korrigiert; mehrere Sources werden zu einer gemeinsamen Wissensrepräsentation mit gemischter, claim-granularer Provenienz synthetisiert; unverändertes Wissen bleibt erhalten. Relevanzbestimmung und Reconcile-Routing sind textual-deterministisch ohne Embedding- oder Vector-Infrastruktur. Konkurrierende Producer koordinieren sich über eine atomare Root-Scope-Lease mit transaktionalem Dirty-Tree-, Rollback- und Release-Lifecycle. Klassifikationspflichtige Kollisionen und Widersprüche werden bis Epic 4 fail-closed als strukturierter Hold erhalten; der Determinismus-Vertrag wird mechanisch qualifiziert. **Ist (Story 3.13, 2026-08-22): das reale, unabhängige Source→Compilation→Wiki-Abnahmegate ist ausgeführt — `_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh` lief voll grün (PASS_COUNT=70, FAILED=0, RUN_OK/Exit 0): 12 Sandbox-Suiten fail-fast, vollständiger Validator (schema/validator.md Rev 9) über alle 7 wiki/-Dateien (7/7 SUCCESS), Zwei-frische-Agenten-Kontexte A/B mit byte-identischem Bundle-State bis auf die at-Ausnahme (§5.14 Pkt. 2), G-1..G-8 inkl. Epic-5-Consumer-Smoke und Porcelain-Check; siehe wiki/log.md Story-3.13-Eintrag.** Epic 3 ist damit abnahmegeeignet; die finale Retrospektive (Epic-3-retrospective) schließt das Epic ab (AD-5, AD-6, AD-13, AD-17a/b/d–h, A0-6/7/12–16/18/19). ## Stories @@ -43,12 +43,12 @@ Der Compiler verarbeitet neues Source Material gegen das bestehende Knowledge Bu - **Transaktionaler Lifecycle (AD-17d–f, A0-15/16, AD-6):** Preflight schützt getrackte und ungetrackte Fremdänderungen (eindeutige Abort-/Protect-Zustandsmaschine), Rollback restauriert exakt den bezeichneten Baseline-Commit (Index + Worktree), Release hinterlässt Mutation, zulässigen Nachweis und sauberen Worktree dauerhaft. Eine lebende Lease wird nicht allein durch Generationserhöhung stale; Staleness verlangt bestätigten Abbruch oder abgelaufene Liveness plus atomare Ownership-Prüfung. *Ist (Story 3.12, 2026-08-21): die transaktionale Lifecycle-Klammer ist in `schema/compiler.md` **§5.18** verankert (Revision 3.7 — Lease-Lifecycle & transaktionaler Commit-Abschluss: Liveness & Ownership AC-1, stale-Übernahme genau einmal mit benannter ersetzter Holder-ID AC-2, eindeutige Abort-/Protect-Zustandsmaschine für getrackte/ungetrackte Fremdänderungen mit byte-identischem Restore AC-3, Baseline-Rollback Index + Worktree aus `` mit leerem Post-Rollback-Diff AC-4, durable Release + Clean-Input-Guard für den Folge-Run AC-5, kanonisches Log AC-6, vier Kill-Point-Tests AC-7; §5.11/§5.12/§5.13/§5.17-Wortlaute textuell unverändert, Fugen-Identität; keine Wanduhr-TTL, A0-20).* - **Determinismus-Vertrag (AD-17h/FT-10, A0-19):** Das kanonische Eingabemanifest bindet Baseline, geordnete Sources und jeden output-sichtbaren Run-/Zeit-/Identitätswert; der Run-Receipt (Candidates, Reihenfolge, Plan, Entscheidungen, Output-Hashes) liegt außerhalb des Bundles. Zwei getrennte saubere Worktrees mit frischen Agent-Kontexten erzeugen denselben Bundle-State; hart codierte erwartete Pläne oder Concept-Bodies und pauschal maskierte `verified`-Ereignisse sind kein gültiger Nachweis. - **Synthese bleibt source-grounded (AD-4):** Bestehende Concepts dürfen Kontext liefern, fachliche Aussagen müssen aber auf nachvollziehbare `raw/`-Evidenz zurückführbar bleiben; Wiki-Links ersetzen nie die Provenienz zur ursprünglichen Evidenz. -- **Epic-3-Abnahmegate:** Ein portables, fail-fast ausführbares Gate führt alle Epic-3-Szenarien aus, ruft den vollständigen autorisierten Schema-Validator über alle `wiki/`-Dateien auf und lässt einen frischen Agent-Kontext die kanonische Instruktion über einer repräsentativen Fixture ausführen — der Harness schreibt keine erwarteten Wiki-Ausgänge selbst. Zwei frische Agent-Kontexte müssen Run-Receipts und Bundle-State angleichen. Ein Defizit des autorisierten Validator-Vertrags blockiert das Gate und verlangt eine separat genehmigte Epic-1-Remediation. +- **Epic-3-Abnahmegate:** Ein portables, fail-fast ausführbares Gate führt alle Epic-3-Szenarien aus, ruft den vollständigen autorisierten Schema-Validator über alle `wiki/`-Dateien auf und lässt einen frischen Agent-Kontext die kanonische Instruktion über einer repräsentativen Fixture ausführen — der Harness schreibt keine erwarteten Wiki-Ausgänge selbst. Zwei frische Agent-Kontexte müssen Run-Receipts und Bundle-State angleichen. Ein Defizit des autorisierten Validator-Vertrags blockiert das Gate und verlangt eine separat genehmigte Epic-1-Remediation. *Ist (Story 3.13, 2026-08-22): realisiert als `sandbox-3-13/run-sandbox.sh` — fail-fast-Orchestrierung (A Setup, B /tmp-Käfig, C 12 Sandbox-Sub-Runs, D Validator-Agent mit Verdikt-Grammatik/-Exhaustivität statt eigener Urteile, E Zwei-frische-Agenten A/B auf git-worktree-$BASE, F G-1..G-8 harte Assertions inkl. G-6 Negativ-Kontrolle Perturbation und G-7 Epic-5-Smoke, G Porcelain-Endzustands-Invariante). Der vollständige Gate-Lauf ist grün (PASS_COUNT=70, FAILED=0, RUN_OK/Exit 0); G-7 exkludiert den Bundleroot-Schema-Glossar (../schema/, compiler §5.6 „andere Schicht", AC-8 optionale Provenienz) und das log.md-Protokoll (§5.6 Pkt. 2).* - **Keine UX-/Design-Anteile relevant:** v1 ist datei-/CLI-basiert ohne GUI (PRD A-3, AD-11). ## Cross-Story Dependencies - Baut auf dem Workspace aus Epic 1 auf (immutable `raw/`, Bundle-Root, Schema-Validierung) und konsumiert die in Epic 2 erzeugten OKF-konformen, verlinkten Concepts mit claim-granularer Provenienz als vorhandenes Wissen. -- Story 3.9 liefert die deterministische Routing-Basis für Story 3.10; Story 3.11 liefert die atomare Lease-Basis für Story 3.12 (parallel). Story 3.8 wird nach 3.9–3.12 mit echten unabhängigen Runs abgeschlossen; Story 3.13 ist das finale Abnahmegate. +- Story 3.9 liefert die deterministische Routing-Basis für Story 3.10; Story 3.11 liefert die atomare Lease-Basis für Story 3.12 (parallel). Story 3.8 ist nach 3.9–3.12 mit echten unabhängigen Runs abgeschlossen (done); **Story 3.13 ist das finale Abnahmegate — ausgeführt und grün (2026-08-22, PASS_COUNT=70, RUN_OK/Exit 0): die Zwei-frische-Agenten-Bestätigung (echte getrennte Worktrees auf demselben $BASE, bundle-State identisch bis auf at-Ausnahme) und der vollständige Validator-Lauf über das reale Bundle (7/7 SUCCESS) sind realisiert; siehe wiki/log.md Story-3.13-Eintrag.** - AD-17c/A0-14 sind geteilt: Epic 3 verantwortet Erkennung und fail-closed Erhaltung, Epic 4 Klassifikation und semantische Auflösung. AD-17g/A0-17 verbleiben vollständig in Epic 4. A0-21 ist ebenfalls geteilt: Story 3.10 verantwortet den Incrementality-Teil (Erhaltung unabhängigen Wissens), Story 4.3 die Human-Curation-Semantik (FT-9). - Das Leasing-/Dirty-Tree-Modell koordiniert Compiler-Runs mit menschlicher Bearbeitung und trägt die Git-Nachvollziehbarkeit, auf die Epic 5 aufsetzt. diff --git a/_bmad-output/implementation-artifacts/sprint-status.yaml b/_bmad-output/implementation-artifacts/sprint-status.yaml index e972ac3..06cf843 100644 --- a/_bmad-output/implementation-artifacts/sprint-status.yaml +++ b/_bmad-output/implementation-artifacts/sprint-status.yaml @@ -29,7 +29,7 @@ # - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended) # - Retrospective appends its action items to action_items; the status view surfaces open ones generated: 08-14-2026 00:00 -last_updated: 08-22-2026 08:42 +last_updated: 08-22-2026 19:10 project: wow20 project_key: NOKEY tracking_system: file-system @@ -63,7 +63,7 @@ development_status: 3-10-inkrementelle-update-und-synthese-erhaltung-absichern: done # Story 3.10 Abschluss 2026-08-21 (bmad-code-review, 3 Layer; Patch-Kaskade, keine intent_gap/bad_spec — Sandbox E-1..E-9 nach Härtung 9/9 harte PASS/Exit 0, §5.16 Rev 3.5). Hinweis: die Epic-3-Abnahme (3.13) bleibt offen (epic-3 remains in-progress). 3-11-root-scope-leasing-atomar-akquirieren: done # Story 3.11 Review-Loop-1-Abschluss 2026-08-21 (bmad-code-review, 4 Layer; D-3.11-1 „Konstruktiv + härten", D-3.11-2 „Intentionalen Mutationsversuch bauen"; 20 Patches angewendet — A-2-Sampler wirksam, A-4 Worktree-Beobachtung, A-7 MERGE_OK hart abgewiesen + Post-Merge-State + Baseline im Hold-Eintrag, §5.17 Pkt. 1/4/5-Berichtigungen; Sandbox A-1..A-8 8/8 harte PASS/Exit 0 re-executiert). Hinweis: der finale `done`-Flip ist der Step-05-Status-Sync nach konvergiertem Review-Loop (Präzedenz Story 3.7/3.8/3.9); die Epic-3-Abnahme (3.13) bleibt offen (epic-3 remains in-progress). 3-12-lease-lifecycle-und-commit-abschluss-transaktional-schliessen: done # Story 3.12 Review-Loop-2-Abschluss 2026-08-22 (bmad-code-review, 4 Layer; D-3.12-1 Option 1 — AC-6-Grenze an log.md-Praxis, L-8-Kategorie-Hyphenate + Negativ-Kontrolle; 7 Patches — P1 scopelock_healthy()/LOCK_READ_ERROR-Propagation, P2 Release-Fehler-negativ + L-6 hart, P3 Setup-Robustheit, P4 Ghost-Diff-Probe + reg_write real, P5 Ownership-Stale + Takeover-Exactly-once, S1/S2 Sync- & Anker-Berichtigung; Sandbox L-1..L-9 9/9 harte PASS/Exit 0 re-executiert; Loop 1: atomarer Ownership-CAS im Takeover, AK-2->AC-2; §5.18 Revision 3.7). Hinweis: der finale `done`-Flip ist der Step-05-Status-Sync nach konvergiertem Review-Loop (Präzedenz Story 3.7/3.8/3.9/3.10/3.11); die Epic-3-Abnahme (3.13) bleibt offen (epic-3 remains in-progress). - 3-13-epic-3-verifikations-und-abnahmegate: in-progress + 3-13-epic-3-verifikations-und-abnahmegate: done # Story 3.13 Epic-3-Abnahmegate abgeschlossen 2026-08-22: run-sandbox.sh (A Setup, B Käfig-Bau, C 12 Sandbox-Sub-Runs, D Validator-Agent, E Zwei-frische-Agenten A/B, F G-1..G-8, G Porcelain) — voller Lauf PASS_COUNT=70, FAILED=0, RUN_OK/Exit 0; Validator 7/7 SUCCESS über reales Bundle; A/B byte-identisch nur at-Ausnahme (§5.14 Pkt. 2); G-6 Negativ-Kontrolle erkennt Perturbation; G-8 Ist-Baum-Porcelain leer. Aufgedeckte und behobene reale Befunde: (1) wiki/log.md:42 zitat das Literal 'type: bundle' in Prosa → Validator Punkt-9-Verletzung, bedeutungserhaltend de-literalisiert (Bundle-Compliance); (2) G-7-Smoke überstreng gegen Bundleroot-Schema-Glossar (../schema/, compiler §5.6 'andere Schicht') + log.md-Protokoll (§5.6 Pkt. 2 Log-Exclusion) → Exclusion im Gate, Smoke bleibt hart für Concept-Bodies. Epic-3 bleibt in-progress bis zur Epic-3-Retrospektive (AC-9: Epic 3 erst nach done aller Stories 3.8..3.13). epic-3-retrospective: optional epic-4: backlog diff --git a/wiki/log.md b/wiki/log.md index ce3d758..88f8add 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,6 +1,7 @@ # Log ## 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.sh` ist 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 von `schema/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, jede `exit 0`; 40 PASS); (D) **Validator-Agent** — frischer Kontext liest `schema/validator.md` (Rev 9) und stellt Verdikte `SUCCESS`/`FAIL ` über alle **7** `wiki/`-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.md` Baseline, Zuwachs `raw/alpha-v2.md` als CONFIRMING-Beleg, `raw/gamma-v1.md`; $BASE=5024d751c75e6d6135c33a02e08967099b2f887f), jeder frischer Kontext mit `schema/compiler.md` als 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 auf `generated.at`-Ausnahme** (§5.14 Pkt. 2; diff` wiki/` zeigt nur at-Zeilen, NON-at-0), Multi-Beleg-Synthese `raw/alpha-v1.md#S-2; raw/alpha-v2.md#S-3` im Body, `sources` lexikografisch konsolidiert, `gamma.md`/`index.md` byte-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-Check** `git status --porcelain --untracked-files=no` leer (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 (auch `log.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 der `index.md`, compiler §5.6 „andere Schicht", AC-8 optionale Provenienz/Traceability) und das `log.md`-Protokoll (§5.6 Pkt. 2 „keine Link-/Provenienz-Schicht"): **G-7 im Gate auf die Compiler-Exclusion-Fassung geschärft** (exkludiert `wiki/index.md` + `wiki/log.md`, hält die Smoke-Pflicht für alle Concept-Bodies/Area-`index.md` hart — 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.md` append, 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-``-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`-Key `3-13-epic-3-verifikations-und-abnahmegate` → **`done`** (finaler Step-05-Flip; AC-9: Epic 3 bleibt bis zur Epic-3-Retrospektive `in-progress`), `last_updated` → 08-22-2026 19:10. **Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:** `git status --porcelain -- wiki/` zeigt ausschließlich `wiki/log.md` (dieser Eintrag); AD-3 read-only (`schema/validator.md`/`schema/wiki-compiler.md`/`adapters/`/`raw/`/`schema/canonical-terms.md` unverä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, Diff `80480af..HEAD`, 2026-08-22):** Re-Review der konvergierten Loop-1-Implementierung (Diffform `80480af..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 eigene `wiki/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ßerhalb `wiki/` muss den Guard auslösen). **Patches (7, angewendet):** Sandbox — P1 `scopelock_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_release` mit 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-Checks `mktemp`/`mkdir`/`cd`/`git init`, verifizierter `$BASE`-Baseline-Commit, L-3/L-4-Backup-`cp` byte-identisch vor `checkout`/`clean`; bewusst kein `set -e` — negatives Assertion-Idiom), P4 L-9-KP2/KP3 Ghost-Diff-Probe (`assert_invariant` via `inv_viol`, Index **und** Worktree) + `reg_write` real 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 Frontmatter `review_loop_iteration: 0 → 1`, doppelte `## Spec Change Log` entfernt, ``-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); DF2 `assert_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 reale `wiki/`-/`raw/`-Baum) → **L-1..L-9, 9/9 harte PASS, Exit 0**. **Abschlussklausel:** keine Änderung an `schema/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.md` Rev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): alle `wiki/`-Dateien **SUCCESS**. `sprint-status.yaml`-Key `3-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ßlich `wiki/log.md` (dieser Eintrag); AD-3 read-only (`schema/validator.md`/`schema/wiki-compiler.md`/`adapters/`/`raw/`/`schema/canonical-terms.md` unverä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