Files
wow20/wiki/log.md
T

40 lines
51 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Log
## 2026-08-19
- **Step-04-Review Loop 2 / Patch-Runde (Story 3.2, 2026-08-19):** `schema/compiler.md`**Revision 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 --exclude``unrecognized 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 --porcelain``wiki/` 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` `backlog`**`in-progress`**):** `schema/compiler.md`**Revision 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** (Determinsmus-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 `--exclude``log.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 `802a557``efc543c`; Nutzer-Entscheidungen D-1/D-2/D-3/D-4 = 1/1/1/1, jeweils empfohlene Option):** `schema/compiler.md`**Revision 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.md`**kein 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` `review`**`done`**, `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.md`**Revision 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` `backlog`**`in-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.md`**kein 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.md`**Revision 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.md`**exit 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.md`**Revision 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 Anlageform**`wiki/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_KANDIDAT**`wiki/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` `backlog`**`in-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: `review`**`done`** (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.md`**Revision 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.md``DANGLING: ../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-…` `backlog``in-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: `review`**`done`** (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.md`**Revision 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` `backlog`**`in-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.md`**Revision 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` `backlog`**`in-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.md`**Revision 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 `review``done`, `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 (`review``done`). Action-Item `code-review-2-1-item-1-autorisierte-validator-revision-option``done` (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).