Files
wow20/_bmad-output/implementation-artifacts/spec-3-13-epic-3-verifikations-und-abnahmegate.md
T
Michael TamseandClaude 894ae346ab docs: Story 3.13 Spec-Frontmatter nachziehen — status in-progress → done (Abschluss-Sync)
Commit 6624e07 hat den Step-05-Status-Sync (sprint-status.yaml 3-13 → done,
wiki/log.md Story-3.13-Eintrag, epic-3-context.md Ist-Nachführung,
deferred-work.md append) ausgeführt, aber das Spec-Frontmatter selbst vergessen
(status blieb 'in-progress'). Der Nachzieher flippt es gemäß Präzedenz der
abgeschlossenen Epik-3-Stories (3.4/3.8/3.11/3.12 → status: 'done') auf done;
epic-3 bleibt in-progress bis zur Epic-3-Retrospektive (AC-9).

Überspringt das Zwischenstadium 'in-review' (kein Review-Start per Step-04 mehr
nötig — Review-Loop war bereits in 6624e07 abgeschlossen; der ungetrackte
in-review-Halbzustand war der Auslöser des G-8-Porcelain-HARD-FAIL beim
Gate-Re-Run).

G-8-Nachbedingung wiederhergestellt: git status --porcelain leer nach diesem
Commit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-22 20:06:34 +02:00

20 KiB
Raw Blame History

title, type, created, status, baseline_commit, review_loop_iteration, context
title type created status baseline_commit review_loop_iteration context
Story 3.13 — Epic-3-Verifikations- und Abnahmegate feature 2026-08-22 done c234fc361e 0
_bmad-output/implementation-artifacts/epic-3-context.md

Intent

Problem: Epic 3 gilt erst als abgeschlossen, wenn ein reales, reproduzierbares Source→Compilation→Wiki-Abnahmegate es qualifiziert (epic-3-context Z. 7, Z. 46, Z. 52; AD-5/AD-6/AD-13/AD-17a/b/dh, A0-12/13/15/16/19). Die 12 verankerten Sandbox-Suiten (3-1..3-12) beweisen die Einzel-Mechaniken jeweils isoliert in /tmp-Mini-Bundles; die cross-cutting-Abnahmeebene fehlt: kein einziges Kommando führt alle Epic-3-Szenarien fail-fast aus, der vollständige autorisierte Validator (schema/validator.md Rev 9) wird bisher nur human-mechanisch über wiki/ gestellt (kein ausführbares Verfahren, D-3), die „zwei frische Agent-Kontexte"-Zwei-Run-Bestätigung ist ausdrücklich nur mechanisch simuliert (Subshells, spec-3-8 P-5 / compiler.md Z. 374 — der echte Nachweis ist dem 3.13-Gate vorbehalten), und der Epic-5-Abhängigkeits-Smoke (FR-15/16) plus Porcelain-Unverändertheit (git status --porcelain) eines Clean-Checkouts wurden nie als Gate geprüft.

Approach: Ein einziges, re-executierbares, fail-fast ausführbares Gate-Skript _bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh orchestriert die vollständige Epic-3-Abnahme: (a) Repo-Weiter Bausatz: alle 12 Sandbox-run-sandbox.sh als Sub-Runs nacheinander, jede Assertion hart, jede Abweichung = Non-Zero-Exit; (b) echte vollständige Validator-Integration — ein frisch gestarteter Agent-Kontext liest schema/validator.md (Rev 9, 14 Punkte + §6-Fachprüfungen) und stellt ein Verdikt SUCCESS/FAIL <pfad> <ursache> über alle wiki/-Dateien des Clean-Checkouts per angefügter verdict-*-dateien.md-Datei; das Gate prüft deren Grammatik (§5, §5.1) und Exhaustivität (jede wiki/**/*.md-Datei außer nicht-raw/-externe hat genau ein Verdikt), schreibt aber keine eigenen Validator-Urteile; (c) zwei frische Agent-Kontexte (zwei getrennte $SB-Arbeitskopien, jeweils ausgemeindete Clone-Kopien, git worktree add auf denselben $BASE-Commit) führen schema/compiler.md über einer repräsentativen committeten Fixture aus; das Gate baut die Fixture auf (rohes Zuwachs-Paar + Ziel-Concepts, committet als $BASE), schreibt selbst weder erwartete Wiki-Bodies noch Lease-/Log-/Git-Ausgänge (§5.14 Pkt. 2; epic-3-context-Z. 46) und vergleicht die beiden Ergebnis-Bäume via git diff <A> <B> -- wiki/ + Hash- und Frontmatter-Angleichung (nur die benannte generated.at-/verified[].at-Ausnahme); (d) G-Szenarien (G-1..G-8) als harte Assertions, inkl. der Epic-5-Abhängigkeits-Smoke (G-7: die vordefinierten Wissensfragen brauchen nur das wiki/-Bundle, keine Planungs-Referenzen) und Porcelain-Check (G-8: nach dem Lauf git status --porcelain -untracked-files=no leer). schema/compiler.md, schema/validator.md, schema/wiki-compiler.md, adapters/, raw/ bleiben read-only (AC-4: das Gate ändert die Schema-Semantik nie still); der Gate-Lauf findet ausschließlich als /tmp-Kopie des realen Clone-Baums statt (nie im Ist-Baum), das reale wiki/ wird nur als Textquelle gelesen.

Boundaries & Constraints

Always:

  • Nicht primär-mutiert: schema/compiler.md, schema/validator.md, schema/wiki-compiler.md, adapters/, raw/ — read-only (AD-3; das Gate ist eine Abnahme, keine neue Instruktions- oder Validator-Semantik).
  • Ein Datei-Satz erzeugt: _bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh (re-executierbar, bash run-sandbox.sh aus Repo-Root). Es läuft ausschließlich als /tmp-Kopie des realen Clone-Baums (koppelt git clone/git worktree add + Bundle-Kopie), greift nie auf den Ist-Baum zu und hinterlässt den Ist-Baum git status --porcelain-unverändert (G-8).
  • Kein sed -i: alle Mutationen im Gate-Skript über cp/printf > file/git …-Aufrufe (portabel macOS/BSD- und Linux/GNU-Userland, AC-2).
  • Harness schreibt keine erwarteten Wiki-Bodies / Lease-/Log-/Git-Ausgänge: die beiden frischen Agent-Kontext-Läufe (c) erzeugen die Wiki-/Receipt-Ausgabe; das Gate vergleicht A vs B (§5.14 Pkt. 2), hard-codiert keinerlei erwartete Bodies/Receipts (AC-4/AC-5, epic-3-context Z. 46; Defer-Home: DET-1/DET-2-Plan-Literale, R-9-Receipt-Literale).
  • raw/ bleibt Status quo: der Clean-Checkout-Fixture-Roh-Zuwachs lebt in der /tmp-Fixture (Kopie des realen raw/-Baums + Zuwachs dort), nie als Mutation im realen raw/.
  • Validator-Ausführung: der frische Agent-Kontext ist der DIR-Exekutor für schema/validator.md; das Gate validiert nur Verdikt-Grammatik/-Exhaustivität, urteilt nie selbst (D-3-Compliance).
  • AC-4-Defizit-Route: erkennt das Gate ein Validator-Defizit, schlägt G-5 fehl (Non-Zero), Story 3.13 bleibt offen und benennt den Bedarf einer separat autorisierten Epic-1-Remediation; das Gate ändert dann nichts an Schema/Validator.
  • Sandbox-Nachweis: Exit 0, harte PASS/FAIL, /tmp-Baum, nie der reale Ist-Baum (Muster sandbox-3-11/3-12).

Ask First:

  • Einen Validator-Patch anzufassen (wäre Epic-1-Remediation, separat autorisiert) — oder Gate-Verhalten zu ändern, das auf realen Wanduhr-/generated.at-Ausnahmen beruht (A0-20).

Never:

  • Kein Umschreiben von schema/compiler.md/schema/validator.md/raw/; kein neues Prädikat/keine neue §7-Invaliditätsklasse; kein Standalone-Inhalts-Befund (D-3); kein textueller Auto-Merge (AD-17c); keine stille Löschung (AD-17e); keine Wanduhr-/TTL-Steuerung (A0-20); kein echtes wiki/-oder-raw/-Schreiben durch das Gate (nur Textquelle); kein Zugriff auf echte fremde Worktrees.

I/O & Edge-Case Matrix

Scenario Input / State Expected Output / Behavior Error Handling
SANDBOX_SUB_RUN_OK n-te Sandbox liefert PASS/Exit 0 Sub-Run erkennbar; FAIL → Non-Zero-Exit, Lauf bricht ab (fail-fast) jede Abweichung = harter Non-Zero
VALIDATOR_AGENT_VERDIKT_OK frische Verdikt-Datei je Datei-Pfad Grammatik §5/§5.1 erfüllt; jede stattfindende wiki/**/*.md-Datei hat ein Verdikt; SUCCESS überall → G-3 PASS fehlende/ungrammatische/FAIL-Verdikte = Non-Zero
VALIDATOR_DEFIZIT fehlende/ungrammatische/FAIL-Verdikte werden nicht selbst repariert G-5 PASS, Story bleibt offen; Bedarf einer Epic-1-Remediation wird textuell benannt Non-Zero-Exit, kein Gate-Flip
FRESH_AGENT_TWO_TREES zwei getrennte Arbeitskopien, gleicher $BASE-Commit beide Runs beenden; git diff A B zeigt nur at-Abweichung; Bundle-Hashes/Reihenfolge/Plan A==B (außer at) Divergenz außerhalb Ausnahme = harter FAIL
PERTURBIERTE_ENTSCHEIDUNG eine der zwei Runs wird im Script über eine perturbed Option geroutet Negativ-Kontrolle: divergente Bäume werden erkannt (G-6) Non-Zero-Exit, kein false-PASS
PORCELAIN_CLEAN nach dem Lauf git status --porcelain --untracked-files=no auf dem Ist-Baum leer überszogene Gate-Artefakte = Non-Zero
CONSUMER_SMOKE nur das erzeugte Bundle FR-15/16-Fragen ohne Planungs-Referenzen beantwortbar (G-7) Referenz auf PRD/Spec/Spine = Non-Zero
GENERATED_AT_AUSNAHME die einzige erlaubte Differenz generated.at/verified[].at-Zellen dürfen abweichen andere Zellen abweichend = Non-Zero

Code Map

  • _bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.shneu erzeugt (re-executierbar, Muster sandbox-3-12/run-sandbox.sh 820 Z. + sandbox-3-8 Zwei-Worktree-Mechanik Z. 249-251/268/281-306/415-433; set -u, kein set -e — negatives Assertion-Idiom cmd && fail; ROOT=$(mktemp -d /tmp/sb313-XXXXXX); git config core.autocrlf false + core.filemode false; pass()/fail() hart; End-Exit 0). Abschnitte: (A) Setup — Repo-/Bundle-/Referenz-Check, Referenz-Sandbox-Liste sandbox-3-1..3-12, git status --porcelain-Pre-Check; (B) Käfig-Bau/tmp-Kopie des realen Clone-Baums (liest alle wiki/**/*.md-Dateiliste, kopiert schema/raw/…), git init+baseline; (C) 12 Sandbox-Sub-Runs — je bash …/sandbox-3-N/run-sandbox.sh mit Exit-Check; (D) Validator-Agent — frischen Sub-Agent-Kontext starten, der schema/validator.md über alle wiki/-Dateien ausführt und verdict-*.md-Dateien (SUCCESS/FAIL-Format) ablegt; (E) Zwei-frische-Agenten — zwei /tmp-Arbeitskopien (G-Kontext), shared $BASE-Fixture-ROH-Zuwachs raw/alpha-v2.md+Ziel wiki/alpha.md committet, beide Runs auf git worktree add $BASE, A/B-git diff -- wiki/ + Hash-/Frontmatter-Vergleich, Nur-at-Ausnahme; (F) G-1..G-8 harte Assertions; (G) Nachweise/Porcelain — Endzustands-Invariante + git status --porcelain-leerer Zustand.
  • _bmad-output/implementation-artifacts/sandbox-3-12/run-sandbox.shread-only Ausgangspunkt (L-1..L-9, Exit 0; Portrait der $5.18-Kill-Point-/Clean-Input-Härtung), Ausgangspunkt der pass()/fail()/Isolate-Helfer.
  • _bmad-output/implementation-artifacts/sandbox-3-8/run-sandbox.shread-only Quelle der Zwei-Worktree-Mechanik (DET-2: git worktree add -q "$ROOT/wt-a" "$BASE" Z. 249-251; run2_worktree() Z. 268; Manifest-Validierung Z. 281-306; Cross-Receipt-Vergleich A vs B Z. 415-433) — der 3.13-„Zwei-frische-Agenten"-Kern.
  • _bmad-output/implementation-artifacts/spec-3-8-determinismus-vertrag-ad-17h-als-agent-instruktions-validato.mdread-only Defer P-5 (Z. 150): „die zwei frischen Agent-Kontexte sind mechanisch simuliert … der Nachweis echter frischer Kontexte erfolgt im Story-3.13-Abnahmegate über reale Agent-Läufe".
  • _bmad-output/implementation-artifacts/deferred-work.mdappend, read-only lesbar (Aufgegriffen-/3.13-Home-Marker): L551 (DET-1/2-Plan-/Form-Literale), L560 (R-9-Receipt-Literale), L576 (wiki//raw/-Invarianten-Beweis), L594 (Zwei-Producer-verschiedene-<id>-Gewinner), L597 (Zwei-Worktree-Barriere-überlappung), L611 (Zwei-Worktree-Übernahme), L629 (geteilter-Ref-Namespace-Real-Beweis), L633 (AC-3-Stash-/AC-5-kombinierter-Clean-Input-Beweis) — diese werden über die echten Gate-Runs einschlägig geschlossen (Home 3.13-Abnahme realisiert); der zugehörige RD-Notiz-/Defer-Block bleibt unverändert (nur das Home ist erledigt).
  • _bmad-output/implementation-artifacts/sprint-status.yamlmutiert nach Gate-Freigabe (Step-05): Key 3-13-epic-3-verifikations-und-abnahmegate backlog → done (final); epic-3 bleibt solange in-progress; last_updated (Format MM-DD-YYYY HH:MM).
  • _bmad-output/implementation-artifacts/epic-3-context.mdmutiert („Edit freely") nach Gate-Freigabe: Z. 7/46/52 von „…als abgeschlossen/…Gate…zwei frische Agent-Kontexte…" auf Ist-Zustand (Gate erfolgreich ausgeführt) aktualisiert.
  • wiki/log.mdappend (Vertrag §5): Story-3.13-Eintrag (Gate-Lauf, Sandbox 3-13, G-1..G-8, Zwei-frische-Agenten-A/B-Identität, Sandbox-Nachweis 12×Exit 0, Validator-Integration, Porcelain-Check, sprint-status.yaml-Flip) — nur vertragskonforme fachliche + Koordinationsereignisse (AC-6; Dokumentations-Kategorie wie 3.12—3.13-Gate-Lauf selbst ist zulässiger Koordinations-Nachweis, Kategorie-Historie bleibt außerhalb).

Read-only evidence (AD-3): schema/validator.md (Rev 9, §0 L9-22 „rein textuell — kein Standalone-Programm (D-3)", §3 14-Punkte-Tabelle Z. 50-73, §5 Verdikt-Format Z. 139, §5.1 Selbstbegrenzung Z. 154, §6-Fachprüfungen EC-1/EC-3/EC-11 Z. 160-201, §7-Fixtures Z. 202-289); schema/compiler.md (Revision 3.7; §0 Z. 9, §6 Z. 441-446 — „Das gesamte Bundle gemäß schema/validator.md geprüft"; §7 Z. 486-499; §8-Revisionslog Z. 501-543); schema/wiki-compiler.md; adapters/; raw/ (immutable Evidenz). schema/canonical-terms.md append-only unangetastet.

Tasks & Acceptance

Execution:

  • _bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh — Gate-Skript bauen (Setup → Käfig-Bau → 12-Sandbox-Fail-Fast → Validator-Agent → Zwei-frische-Agenten-A/B → G-1..G-8 → Porcelain-Check), harte PASS/FAIL, Exit 0, /tmp-Kopie nie Ist-Baum
  • schema/compiler.md/schema/validator.md/adapters//raw/ — read-only verifizieren (kein Diff), schema/canonical-terms.md unangetastet (AD-3)
  • Gate real ausführen (mehrere Läufe, inkl. skript-seitiger Zwei-/Mehr-Lauf-Stabilität) bis Exit 0; Negativ-Kontrollen ausführen
  • _bmad-output/implementation-artifacts/sprint-status.yaml — Key 3-13 → done, epic-3 Status-Kette prüfen, last_updated aktualisieren (Step-05 nach Review)
  • _bmad-output/implementation-artifacts/epic-3-context.md — Abnahme-Zeile auf Ist-Zustand nachführen
  • wiki/log.md — Story-3.13-Eintrag (Gate, Sandbox-3-13, G-1..G-8, Validator-Integration, Zwei-frische-Agenten, Porcelain) — nur vertragskonforme Inhalte (AC-6)
  • _bmad-output/implementation-artifacts/deferred-work.md — 3.13-Home-Defers (L551/L560/L576/L594/L597/L611/L629/L633) als aufgegriffen/erledigt markieren (Defer-Block selbst historisch unverändert)
  • Nachweis: git status --porcelain des realen Ist-Baums nach Gate-Lauf unverändert (G-8), raw/ unverändert

Acceptance Criteria:

  • Given einen sauberen Checkout, when das repositoryweite Epic-3-Gate ausgeführt wird, then führt ein Kommando alle Epic-3-Szenarien fail-fast aus; fehlgeschlagene Assertions, übersprungene Szenarien, fehlende Abhängigkeiten und Kindprozessfehler ergeben einen Non-Zero-Exit (AC-1).
  • Given macOS/BSD- und Linux/GNU-Userland, when das Gate läuft, then ist es ohne plattformspezifisches sed -i reproduzierbar, arbeitet ausschließlich in temporären Repositories und hinterlässt git status --porcelain unverändert (AC-2).
  • Given positive und negative OKF-Fixtures, when validiert wird, then wird der vollständige Vertrag aus schema/validator.md über alle wiki/-Dateien ausgeführt; unter anderem fehlendes generated.by, kalenderinvalides generated.at, unzulässige Source-Pfade und gebrochene Index-Links verhindern SUCCESS und Commit (AC-3).
  • Given der autorisierte Validator-Vertrag oder seine ausführbare Aufrufbarkeit weist dabei ein Defizit auf, when das Gate es erkennt, then bleibt Story 3.13 offen und benennt den Bedarf für eine separat autorisierte Epic-1-Remediation; Story 3.13 darf die Schema-Semantik nicht still ändern, verantwortet aber die Integration und vollständige Ausführung des bestehenden Vertrags (AC-4).
  • Given eine repräsentative committete Fixture, when ein frischer Agent-Kontext die kanonische Instruktion schema/compiler.md ausführt, then darf der Harness nach dem Setup weder erwartete Wiki-Bodies noch Lease-, Log- oder Git-Ausgänge selbst schreiben (AC-5).
  • Given diese Fixture, when der Compilation Run endet, then demonstriert er Update eines bestehenden Concepts, Anlage einer neuen Wissenseinheit, kohärente Multi-Source-Synthese, vollständige Multi-Evidenz-Provenienz, Source-Immutabilität und byte-identische Erhaltung unabhängigen Wissens (AC-6).
  • Given dasselbe kanonische Eingabemanifest, when zwei frische Agent-Kontexte in getrennt aufgebauten Worktrees laufen, then stimmen Run-Receipts und Bundle-State gemäß Story 3.8 überein; eine perturbierte Entscheidung oder Ausgabe wird erkannt (AC-7).
  • Given nur das erzeugte Knowledge Bundle ohne Planungsartefakte, when ein unabhängiger Consumer im Epic-5-Abhängigkeits-Smoke-Test vordefinierte Wissensfragen beantwortet, then benötigt er weder Product Brief, SPEC, Architecture Spine noch Story-Historie zum semantischen Verständnis; solche Referenzen sind höchstens optionale Provenienz/Traceability (AC-8).
  • Given ein bestandenes Gate, when die Status-Synchronisation läuft, then wird der Key 3-13-… auf done geflippt und Epic 3 erst nach bestandenem Gate und done aller Stories 3.8..3.13 auf done gesetzt; bis dahin bleibt Epic 3 in-progress (AC-9).

Spec Change Log

Leer bis zum ersten bad_spec-Loopback (Step-04).

Design Notes

Der Gate-Kern löst das 3.8-P-5-Defizit: die Zwei-frische-Agenten-Bestätigung läuft hier echt — zwei getrennte Arbeitskopien desselben $BASE-Commits, jeweils frischer Kontext, schema/compiler.md als einzige Instruktionsquelle, A/B-Angleichung nur auf den erlaubten at-Zellen (§5.14 Pkt. 2). Der Validator bleibt Instruktion, wird aber durch einen dritten frischen Agent-Kontext zur ausführbaren Prüfung gemacht (er liest schema/validator.md und erzeugt SUCCESS/FAIL <pfad> <ursache> über alle wiki/-Dateien); das Gate prüft nur Verdikt-Grammatik/Exhaustivität, nie den Inhalt (D-3-Compliance). Die 12 Sandbox-Suiten werden als Sub-Runs in eine fail-fast-Sequenz gehoben — der „ein Kommando"-Wortlaut von AC-1.

Beispiel (Zwei-frische-Agenten, deterministisch):

# im Gate-Skript: Bau beider Bäume auf denselben Commit
git worktree add -q "$ROOT/wt-a" "$BASE" && git worktree add -q "$ROOT/wt-b" "$BASE"
# A vs B — nur die at-Zellen dürfen differieren:
git diff --stat "$ROOT/wt-a" "$ROOT/wt-b" -- wiki/   # ≠ leer (nicht-vakuum), at-only

Die repräsentative Fixture nimmt das 3-12-Sandbox-Muster (Mini-Bundle wiki/index.md+alpha.md+log.md, raw/alpha-v1.md als Baseline, Zuwachs raw/alpha-v2.md → Update von alpha.md, ergänzt um Bereichs-Synthese/gamma und wiki/-bleibt-Byte-identisch für unabhängiges delta) — in den /tmp-Käfig kopiert und committet, nie das reale Bundle.

Verification

Commands:

  • bash _bmad-output/implementation-artifacts/sandbox-3-13/run-sandbox.sh -- expected: 12 Sandbox-Sub-Runs (jede exit 0), Validator-Integration, Zwei-frische-Agenten A/B-Identität (nur at-Zellen abweichend), G-1..G-8 harte PASS, finaler Porcelain-Check, Exit 0; kein Zugriff auf den realen Ist-Baum.
  • git status --porcelain (Repo-Root) -- expected: leer/nur Story-3.13-Artefakte; schema/compiler.md, schema/validator.md, schema/wiki-compiler.md, adapters/, raw/ ohne Diff (AD-3); sandbox-3-13/ als einziger neuer Verzeichnis-Inhalt.
  • git diff --stat (Repo-Root) -- expected: nur Story-3.13-Touched-Files (run-sandbox.sh, spec, log.md, sprint-status.yaml, epic-3-context.md, deferred-work.md), kein Source-/Schema-Diff (AC-4: keine stille Schema-Änderung).
  • optional: Deb-Run des Gate-Skripts mit bash -x -- expected: keine sed -i-Aufrufe (AC-2).

Manual checks (if no CLI):

  • Keine Beschreibung nötig — sämtliche Nachweise laufen über das Gate (Exit-Code) und additive Diffs.

Suggested Review Order

Abnahme-Ebene (Kern)

  • Gate-Skript — Fail-Fast-Orchestrierung der 12 Sandbox-Suiten, /tmp-Käfig statt Ist-Baum, Porcelain-Check. run-sandbox.sh

  • Zwei-frische-Agenten A/B (AC-7): getrennte Worktrees auf $BASE, git diff A B -- wiki/ nur at-Zellen, Negativ-Kontrolle perturbed. run-sandbox.sh

  • Validator-Integration (AC-3/AC-4): frischer Agent-Kontext führt schema/validator.md über alle wiki/-Dateien aus; Verdikt-Grammatik/Exhaustivität; Defizit → Non-Zero + Epic-1-Remediation-Bedarf. run-sandbox.sh

  • Harness schreibt keine erwarteten Ausgänge (AC-5), repräsentative Fixture beweist AC-6 inkl. byte-identische Erhaltung unabhängigen Wissens; Epic-5-Smoke G-7 (AC-8). run-sandbox.sh

Status- & Nachweissynchronisation (peripher)

  • Story-3.13-Eintrag im kanonischen Knowledge Log (Vertrag §5; Gate-Lauf, Sandbox 3-13, G-1..G-8, Zwei-frische-Agenten, Porcelain-Check). log.md

  • Abnahme-Zeile von „…als abgeschlossen…Zwei-frische-Agenten-Kontexte…" auf Ist-Zustand nachgeführt. epic-3-context.md

  • 3.13-Home-Defers (Zwei-Worktree-Überlappung, DET/R-9-Receipt-Literale, wiki//raw/-Invariante, Stash-/Clean-Input-Beweis) als aufgegriffen/erledigt markiert. deferred-work.md

  • Key 3-13 → done (final, nach Review), Epic-3 bleibt bis zum Gate-Abschluss in-progress. sprint-status.yaml