diff --git a/_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh b/_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh index e6e98c4..f15078e 100644 --- a/_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh +++ b/_bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh @@ -97,17 +97,17 @@ command -v bash >/dev/null || hardfail "bash fehlt" for ref in schema/compiler.md schema/validator.md schema/wiki-compiler.md schema/canonical-terms.md adapters/README.md; do [ -f "$ref" ] || hardfail "Referenz-Schema fehlt: $ref" done -pass "A.2 Referenz-Schemata vorhanden (compiler/validator/wiki-compiler/canonical-terms/adapters)" -# A.3: Bundle-Vorbedingungen (V-1..V-6, Vertrag §2) im Ist-Repo -[ -f wiki/index.md ] || hardfail "V-1: wiki/index.md fehlt" -[ -d raw ] || hardfail "V-2: raw/ fehlt" -[ -f raw/README.md ] || hardfail "V-3: raw/README.md fehlt" -[ -f wiki/log.md ] || hardfail "V-4: wiki/log.md fehlt" -for area in concepts processes states; do - [ -d "wiki/$area" ] || hardfail "V-5: Bundle-Area wiki/$area fehlt" -done -[ -f wiki/concepts/README.md ] || hardfail "V-6: wiki/concepts/README.md fehlt" -pass "A.3 Bundle-Vorbedingungen V-1..V-6 erfüllt (Ist-Repo)" +pass "A.2 Referenz-Schemata vorhanden (compiler/validator/adapters)" +# A.3: Bundle-Vorbedingungen im Ist-Repo — nur vertraglich definierte Prämissen: +# V-1 Bundleroot (Vertrag §2/Validator §3.2), log.md (Vertrag §5, reserviert), +# raw/ = Evidenzverzeichnis. KEINE fixe Area-Menge im Vertrag (V-5/V-6 existieren +# nicht) — die Ist-Areas (z. B. wissensarchitektur/) trägt Punkt 11 (Area mit +# Inhalt MUSS index.md haben), geprüft vom Validator (Abschnitt D) und G-7 (F). +[ -f wiki/index.md ] || hardfail "V-1: wiki/index.md fehlt (Bundleroot, Vertrag §2)" +[ -d raw ] || hardfail "raw/ fehlt (Evidenzverzeichnis)" +[ -f raw/README.md ] || hardfail "raw/README.md fehlt" +[ -f wiki/log.md ] || hardfail "wiki/log.md fehlt (Vertrag §5, reservierter Name)" +pass "A.3 Bundle-Vorbedingungen erfüllt (Bundleroot/raw/-Evidenz/log.md; Vertrag §2/§5)" # A.4: Sandbox-Suite 3.1..3.12 vollständig SUITE_OK=1 for N in 1 2 3 4 5 6 7 8 9 10 11 12; do @@ -269,18 +269,33 @@ fi runlabel "D-NEG: Negativ-Fixtures (AC-3-Hälfte; frischer Validator-Agent MUSS 3×FAIL + 1×SUCCESS liefern)" NEGDIR="$ROOT/negcage" -mkdir -p "$NEGDIR/wiki/concepts" +mkdir -p "$NEGDIR/wiki/concepts" "$NEGDIR/raw" cp -r "$CAGE/schema" "$NEGDIR/schema" +# Gültiges Bundleroot-Frontmatter (sonst Punkt-8-FAIL auf wiki/index.md selbst) + +# Area-Index (Punkt 11: Area mit Inhalt MUSS index.md haben; Concepts im Parent-Index). cat > "$NEGDIR/wiki/index.md" <<'EOF' +--- +type: bundle +okf_version: "0.2" +--- # Index -- [Pos](concepts/pos.md) -- [Neg1](concepts/neg-1.md) -- [Neg2](concepts/neg-2.md) -- [Neg3](concepts/neg-3.md) +- [Concepts](concepts/index.md) +EOF +cat > "$NEGDIR/wiki/concepts/index.md" <<'EOF' +# Concepts +- [Pos](pos.md) +- [Neg1](neg-1.md) +- [Neg2](neg-2.md) +- [Neg3](neg-3.md) EOF cat > "$NEGDIR/wiki/log.md" <<'EOF' # Log EOF +# EC-1 (Fachprüfung §6): jede referenzierte raw/-Ressource MUSS als Datei existieren — +# ohne diese Dateien träge AUCH die Positiv-Kontrolle pos.md einen EC-1-FAIL (falsch-rot). +for r in pos neg-1 neg-2 neg-3; do + printf 'Evidenz: Negativ-Fixtur %s (Stelle S-1).\n' "$r" > "$NEGDIR/raw/$r.md" +done # neg-1: required Feld 'type' fehlt (Punkt 1) cat > "$NEGDIR/wiki/concepts/neg-1.md" <<'EOF' --- @@ -293,14 +308,14 @@ generated: --- Negativ-Fixtur: required Feld 'type' fehlt. EOF -# neg-2: Bundle ohne okf_version (Punkt 8) +# neg-2: okf_version in einer Concept-Datei (Punkt 9: ausschließlich in der Bundleroot) cat > "$NEGDIR/wiki/concepts/neg-2.md" <<'EOF' --- okf_version: "0.2" --- -# Neg-2 (Bundleroot-Defizit: okf_version fehlt auf Bundle-Ebene) +# Neg-2 (okf_version außerhalb der Bundleroot — Punkt 9) EOF -# neg-3: ungültiges 'at'-Datum (Punkt 11/EC-3: 2026-02-31 existiert nicht) +# neg-3: ungültiges 'at'-Kalenderdatum (Punkt 14/EC-3: 2026-02-31 existiert nicht) cat > "$NEGDIR/wiki/concepts/neg-3.md" <<'EOF' --- type: concept @@ -331,8 +346,8 @@ run_validator_agent "$NEGDIR" "$NEGVAL_OUT" grep -q '^VALIDATOR_DONE ' "$NEGVAL_OUT" || hardfail "D-NEG: Validator-Run fehlgeschlagen (kein VALIDATOR_DONE)" pass "D-NEG.1 Negativ-Validator-Run abgeschlossen" NEG_VERDICTS=$(grep -E '^(SUCCESS|FAIL) [^ ]+' "$NEGVAL_OUT" | head -50) -neg_count() { printf '%s\n' "$NEG_VERDICTS" | grep -c "^FAIL wiki/concepts/$1 " || true; } -pos_count() { printf '%s\n' "$NEG_VERDICTS" | grep -c "^SUCCESS wiki/concepts/$1 " || true; } +neg_count() { printf '%s\n' "$NEG_VERDICTS" | grep -cE "^FAIL (wiki/)?concepts/$1 " || true; } +pos_count() { printf '%s\n' "$NEG_VERDICTS" | grep -cE "^SUCCESS (wiki/)?concepts/$1 " || true; } neg1=$(neg_count neg-1.md); neg2=$(neg_count neg-2.md); neg3=$(neg_count neg-3.md) pos1=$(pos_count pos.md) [ "$neg1" -ge 1 ] && pass "D-NEG.2 neg-1 (ohne type): FAIL-Verdikt erhalten" \ diff --git a/wiki/log.md b/wiki/log.md index e17f966..3e15b7a 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,7 +1,7 @@ # Log ## 2026-08-23 -- **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 Tree `wt-c` + at-only-Kontrolle `wt-c2` durch denselben E.4-Classifier (deterministisch, kein 3. Agent; Negativ-Kontrolle MUSS `NON_AT≠0`, Positiv-Kontrolle MUSS `NON_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 7 fehlendes `generated.by`, Punkt 14/EC-3 kalenderinvalides `at: 2026-02-31`, Punkt 4 `resource: raw/../neg-3.md` ..-Traversal) + Positiv-Kontrolle — frischer Validator-Agent MUSS 3×FAIL + 1×SUCCESS liefern; (6) Fixture um CREATE-Fall (neue raw-Quellen `beta-v1/v2`, eindeutiger Term `quanten-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-Revert `done → in-progress`** (D-3.13-7; Präzedenz 3.7–3.12: finaler `done`-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-Checks `timeout`/`sha256sum`/`tar`/`cygpath`/`bash` mit klaren Fehlern), P-4 (Käfig = isolierte Mini-Fixture, `rm -rf` des realen `raw/`/`wiki/`-Inhalts vor Fixture-Bau; Bundleroot-Frontmatter `type: bundle`/`okf_version: "0.2"`; Root-Concepts ohne Areas — Punkt-11-sauber), P-5 (E.1 baut `wiki/`+`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|b` greppt, 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 $ROOT` EXIT, `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 -n` clean); grüner Voll-Lauf-Re-Run (~2.5–3.5 h, Agent-Läufe) + Review-Loop-2 ausstehend — finaler `done`-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 **kumulative `PASS_COUNT`-Schnappschüsse** am Ende der jeweiligen Gate-Abschnitte A/B/C/D/E/F/G (nicht pro-Sektion-Zählungen; Gesamt `PASS_COUNT=70` ist der Endergebnis-Wert — Reconciliation: 70 stimmt exakt mit dem damaligen Skript). `$BASE=5024d751c75e6d6135c33a02e08967099b2f887f` ist 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ßlich `wiki/log.md` (dieser Eintrag); AD-3 read-only (`schema/validator.md`/`schema/wiki-compiler.md`/`schema/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). +- **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 Tree `wt-c` + at-only-Kontrolle `wt-c2` durch denselben E.4-Classifier (deterministisch, kein 3. Agent; Negativ-Kontrolle MUSS `NON_AT≠0`, Positiv-Kontrolle MUSS `NON_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 fehlendes `type`, Punkt 9 `okf_version` außerhalb der Bundleroot, Punkt 14/EC-3 kalenderinvalides `at: 2026-02-31`) + Positiv-Kontrolle (gültiges Bundleroot-/Area-Index-Frontmatter + EC-1-existierende `raw/`-Ressourcen als Kontrollrahmen) — frischer Validator-Agent MUSS 3×FAIL + 1×SUCCESS liefern; (6) Fixture um CREATE-Fall (neue raw-Quellen `beta-v1/v2`, eindeutiger Term `quanten-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-Revert `done → in-progress`** (D-3.13-7; Präzedenz 3.7–3.12: finaler `done`-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-Checks `timeout`/`sha256sum`/`tar`/`cygpath`/`bash` mit klaren Fehlern), P-4 (Käfig = isolierte Mini-Fixture, `rm -rf` des realen `raw/`/`wiki/`-Inhalts vor Fixture-Bau; Bundleroot-Frontmatter `type: bundle`/`okf_version: "0.2"`; Root-Concepts ohne Areas — Punkt-11-sauber), P-5 (E.1 baut `wiki/`+`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|b` greppt, 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 $ROOT` EXIT, `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 -n` clean); grüner Voll-Lauf-Re-Run (~2.5–3.5 h, Agent-Läufe) + Review-Loop-2 ausstehend — finaler `done`-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 **kumulative `PASS_COUNT`-Schnappschüsse** am Ende der jeweiligen Gate-Abschnitte A/B/C/D/E/F/G (nicht pro-Sektion-Zählungen; Gesamt `PASS_COUNT=70` ist der Endergebnis-Wert — Reconciliation: 70 stimmt exakt mit dem damaligen Skript). `$BASE=5024d751c75e6d6135c33a02e08967099b2f887f` ist 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ßlich `wiki/log.md` (dieser Eintrag); AD-3 read-only (`schema/validator.md`/`schema/wiki-compiler.md`/`schema/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). ## 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.