Files

111 KiB
Raw Permalink Blame History

Log

2026-08-20

  • Story 3.8 → in-progress (Determinismus-Vertrag (AD-17h) als Agent-Instruktions-Validator, Verankerung §5.14, 2026-08-20): schema/compiler.md Revision 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[].at als 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 auf at; Sandbox DET-2 nicht-vakuum; kein Prozess/Server/MCP/Standalone, AD-6/AD-11), (3) Ausnahme-Menge (allein der generated.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>, datumsgruppierter log.md-Eintrag, kein Banner, AD-16-Default). §7-Determinismus-Vorbehalt aufgelöst (Story-3.8-Verankerung, bestehende Bullets unverändert); §8-AD-17h auf den §5.14-Anker angehoben (mit generated.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-Key 3-8-determinismus-vertrag-ad-17h-als-agent-instruktions-validatoin-progress (Implementierungs-Flip, HEAD-Stand 08-20-2026 09:05; finaler review/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 reale wiki/-/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-4 at-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--ba-b, -xx, 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 nur log.md). Defers aufgegriffen/geschlossendeferred-work.md append-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. 13; A0-20-Post-Zustand-Negativkontrolle → §5.14 Pkt. 24; 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ß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, via git status geprüft); schema/canonical-terms.md unverändert (append-only-Registry unangetastet). Validator-Verdikt auf Ist-Bundle (human-mechanisch ausgeführte Text-Instruktion schema/validator.md Rev 9, D-3 — kein CLI; keine Concept-Inhalts-Mutation): alle wiki/-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.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-sicherstellreview (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-sicherstellreview (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 Deferdeferred-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).
  • Story 3.6 → in-progress (Lease-Staleness & Recovery-Basis, Verankerung §5.12, 2026-08-19): schema/compiler.md Revision 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 (nicht wiki//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-Matrix STALE_ABLAUF), kein Wanduhr-Timestamp im Lockfile-/Registrierungs-Format (A0-20; streng durchsetzendes Zeit-TTL = Ask-First); (2) holder_id-Ableitung (deterministischer Default holder_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_UEBERNEHMEN gg. erneute Merge-Base-Prüfung (Pkt.-4-Regel) mit log.md-Protokoll, VERWAIST_STALE_MARKIEREN via Registry-Marker der aktuellen Generation (Blockade aufgehoben); verwaiste Leases nie still gelöscht (AD-17e); (4) baseline_commit-Merge-Base-Diskrepanz-Regelgit merge-base gewinnt, notierter <Baseline-Commit> bleibt Sekundär-Fingerprint, Fallback ohne Boundary (alle raw/-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 & native git stash-Varianteraw/ 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.md alleiniger 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-Vorbehalt Lease-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 an schema/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). Sandbox sandbox-3-6/run-sandbox.sh re-executierbar (Muster sandbox-3-5, /tmp-Baum, core.autocrlf false-Pin für deterministische git stash-Roundtrips; nie der reale wiki/-/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üfung git 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-Marker stale: 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; native git stash push/pop um wiki/alpha.md byte-identischer Restore via SHA-256, nie gelöscht; log.md-Recovery-Eintrag Pkt. 6d/7d), STALE-5 REGISTRIERUNGS-INVARIANTE (drei Runs in EINER registry/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- und log.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.md append-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; native git stash-Variante → §5.12 Pkt. 5), je Status aufgegriffen (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ßlich wiki/log.md (dieser Eintrag) — keine Concept-Inhalts-Mutation (Instruktions-Story; sprint-status.yaml/deferred-work.md/sandbox-3-6/ liegen außerhalb wiki/ und sind nicht Teil der Diff-Probe). Validator-Verdikt (per-Datei, human-mechanisch ausgeführte Text-Instruktion schema/validator.md Rev 9, D-3 — kein CLI; unverändert zur Story 3.5, Story 3.6 mutiert keine Concept-Inhalte): alle 7 wiki/-Dateien SUCCESSwiki/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, via git status geprüft); keine neue §7-Klasse; kein Standalone (D-3). sprint-status.yaml-Key 3-6-…in-progress, last_updated → 08-19-2026 21:30.
  • Story 3.5 → 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-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt; sprint-status.yaml-Key 3-5-…done, last_updated → 08-19-2026 20:37; Spec-Frontmatter status: '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 Defersdeferred-work.md append-only (holder_id-Quelle · baseline_commit-Merge-Base-Diskrepanz-Regel · Sandbox-log-Akkumulator [D2 schließt] · native git stash-Variante — Home je Story 3.6/3.8). Sandbox re-executiert: L1L6 + 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: 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).
  • Story 3.5 → in-progress (Leasing & Dirty-Tree-Schutz, Verankerung §5.11, 2026-08-19): schema/compiler.md Revision 3.0 — neue Sektion §5.11 „Leasing & Dirty-Tree-Schutz für konkurrierende Producer (Story 3.5)“ (nach §5.10, vor §6): Lease-Akquise auf lease/<area>/<id>-Branches vom Merge-Base mit Lockfile (lease/<area>/<id>.lock, semantisch identisch in jedem Adapter, A0-12; deterministische Felder area/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 jenseits wiki/); Dirty-Tree-Schutz (AD-17e/f, A0-16: Pre-Mutation-Prüfung, Stash/Scratch-Zone außerhalb wiki/, 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 :357 aufgelö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-Key 3-5-…in-progress. Sandbox sandbox-3-5/run-sandbox.sh re-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_lease entfernt 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); L2 akquire-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 (HEAD unverändert [ "$(git rev-parse HEAD)" = "$BASE" ], ALPHA_ONLY exakt „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) → einzelnes BUILD_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 EINEM log.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]; native git 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); alle wiki/-Dateien SUCCESS (keine Inhalts-Mutation); git status --porcelain -- wiki/ zeigt ausschließlich wiki/log.md (dieser Eintrag).
  • Story 3.4 → 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-Präzedenz) ist hier als eigener dokumentierter Schritt nachgeführt; sprint-status.yaml-Key 3-4-…done, last_updated → 08-19-2026 16:40 (Präzisions-Rückgewinnung auf HEAD-Format HH:MM); Spec-Frontmatter status: '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 S1S6 + N1N3 + FW, Exit 0 dreimal re-executiert, 30 harte PASS-Assertionen; S1/S2-log.md-Multi-Source-Listen; log.md-/Spec-/sprint-status-Konsistenz); 4 Defersdeferred-work.md append-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ßlich wiki/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 S1S6 + N1N3 + Form-Wahl-Probe FW = 10 Szenarien (zuvor 7): N1 NO_OP-SYNTHESE ergänzt (deckt die I/O-Matrix-Zeile NO_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 von alpha.md/log.md/index.md, kein generated.at-Bump, kein sources-Zusatz, kein log.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 in log.md — Epic-4-Interface — PASS) und N3 AD-4c-UEBERNAHME-MARKER (Kontext-Marker-Muster „übernommen aus gamma auf Basis von raw/gamma-v1.md#S-1, nicht eigenständig belegt"; eigenständig belegte Aussagen tragen den Marker nicht; raw/gamma-v1.md wird nicht als eigene sources-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 von assert_invariant/assert_frontmatter ersetzt): 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 Key foo:); 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ßlich wiki/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: Key 3-4-wissen-aus-mehreren-sources-synthetisieren in-progress): schema/compiler.mdRevision 2.9 — die Synthese-Dimension (AD-4, FR-7; §7-Vorbehalt :343 aufgelöst) als neue Sektion §5.10 „Synthese aus mehreren Sources (Story 3.4)" verankert (nach §5.9, vor §6): (1) Synthese-Stimulus — ≥ 2 belegende raw/-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 nach resource (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 in log.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: …"), grepbasiert grep -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-Reihenfolge Korrigieren → 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 an schema/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 reale wiki/-Baum; Exit 0, zweimal re-executiert): Mini-Bundle mit alpha/gamma-Root-Concepts; Szenarien S1S6 + N1N3 + Form-Wahl-Klassifikationsprobe FW (10), harte Pass/Fail-Assertionen (Exit 1; damit inzwischen 10 Szenarien, Exit 0, zweimal re-executiert): S1 NEU-ANLAGE (zwei Quellen raw/synth-a.md+raw/synth-b.mdein Synthese-Concept delta, 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 Pfad alpha → §5.9-Formwahl ERWEITERN, sources-Zuwachs s2+s3 lexikografisch, 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 Key foo: im Synthese-Concept → Frontmatter-Subset-HARD-FAIL, Pkt. 8/P2-Element (6) — PASS; Pkt.-8-??-Negativkontrolle lebendig: ungetrackte Nicht-Ziel-Datei ghost.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 in log.md — Epic-4-Interface — PASS), N3 AD-4c-ÜBERNAHME-MARKER (Kontext-Marker „übernommen aus gamma auf Basis von raw/gamma-v1.md#S-1, nicht eigenständig belegt"; eigenständig belegte Aussagen tragen den Marker nicht; raw/gamma-v1.md als übernommene Quelle nicht in sources — 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 zeigt git status --porcelain -- wiki/ ausschließlich wiki/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-Instruktion schema/validator.md Rev 9, D-3 — kein CLI; unverändert zur Story 3.3, Story 3.4 mutiert keine Concept-Inhalte): alle 7 wiki/-Dateien SUCCESSwiki/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, via git status geprü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-Flip in-progress → done (Sprint-Sync-Konvention, Story-3.1/3.2-Präzedenz: Review-Abschluss setzt done im selben Loop) ist hier als eigener dokumentierter Schritt nachgeführt; sprint-status.yaml-Key 3-3-…done, last_updated → 08-19-2026 13:21; Spec-Frontmatter status: 'done', review_loop_iteration: 0; Spec-## Suggested Review Order verankert (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 in schema/compiler.md; Sandbox U1U9 mit 2 neuen Negativ-Kontrollen U8/U9, vollen byte-Identitäts-Assertionen, reellen S-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ßlich wiki/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 Log Review-Loop-1-Eintrag): kein intent_gap, kein bad_spec (kein Loopback) — patch (auto-fixiert) + defer (5 Einträge → deferred-work.md append-only) + reject (noise). Patches (auto-fixiert, erneut verifiziert): (1) schema/compiler.md §5.9 Pkt. 2 — Operationelle-Ebene: Abgrenzungs-Reihenfolge Korrigieren → 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 auf generated.at-Konvention (Home Story 3.8). (2) Sandbox run-sandbox.sh (jetzt 9 Tests U1U9, Exit 0): U1/U2/U3 byte-Identität auf alle drei bestehenden Aussagen erweitert (Lücke aus V-1); U8 neu — unbefugter Frontmatter-Key foo: im YAML → Struktur-Ebene-HARD-FAIL (Pkt. 5/P2-Element (6)) — U9 neu — ungetrackte neue Datei wiki/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_frontmatter um canoniche Reihenfolge + Duplikat-Prohibition erweitert; reale S-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 (om rotierte-Tense). (3) wiki/log.md: Spec-Frontmatter-Status-Mismatch korrigiert (in-progressin-review, Review-Handoff). (4) sprint-status.yaml last_updated: Präzisions-Regression zurückgesetzt (08-19-2026 13:21, HEAD-Format 08-19-2026 13:14-Familie); General-Verhalten des Sync-Steps als Defer notiert. Defers (5, deferred-work.md append-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-runnable bash _bmad-output/implementation-artifacts/sandbox-3-3/run-sandbox.sh); grep -n "Struktur-Erhaltungsregel\|operationelle\|Revision 2.8" schema/compiler.md → 5 Marker; AD-3 git 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 Log Review-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: Key 3-3-bestehende-concepts-erweitern-präzisieren-korrigieren bleibt in-progress — der Review-Abschluss-Flip done erfolgt gemäß Workflow-Konvention durch den Review-Schritt): schema/compiler.mdRevision 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 — nur sources-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 an schema/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 reale wiki/-Baum; Exit 0): Mini-Bundle mit Concept alpha + nicht-betroffenem Kontroll-Concept beta; 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, kein at-Bump, kein sources-Zusatz, kein log.md-Eintrag — PASS; Probe leer = Ghost-Diff-negativ — PASS), U5 NEGATIV-KONTROLLE (simulierter Ghost-Diff auf beta wird 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-256 6b148dd1… (alpha.md) / a6d08427… (log.md) identisch je Lauf, auch nach Commit — PASS), U7 MEHRFACH_TREFFER (I/O-Matrix-Zeile; zwei Neuevidenzen raw/alpha-v2.md + raw/alpha-v3.md desselben Runs treffen denselben Concept-Pfad alphaein konsolidiertes Update: eine Body-Mutation, ein log.md-Eintrag, ein konsolidierter sources-Zuwachs s2+s3, ein generated.at; Zuwachs-Sicht-Ordnung v2-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 zeigt git status --porcelain -- wiki/ ausschließlich wiki/log.md (dieser Eintrag) — Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt, keine Concept-Inhalts-Mutation (Instruktions-Story, kein neues committetes raw/-Material; Demonstration per Sandbox). Validator-Verdikt (per-Datei, human-mechanisch ausgeführte Text-Instruktion schema/validator.md Rev 9, D-3 — kein CLI; unverändert zur Story 3.2, Story 3.3 mutiert keine Concept-Inhalte): alle 7 wiki/-Dateien SUCCESSwiki/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, via git status geprü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.mdRevision 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-Flip in-progress → done (Sprint-Sync-Konvention; Story-3.1-Präzedenz: Review-Abschluss setzt done im selben Loop) ist mit dieser Zeile als eigener dokumentierter Schritt nachgeführt; sprint-status.yaml-Key 3-2-… bleibt done (die gefrorene Always-Klausel → in-progress beschreibt den Implementierungsstand; Review-Handoff/-Abschluss ist der übliche Folgezustand, s. Sprint-Status-Workflow-Kommentar). (2) D-2 — Sandbox erweitert: run-sandbox.sh um T5 LINK_FOLLOWING_ZYKLUS (Zyklus alpha ↔ omega via Backlink; besuchte Menge → endliche, doppelungsfreie Candidate-Liste omega, alpha — der Zyklus endet), T6 TRAVERSAL_REACH_ONLY (Term trafo-gebiet trifft nur die Area-index.md → die gewurzelten Concept-Pfade trafo/delta, trafo/epsilon sind die Kandidaten; index.md selbst ist kein Concept-Kandidat) und T7 TERM_ABLEITUNG_SYNONYM (Registry-Test-Doppel: Quanten Protocol → Normalisierung → quanten-protocol (Canon-Treffer), QuantenProtocolquantenprotocol (Variante-Treffer) → canonische Form quanten-protocol; Negativ-Fall nicht-in-registry → wie notiert, kein stiller Ausschluss); T2-Kommentar zu index korrigiert (Stufe-a-Treffer auf wiki/index.md löst Stufe b aus — kein Concept-Kandidat); P-1 — T1/T4 jetzt mit harten Pass/Fail-Asssertionen (exit 1 bei Abweichung). (3) D-3 — Selbsttest-Beleg (b) neu belegt: die Rev-2.5-Log-Zeile (b) beschrieb einen nicht committierten Baum (Term quanten-protocol, sub/beta.md, SHA-256 159092bb…) — 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: DeterminsmusDeterminismus (compiler.md §8-Referenz, diese Log, deferred-work.md-Belege), §3.2-beankert§3.2-angeankert (Rev-2.5-Log-Zeile), MembrumMitglied (Spec-Design-Notes), Konventionelle Determinismus-LückeBekannte Determinismus-Lücke (deferred-work.md-Beleg; compiler.md:53 sagt „Bekannte"), ResovierungAuflö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/ → exakt wiki/knowledge-kompilation-inkrementell.md (ein Concept-Pfad, log.md ausgeschlossen); (b) Mini-Sandbox (_bmad-output/implementation-artifacts/sandbox-3-2/run-sandbox.sh, re-executierbar): alle 7 Tests PASS — T1 Membership (exakt alpha; Kontaminations-Kontrolle ohne Exklusion trifft zusätzlich log), T2 Zwei-Run-Identität (identisch), T3 NO_MATCH (leer), T4 Vereinigung alpha,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ßlich wiki/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 bleibt done, last_updated → 08-19-2026. Spec-Frontmatter: status: 'done', review_loop_iteration: 3; Spec-### Review Findings abgehakt (5 Decisions + 2 Patches + 4 Defers → deferred-work.md).
  • Step-04-Review Loop 2 / Patch-Runde (Story 3.2, 2026-08-19): schema/compiler.mdRevision 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 (--exclude ist 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 nutzten rg -l '<term>' --exclude=log.md wiki/ — nicht-existent (ripgrep 14.1.1: rg --excludeunrecognized flag; GNU grep unterstützt --exclude, ripgrep nutzt -g '!log.md' / --glob '!log.md'). Die Instruktion nutzt jetzt tool-korrekte Formen: rg rg -l '<term>' -g '!log.md' wiki/ (native Glob-Exklusion) bzw. GNU grep grep -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/), Kommentar wiki/log.md exkludiert 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 S1S6): Tests T1T4 (Membership-Pin — Term auf Concept-Bodies UND log.md verteilt, 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/ → exakt wiki/knowledge-kompilation-inkrementell.md; ohne Exklusion rg -l 'A0-18' wiki/ → zusätzlich wiki/log.md (Selbstkontamination — der §3.2-Pkt.-2a-Fall, reell belegt); (b) GNU-grep-Äquivalent grep -rl 'A0-18' --exclude=log.md wiki/ → identisch wiki/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 T1T4 → siehe Rev-2.6-Eintrag; (e) git status --porcelainwiki/ nur log.md (dieser Eintrag; Erhaltungs-Invariante §5.9 Pkt. 5 gewahrt), schema/compiler.md + deferred-work.md sind außerhalb wiki/ (kein Teil der Diff-Probe). Abschlussklausel Rev 2.6: schema/wiki-compiler.md/schema/validator.md/raw/ unverändert (AD-3, geprüft via git 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: Key 3-2-relevanzbestimmung-textual-deterministisch-umsetzen-grep-rip backlogin-progress): schema/compiler.mdRevision 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 Registry schema/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 über wiki/ — (a) rg -l '<term>' --exclude=log.md wiki/ (GNU-grep-Äquivalent grep -rl '<term>' --exclude=log.md wiki/; log.md strukturell exkludiert — die Candidate-Liste ist auf Concept-Pfade definiert, log.md ist 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 (Strip wiki/-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.md als 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-Eintrag epic-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, exakt wiki/knowledge-kompilation-inkrementell.md (ein Concept-Pfad; log.md ausgeschlossen — der --exclude=log.md-Fakt ist ehrlich dokumentiert: ohne die Exklusion würde log.md ab dem Moment selbst „Kandidat", in dem dieser Eintrag A0-18 zitiert — die B1-log.md-Kontamination ist damit geschlossen); (b) mini-Sandbox-Baum (/tmp/sb32-…, Term quanten-protocol auf Concept-Bodies und log.md verteilt) → exakte Candidate-Liste nur Concept-Pfade (wiki/alpha.md, wiki/sub/beta.md; log.md ausgeschlossen, wiki/gamma.md ohne Term nicht getroffen); normalisiert alpha, sub/beta; Zwei-Run-Identität (SHA-256 159092bb… ≡); Kontrolle ohne --excludelog.md wird 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 (kein wiki/-Dateimenge-Change durch Story 3.2 — keine Re-Baseline nötig). Validator-Lauf (human-mechanisch ausgeführte Text-Instruktion schema/validator.md Rev 9, D-3 — kein CLI): alle 7 wiki/-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.md bleibt 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ßlich log.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-Baseline 802a557efc543c; Nutzer-Entscheidungen D-1/D-2/D-3/D-4 = 1/1/1/1, jeweils empfohlene Option): schema/compiler.mdRevision 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/ plus git status --porcelain -- wiki/ (erfasst ungetrackte ??-Dateien — die Duplikat-Kontrolle braucht diese Sicht; git diff allein 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 (Strip wiki/-Präfix + .md-Suffix vor dem Teilmenge-Vergleich), Rollback-Mechanik deterministisch benannt (git checkout -- <wiki/pfad> für modifizierte Pfade, ungetrackte löschen, Index git checkout -- <index>); (2) D-2: R-1-Baseline deterministisch<Baseline-Commit> (HEAD der vorherigen Mutations-Boundary, AD-17f) wird vom Producer im wiki/log.md-Run-Eintrag notiert (voller SHA; AD-14: Git liefert Historie, nicht Domain-State — deshalb die Notiz); Diskrepanz-Regel: git diff gewinnt, SHA-256 bleibt Sekundär-Fingerprint; Fallback: ohne vorherige Mutations-Boundary gelten alle raw/-Dateien als Zuwachs; (3) D-3: INPUT_UNCOMMITTED-Abbruch implementiert — neuer P2-Check-Block-Element (1) Input-Zustand: Working-Copy von raw/+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. 14 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/kein at-Bump/kein log.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-at erzeugt 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/ trifft wiki/knowledge-kompilation-inkrementell.md, nicht wissensarchitektur/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-Form git 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-Commit efc543c enthält Revision 2.4 + 2.4.1 (Step-04-Review-Patch-Runde 2026-08-18, in deferred-work.md als „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-Handoff efc543c) → done (dieser Eintrag — Loop-2-Abschluss: 4 Decision-Resolutions + 16 Patches, keine unresolved Findings; spec-Frontmatter status: 'done' + review_loop_iteration: 2 deckungsgleich). 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.mdkein Treffer (Hold ersetzt, unverändert); (b) Diff-Selbsttest (Erhaltungs-Invariante)git diff --name-only 802a557… -- wiki/ → ausschließlich wiki/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-Instruktion schema/validator.md Rev 9, D-3 — kein CLI): alle 7 wiki/-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 (nur M-Einträge, kein ??), S4 CHANGE_DETECTION (außschließlich raw/alpha-v2.md; SHA-256 21e7fc1d… 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-reconcile reviewdone, 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.mdRevision 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 via grep/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), sources nur um echte neue Belege ergänzen (§5.5-Pkt.-1b-Relokation, Vertrag §3.3-Subset), generated.at = aktueller Run-Zeitstempel (A0-20, einmalige at-Festlegung pro Run), vorhandenes human-verified bleibt 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 Run git diff --stat -- wiki/, geänderte Dateien ⊆ (betroffene Concepts log.md nachgeführte index.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 via git diff auf raw/ und/oder SHA-256-Record aus raw/**/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-reconcile backlogin-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.mdkein 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-Instruktion schema/validator.md, D-3 — kein CLI): alle 7 wiki/-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 über git 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.mdRevision 9. Fünf inhaltliche Änderungen, keine neue §7-Klasse (kein Punkt 15; Vertrag schema/wiki-compiler.md + Instruktion schema/compiler.md + raw/ + adapters/ + alle wiki/-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.md des 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) in wiki/wissensarchitektur/index.md; Normalisierung: ././-Strip, .. nicht Teil der Ein-Ebenen-Form); (2) Punkt-4-Vorlage um resolved=<pfad>-Token ergänzt + Semantik verankert (…|file://|resolved=<pfad>; §6.2: nur bei Ablehnung durch aufgelöste Lage außerhalb raw/, Wert = aufgelöster workspace-relativer Pfad) — Fixture 4a ableitbar; (3) Innen-Ebenen-Punkt-6-Fixtures in §7.3 (Negativ: role: x in sources-Eintrag → FAIL Punkt 6; Positiv-Gegenzeile ausschließlich erlaubte Keys → SUCCESS); (4) §7-Fixtures 11a (Negativ: Area-Concept unverlinkt → Concept nicht verlinkt=wissensarchitektur/source-material am 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 — Sample sources: [{resource: README.md}] mit existierender README.md an 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) → genau Punkt 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.md verlinkt source-material.md nicht) → 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 7 wiki/-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.mdexit 0 (Area-Lesart lebend verankert). sprint-status.yaml: code-review-2-1-item-2 und epic-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.md bereitstellen» (Implementierung, inkl. Review-Loop-1-Korrektur + Review-Loop-3-Patches, bmad-code-review 2026-08-18, 4 Layer; Nutzer-Entscheidungen 1/1): schema/compiler.mdRevision 2.3 (neue §5.8 „Progressive Discovery über index.md (Story 2.5)"): (1) Discovery-Pfad — Bundleroot wiki/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 Anlageformwiki/a/b/concept.md-Kandidat (auch ohne index.md; die Area-ohne-Index-Lücke, die der reine index.md-Scan übersähe) wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten (keine Datei, kein Index-Link, textuelle Meldung NESTED 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 4 38 ≡ 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 Baseline main bei 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 von schema/compiler.md §5.8 Pkt. 2 (CWD-Präguard, Erreichbarkeits-Check auf Markdown-Linksyntax ]( per grep -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): Area wissensarchitektur aus der Bundleroot verlinkt (Root→Area, Selbsttest-Lauf A); die Area→Concept-Verlinkung (source-material.md in 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.md existiert, Bundleroot unverlinkt → UNREACHABLE AREA: <area> (textuell benannter Instruktions-Selbsttest-Befund, kein Validator-Punkt); (c) NESTED_AREA_KANDIDATwiki/a/b/index.md- und wiki/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 über LC_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 4 38 ≡ 38 (Ist ≡ Extraktion aus dem Run-Kopf 862cf41 — keine neue Baseline nötig, keine wiki/-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-Instruktion schema/validator.md, D-3 — kein CLI): alle 7 wiki/-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-bereitstellen backlogin-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: reviewdone (Sprint-Status synchronisiert, spec-Frontmatter status: '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) + 11 patch umgesetzt, 4 defer (s. deferred-work.md), 8 dismissed. schema/compiler.mdRevision 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-Commit 862cf410c624072833cd959da9a2fb26235716f6 statt 66451b6… — der gepinnte Selbsttest lief auf dem Zuwachs-Baum deterministisch 38 ≠ 30 = Run-FAIL (bekannt-böser Zustand aus Loop-1-A2, nur halb geheilt); jetzt 38 ≡ 38 (re-executiert: Ist=38, Extraktion 862cf41=38; 66451b6/30 dokumentiert 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 (nur source-material.md existiert; Link-Form/Discovery-Topics waren übergezeichnet). Negativ-Test-Nachweis (Sandbox-Baum, exakte Formel-Ausgabe): (a) TOP_LEVEL_COLLISION — Kandidat mit ID llm-wiki-prinzip: wiki/llm-wiki-prinzip.md existiert → §3.2-Hold „Concept existiert bereits — Aktualisierung ist Epic 3" (keine Datei, kein Index-Link, kein log.md-Eintrag); (b) AREA_WITHOUT_INDEX — Sandbox-wiki/foo/ ohne index.md: wörtliche Punkt-11-Meldung FAIL wiki/foo/ Punkt 11: Index-Regel verletzt (Area ohne index.md=foo) (Validator-§7.1-Fixture-Wortlaut, kein inventiertes AREA_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) aus wiki/wissensarchitektur/source-material.mdDANGLING: ../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.yaml 2-4-… backlogin-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: reviewdone (Sprint-Status synchronisiert, sprint-status.yaml last_updated nachgeführt; spec-Frontmatter status: 'done' deckungsgleich, review_loop_iteration → 2). Validator-Lauf-Korrektur zum obigen Eintrag: die gültige Datei-Zählung ist 7 wiki/-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/type: bundle-Verbot außerhalb der Bundleroot; log.md wird über Punkt 10/V-2 mitvalidiert); die Spec-Zahl 6 ist eine frozen-Defizitzählung (Defer in deferred-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.mdRevision 2.1 (neue §5.7 „Deterministische Bereichszuordnung & Concept-Hierarchie": Routing-Regel textual-deterministisch — (a) First-Class-Link aus dem bestehenden index.md-Baum → Bereich wiki/<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-Meldung FAIL … 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 wird DANGLING; Formel 4 neu auf baseline_commit 66451b6e6c9e139fb3aa3bbf4b01291e1e2d273a (deklarierte baseline_commit-Werte der Spec-Frontmatter, nicht mehr Story-2.3-7e1f449…; Loop-2: Re-Baseline auf den Run-Kopf 862cf41, s. obiger Review-Eintrag), Basename-Filter grep -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 Area wiki/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-Concept type: concept, sources s1=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 verlinkt wissensarchitektur/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 aus 66451b6 = 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 aus 66451b6 (38 ≠ 30, kein Fehlalarm: Zuwachs-Re-Baseline; Loop-2-Korrektur: Re-Baseline auf den Run-Kopf 862cf41, 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-hierarchie backlogin-progress (dieser Statuswechsel findet mit diesem Eintrag statt). Validator-Lauf: alle 7 wiki/-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 „6 wiki/-Dateien" — die Differenz erklärt sich durch das reservierte log.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 in wiki/index.md sind 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.mdRevision 1.8 (neue §5.6 „Concept-Links (Story 2.3)": Pin, Geltungsbereich Concept-Bodies + index.md mit Ausnahmen raw/-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.md unverä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-linkform backlogin-progress (dieser Statuswechsel findet mit diesem Eintrag statt). Kontakt-mit-raw/-Unverändert: die Vorkommen-Zählung der Inline-raw/-Verweis-Muster unter wiki/ (Selbsttest-Formel §5.6 Pkt. 3, Formel (4)) ist identisch zur aus baseline_commit 7e1f449 dynamisch extrahierten Baseline (30, log.md-exkludiert; git ls-tree + git show, deterministisch re-executierbar). Validator-Lauf: alle 5 wiki/-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 auf bb32acd → story-2-2 — 1 decision-needed (D1 Referenzform → Option 1: Komma-Form als zulässige Variante), 12 patch (alle umgesetzt), 4 defer, 2 dismissed. schema/compiler.mdRevision 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 auf Story 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.md Forward-Referenz-Zitat disambiguiert. Defer W2W4 (Fragment-Existenz, Marker-Grammatik, sources-id-Eindeutigkeit — keine re-runnable Prüfung ohne Standalone, D-3) + W1 (sources-Closure) in deferred-work.md. Re-Verifikation: sh -c "grep -nE '\(raw/' wiki/*.md" 27 Treffer, alle 3 Diagramm-Marker + Forward-Referenz mit exaktem Token, sources-id je 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.md um §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"), eindeutiges id-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.md nachkonformiert — 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 in wiki/knowledge-kompilation-inkrementell.md (Datenfluss) stammt aus raw/architecture-spine/architecture-spine-2026-08-14.md#AD-5 — zusätzlicher sources-Eintrag (id: s2) ergänzt; das Diagramm in wiki/wissensarchitektur-trennung-states.md (Sources → Compilation → Knowledge Bundle → Consumers) aus raw/prd/prd-wow20-2026-08-14.md (§ 8.3 Separation of Concerns) — zusätzlicher sources-Eintrag (id: s2) ergänzt. sources-id je Concept eindeutig; keine unautorisierten Keys. wiki-compiler.md/validator.md/raw/ unverändert. Validator-Lauf: alle 5 wiki/-Dateien SUCCESS (Punkte 1/6/11/14, EC-1) — Story 2.2 review.
  • Story 2.1 «Concepts aus Source Material erzeugen (OKF-Konform)» → done (Human-Review-Freigabe erteilt): Nutzer hat die verbleibende Schwelle (menschliche Review-Freigabe) überschritten — Status reviewdone, sprint-status.yaml nachgefü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-Item code-review-2-1-item-2 in deferred-work.md verankert.
  • 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.md Dedupe + n=21, review-input-dryrun-…md 16+2-Auflösung, epic-2-context.md AD-4c tautologisch, spec Verification/Change-Log, sprint-status.yaml closed-Datum). 2 Patches auf der gefrorenen validator.md (Rev 8) geholdert → nächste autorisierte Validator-Revision (Rev 9: Punkt-4-Grammatik resolved=-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 ist done-fähig; einzige verbleibende Schwelle ist die menschliche Review-Freigabe (reviewdone). Action-Item code-review-2-1-item-1-autorisierte-validator-revision-optiondone (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.md Revisionslog-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.md außerhalb raw/, 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. Vertrag schema/wiki-compiler.md und schema/compiler.md unverä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 mit role: x bei existierender raw/-Datei) → FAIL Punkt 6 (Key=role); reales Bundle (5 wiki/-Dateien) → SUCCESS (keine neu ausgelösten FAILs).
  • schema/compiler.md auf 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 bleibt in-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.md auf 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.md auf 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-prinzip angelegt (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> }, verified ungesetzt)
  • neu: knowledge-kompilation-inkrementell angelegt (sources: raw/epics/epics-2026-08-14.md) — Root-Concept, Trust-Metadaten A0-20
  • neu: wissensarchitektur-trennung-states angelegt (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.md auf Revision 3 — at-Nur-Datum-Toleranz zurückgenommen. at: 2027-01-01 ist jetzt FAIL nach Punkt 14 (reine Datumsangabe ≠ ISO-8601-Datetime); Positiv-Fixture 14c neu mit ±HHMM-Form (+0200) belegt. Vertrag schema/wiki-compiler.md unverändert (autorisiert). Validator-Zertifizierung zugehörig geprüft: Fixture 14c (Negativ) erzeugt FAIL.
  • Retrospective-Follow-up (AI-2/F-02): schema/validator.md auf 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.md auf Revision 5 — §3.2-Voraussetzungsprüfungen als fachliche Prüfklasse V-1/V-2 gelabelt (Verdikt FAIL (Voraussetzung) … (V-1|V-2) statt FAIL (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 Commit 6cc667d gestützt und SHA-256 der Herkunftsdatein aufgenommen (byte-identisch zur materialisierten Evidenz, geprüft).
  • Retrospective-Follow-up (AI-5/F-05): schema/validator.md auf 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.md notiert (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).