feat: Story 3.7 Review-Loop-2-Patches (bmad-code-review Re-Run, 4 Layer; kein Loopback) — Nutzer D1/D2/D3 = 1/1/1; 3 decision-needed / 7 patch / 3 defer / 9 dismissed (False-Positives); Patches: D1 deferred-work-Append (zwei Delokalisierungs-Blöcke: Terminologie-Drift INPUT_UNCOMMITTED/UNCOMMITTED_INPUT pre-existing, Misch-Run-Coverage → Home Story 3.8) → log.md-Protokollwiderspruch aufgelöst; D2 sprint-status review behalten + 4 Doku-Stellen (Spec-Code-Map, SRO-Anker-Text, in-progress-Bullet, §8-Rev-3.2-Klausel); D3 p2_plan-Element-(1)-Scope git status --porcelain -- raw wiki (exakt wie §5.9 Pkt. 6); Sandbox: CONSIST-1-EC-1-Isolation (committete Löschung), CONSIST-2 Misch-Run (Neu-Anlage +delta, Duplikat-Kontrolle, Neu-Anlage-Absenz nach Voll-Rollback via assert_restored-Guard), CONSIST-5 raw-SHA gg. $BASE, CONSIST-6 gültiger Commit-Zustand (sources-Nachführung id s3 + at-Bump), rollback()-Doku (Voll-Rollback = §6-Pkt.-3-Teilzustand, AD-17e-Abgrenzung), 3 Tippfehler; Instruktion: §5.13 Pkt. 7 um generated.at-Wanduhr-Gap-Ausnahme (§5.10 Pkt. 8, A0-20, Home 3.8); Sandbox re-executiert Exit 0 (14 harte PASS, CONSIST-7 non-vakuum plan_sha byte-identisch); Defers → deferred-work.md (Label-Präzisierung, A0-20-Post-Zustand → 3.8, pre-existing-Zeitpunktswort-Fuge); Spec: Review Findings + Change Log + loop_iteration 1; log.md Review-Loop-2-Bullet; sprint-status done; AD-3 unverändert

This commit is contained in:
Michael Tamse
2026-08-20 09:04:41 +02:00
parent 938c05c4a8
commit c4cdf4b93e
6 changed files with 120 additions and 33 deletions
+2 -1
View File
@@ -1,8 +1,9 @@
# Log
## 2026-08-20
- **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.md` append — zwei Delokalisierungs-Blöcke (Terminologie-Drift `INPUT_UNCOMMITTED`/`UNCOMMITTED_INPUT` pre-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`-Wert `review` im Diff **behalten** (Review-Start-Flip, File-Header-Konvention „review: Implementation complete, ready for review") + 4 Dokumentationsstellen korrigiert (Spec-Code-Map `backlog → review`, SRO-Anker-Text, dieses in-progress-Bullet, §8-Revision-3.2-Klausel „`in-progress`" → „`review` (Impl.-Flip + Review-Start-Flip im selben Commit; finaler `done`-Flip im Step-05-Status-Sync)"). (3) **D3**: `p2_plan`-Element-(1)-Scope-Fix `git 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-Anlage `delta` + Update `alpha`; Neu-Anlage-Zielpfad `+delta` als erlaubter Plan-Freeze-Teil; Duplikat-Kontrolle in `p2_plan`; Voll-Rollback → **Neu-Anlage-Absenz** via `assert_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 zitiert `raw/alpha-v2.md#S-3` mit vorhandener `sources`-Nachführung `id: 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 ungetrackte `wiki/`-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 **dokumentierten `generated.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.md` Section „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 + 4 `assert_restored` — CONSIST-2 neu — + 2 `assert_invariant` — CONSIST-2-Endprobe durch Rollback-Flow ersetzt — + 1 `assert_frontmatter`); einzige HARD-FAIL-Zeile = intendierte CONSIST-2-Freeze-Negativkontrolle (Ghost `gamma`); CONSIST-7 non-vakuum (plan_sha `b855ee9a…` byte-identisch über beide Runs). **Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:** `git status --porcelain -- wiki/` zeigt ausschließlich `wiki/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-Flip `in-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`-Key `3-7-reason-mutate-trennung-und-konsistenz-endzustand-sicherstell`**`review`** (Review-Schritt; das `done`-Flip ist Workflow-Konvention des Review-Abschlusses — Step-05 setzt Spec-Frontmatter `status: 'done'`), `last_updated` → 08-20-2026 00:30; Spec-Frontmatter `status: '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 klickbaren `path:line`-Ankern (343/356/358/362/420/461 in `schema/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)", keine `done`-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ünf` in compiler.md = 0), **CONSIST-6-Sequenz** (`assert_frontmatter` + `log_commit` VOR `git 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_state` aus dem committeten Plan-Capture-Baum, non-vakuum), **CONSIST-1-EC-1-Negativkontrolle** (P2-Element (3), fehlende `raw/alpha-v2.md`-Existenz → `p2_plan` muss `return 1`, textuell benannt, keine Mutation), **pgrep-Robustheits-Guard** (KEINE_ENGINE-Negativkontrolle: `command -v pgrep` → sonst `ps`-Fallback — pgrep auf Git-Bash-Host nicht vorhanden; vorher stille vacuöse Negativkontrolle, jetzt reeller `ps 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), **Tippfehler `inv_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-Drift `INPUT_UNCOMMITTED`/`UNCOMMITTED_INPUT` pre-existing §5.9/§5.11, §5.11-Wortlaut geschützt — XY nutzt `INPUT_UNCOMMITTED` wie §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 auf `gamma`); CONSIST-7 non-vakuum (plan_sha byte-identisch über beide Runs); keine ungewollten `cat:`/`sha256sum:`-Zeilen; Zeilenanker real. **Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:** `git status --porcelain -- wiki/` zeigt ausschließlich `wiki/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.md` Rev 9, D-3): alle `wiki/`-Dateien SUCCESS.
- **Story 3.7 → `in-progress` (Reason/Mutate-Trennung & Konsistenz-Endzustand, Verankerung §5.13, 2026-08-20):** `schema/compiler.md` Revision 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`-Key `3-7-reason-mutate-trennung-und-konsistenz-endzustand-sicherstell`**`in-progress`**, `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 reale `wiki/`-/`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-Pfad `gamma` erkannt, 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 Baum `git show`-gelesen — der einzige deterministische Zeuge, da `rollback` auf 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 auf `gamma` — erwarteter Non-Zero-Exit, vom Szenario hart assertiert). **Keine Story-3.7-Defers** (per Spec-README: keine Home-3.7-Defers). **Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:** `git status --porcelain -- wiki/` zeigt ausschließlich `wiki/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.md` Rev 9, D-3): alle `wiki/`-Dateien SUCCESS.
- **Story 3.7 → `in-progress` (Reason/Mutate-Trennung & Konsistenz-Endzustand, Verankerung §5.13, 2026-08-20):** `schema/compiler.md` Revision 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`-Key `3-7-reason-mutate-trennung-und-konsistenz-endzustand-sicherstell`**`review`** (Implementierungs-Flip `in-progress` + Review-Start-Flip `review` im selben Commit; finaler `done`-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 reale `wiki/`-/`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-Pfad `gamma` erkannt, 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 Baum `git show`-gelesen — der einzige deterministische Zeuge, da `rollback` auf 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 auf `gamma` — 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ßlich `wiki/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.md` Rev 9, D-3): alle `wiki/`-Dateien SUCCESS.
## 2026-08-19
- **Story 3.6 → `done` (Step-04-Review-Abschluss, 2026-08-19):** Der Review-Abschluss-Flip `in-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`-Key `3-6-…`**`done`**, `last_updated` → 08-19-2026 22:10; Spec-Frontmatter `status: '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 — committeter `lease-granite-root`-Marker gewinnt, sonst `lease/`-Baumableitung, sonst Startwert `gen = 0`; STALE-1-kern generationenbasiertes TTL gegen **dieselbe** `id` durchgesetzt, 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.md` append-only (Schicksal des `lease/<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: alle `wiki/`-Dateien SUCCESS (keine Inhalts-Mutation). **Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt:** `git status --porcelain -- wiki/` zeigt ausschließlich `wiki/log.md` (dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story).