4-Layer-Review (bb32acd → story-2-2): 1 Decision (D1 → Option 1),
12 Patches umgesetzt, 4 Defer, 2 Dismiss.
- schema/compiler.md → Rev 1.7: defekte Selbsttest-Grep-Formel behoben
(ungeschlossene ERE → grep -nE '\(raw/'), Komma-Form + Multi-Beleg-
Serialisierung in §5.5 Pkt.1 (D1-Option 1), Relokations-Bullets als
1a/1b nummeriert, drei Marker-Muster, Forward-Referenz-Disambiguierung,
§8-Normreferenzen um AD-4a/9/13/14/16, FR-16, A0-3 ergänzt
- wiki/knowledge-kompilation-inkrementell.md: Forward-Referenz-Zitat
disambiguiert (Story 3.1-Heading)
- wiki/log.md: Status-Angleichung + Review-Abschluss-Eintrag (append-only)
- deferred-work.md: W1-Entry um status:/Home: ergänzt, W2–W4 neu
(Fragment-Existenz, Marker-Grammatik, sources-id-Eindeutigkeit)
- spec-2-2: Review Findings (D1–P12, W1–W4) + Change-Log + Status done
- sprint-status.yaml: 2-2 → done
Co-Authored-By: Claude <noreply@anthropic.com>
18 KiB
title, type, created, status, review_loop_iteration, baseline_commit, context
| title | type | created | status | review_loop_iteration | baseline_commit | context | |
|---|---|---|---|---|---|---|---|
| Claim-granulare Provenienz dokumentieren (Story 2.2) | feature | 2026-08-17 | done | 2 | bb32acdf3f |
|
Intent
Problem: Die drei Concepts aus Story 2.1 tragen Provenienz nur auf Concept-Ebene (sources-Frontmatter); belegte Aussagen und Kontext-/Synthese-Umformulierungen sind claim-granular nicht auf raw/-Evidenz rückführbar (AD-4a, A0-3). Instanz: knowledge-kompilation-inkrementell.md deklariert nur raw/epics/…, enthält aber ein ASCII-Diagramm aus raw/architecture-spine/….
Approach: schema/compiler.md um Sektion „Claim-granulare Provenienz" erweitern (Inline-raw/-Verweise je belegter Aussage, Kontext-Marker je Übernahme, id-Attribution aus Vertrag §3.3) und die drei Concepts + wiki/index.md + wiki/log.md nachkonformieren. Kein Standalone-Tool, keine neue §7-Klasse, keine Vertragsänderung.
Boundaries & Constraints
Always:
- Provenienz = Body-Text-Konvention (Inline-
raw/-Verweis je belegter Aussage; Kontext-Marker „übernommen aus<Concept-Pfad>auf Basis von<source>, nicht eigenständig belegt" je Übernahme — AD-4a/A0-3). Kein Frontmatter-Change, kein neues Feld. - Nachrüstung mutiert ausschließlich
wiki/(Concept-Bodies,index.md,log.md).raw/,schema/wiki-compiler.md,schema/validator.mdunverändert (AD-3).schema/compiler.md= einziger Instruktions-Ort (D-3). - Neue
sources-Einträge: nur §3.3-Subset;idje Concept eindeutig;resourceniewiki/(AD-4b); kein generiertes Concept führt ein anderes als alleinige Provenienz (AD-4c). generated/verified/statusunangetastet (v1-Default A0-20). Epic-3/4-Fähigkeiten im Body als Forward-Referenz ohne eigene Behauptung markiert.- Revisionslog der Instruktion +
wiki/log.md(Vertrag §5) dokumentieren die Änderung.
Ask First: Neue §7-Klasse / Vertragsänderung · Standalone-Programm (D-3) · wiki/<area>/-Anlage (Story 2.4).
Never: OKF-Dialekt · Änderung an schema/wiki-compiler.md/schema/validator.md/raw/ · Validator-Verhaltenswechsel (bleibt strukturell; Content-Truth = eigenständige Arbeit) · Vorwegnahme Story 2.3/2.4 · Falsch-Attribution.
I/O & Edge-Case Matrix
| Scenario | Input | Expected | Error Handling |
|---|---|---|---|
| HAPPY_PATH | 3 Concept-Bodies, Kern + Übernahmen (z. B. ASCII-Diagramm) | Belegte Aussagen mit Inline-Verweis; Übernahmen mit Marker; Diagramm-Quelle deklariert; Validator SUCCESS | N/A |
| UNBELEGTE_AUSSAGE | Aussage nicht auf sources rückführbar |
Als Übernahme mit Marker geführt (nicht erfunden belegt) | Run bricht nicht ab; textuell sichtbar |
Code Map
schema/compiler.md— mutiert: Sektion „Claim-granulare Provenienz" (Inline-Verweise, Kontext-Marker,id); Revisionslog (§8); §7-Selbstbegrenzung.schema/wiki-compiler.md— read-only: §3.3sources/id, §5log.md, §7 abschließende Liste.schema/validator.md— read-only (Rev 8): bleibt strukturell.wiki/llm-wiki-prinzip.md,wiki/knowledge-kompilation-inkrementell.md,wiki/wissensarchitektur-trennung-states.md— mutiert: Body um Inline-Verweise/Kontext-Marker.wiki/index.md— mutiert: Beschreibungen um(aus <raw-Pfad>).wiki/log.md— append-only: Nachrüst-Eintrag inkl. Diagramm-Quell-Deklaration.raw/architecture-spine/…(AD-4a :143),raw/epics/…,raw/prd/…— read-only Evidenz._bmad-output/implementation-artifacts/epic-2-context.md— Planungskontext (read-only).sprint-status.yaml— mutiert: Status-Übergang (Review-Workflow-Sync,backlog→review).
Tasks & Acceptance
Execution:
schema/compiler.md— Sektion „Claim-granulare Provenienz" (nach §5, vor §6): Inline-raw/-Verweis je belegter Aussage (+id), Kontext-Marker je Übernahme, eindeutigesid-Scoping (§3.3), Selbsttest-Kriterien (belegte Aussage →raw/-Verweis; Übernahme → Marker; kein unautorisierter Key) — AD-4a/4c, AD-13, AD-17h. inkl. Review-Patch-Runde (Rev 1.6): Stellen-Kennungs-Semantik, volle Pfade, Direktübernahme-Marker, worked example, korrigierte Grep-Formel.schema/compiler.md— Revisionslog (§8, Fortlauf) + §7-Selbstbegrenzung „→ Story 2.2".- Nachrüst-Schritt: 3 Concept-Bodies — belegte Aussagen mit Inline-
raw/-Verweisen; Übernahmen (insbesondere ASCII-Diagramm →raw/architecture-spine/…) mit Kontext-Marker + ggf. zusätzlichemsources-Eintrag; Epic-3/4-Formulierungen als Forward-Referenz. wiki/index.md— Beschreibungen um(aus <raw-Pfad>).wiki/log.md— Nachrüst-Eintrag (§5-Format).- Validator-Lauf — alle 5
wiki/-Dateien SUCCESS (Punkte 1/6/11/14, EC-1) (manuell-mechanisch, D-3; kein CLI). sprint-status.yaml— Story 2.2 →in-progress.
Acceptance Criteria:
- Given Concept mit fachlichen Aussagen, when nach Story 2.2 verarbeitet, then trägt jede belegte Aussage einen Inline-Verweis auf
raw/-Evidenz (AD-4a). - Given Kontext-/Synthese-Umformulierung, when übernommen, then trägt sie den expliziten Kontext-Marker — inklusive ASCII-Diagramm.
- Given
sources-Dokumentation, when gesetzt, then lösen Werte ausschließlich aufraw/-Pfade auf (AD-4b); kein generiertes Concept führt ein anderes als alleinige Provenienz (AD-4c) — formseitig prüfbar. - Given Nachrüst-Inhalte, when validiert, then bleibt das Bundle vollständig Validator-SUCCESS (keine neue Invaliditätsklasse, keine Vertrags-/
raw/-Mutation). - Given Instruktions-Bestand, when geprüft, then rein textuell (D-3), deterministisch (AD-17h), referenziert den Vertrag.
Review Findings (bmad-code-review, 2026-08-17)
Vier Layer (Blind Hunter, Edge Case Hunter, Verification Gap, Acceptance Auditor) auf
bb32acd → story-2-2. Dedupliziert, Severity durch Workflow gesetzt (Reviewer-Severity verworfen). 1decision-needed(entschieden 2026-08-17 → Option 1), 12patch, 4defer, 2 dismissed (Status-Drift als Workflow-Bug — 2.1-Präzedenz; non-behavioral Screen-outs).
Decision-Needed
- [Review][Decision] D1 — Referenzform: Komma-Form vs. verbindliche
#-Form — Entschieden (2026-08-17): Option 1 — Komma-Form als zulässige Variante in §5.5 Pkt.1 formal zulassen; Bodies bleiben unverändert. Umsetzung als Patch P12 (siehe unten).
Patch
- [Review][Patch] P1 — Selbsttest-Grep-Formel defekt (ungeschlossenes Klammerpaar)
schema/compiler.md:76,99—grep -nE '(raw/|]\(raw/'öffnet eine Gruppe, schließt sie nie →exit 2 „Unmatched ( or \("(reproduziert). AC-5/AD-17h (deterministischer Selbsttest) liefert einen Fehler statt deterministischer Ausgabe. Rev-1.6-„Korrektur" war unnötig:\(raw/(noch in Spec Verification) erfasst bereits beide Formen. Fix: eine funktionierende Formel in compiler.md Pkt.1+Pkt.4 und Spec Verification synchron halten. - [Review][Patch] P2 — „Pkt. 1b" referenziert, aber nicht definiert
schema/compiler.md:68,112+_bmad-output/implementation-artifacts/deferred-work.md:196— die Relokations-Regel ist ein unnummeriertes Sub-Bullet unter Pkt.1; das Label „1b" existiert in §5.5 nicht. Fix: Sub-Bullet als „1b" nummerieren (hält alle drei Referenzen) oder alle drei Referenzen umschreiben. - [Review][Patch] P3 — Marker-Muster-Zahl inkonsistent
schema/compiler.md:81,100— Pkt.2 öffnet mit „zwei Marker-Muster", definiert dann drei (Zwischen-Concept, Direktübernahme, Forward-Referenz); Pkt.4 wiederholt „einen der beiden". Fix: „drei" / Forward-Referenz als Variante kennzeichnen. - [Review][Patch] P4 — §8 Normreferenzen nicht für §5.5 ergänzt
schema/compiler.md:172-177— fehlenAD-4a,A0-3(Kernnormen des §5.5) sowieAD-16,AD-9,AD-13,AD-14(jetzt in den Bodies zitiert). Fix: Spine-/Epics-Zeile um die tatsächlich genutzten Normen erweitern. - [Review][Patch] P5 —
wiki/log.md-Eintrag: veralteter Statuswiki/log.md:4— Eintrag endet „— Story 2.2in-progress", während derselbe Diffsprint-status.yamlaufreviewsetzt. Fix: aufreviewangleichen. - [Review][Patch] P6 — Spec
review_loop_iteration: 0spec…md:6— trotz abgeschlossener Step-04-Review-Loop + Patch-Runde (P1–P7) und Defers; Vergleichspec-2-1= 2. Fix: tatsächliche Iterationszahl setzen. - [Review][Patch] P7 — Suggested-Review-Order-Statuszeile falsch
spec…md:124— „Story-Statusin-progress(nach Human-Review →review)" zeigt aufsprint-status.yaml:47, die hier bereitsreviewist; Klammer dreht die Workflow-Richtung um (Human-Review →done). Fix: Zeile korrigieren. - [Review][Patch] P8 — Code Map lässt
sprint-status.yamlausspec…md:43— die Code Map enumeriert alle mutierten Dateien, außersprint-status.yaml, den die eigene Verificationgit diff --stataufführt. Fix: ergänzen. - [Review][Patch] P9 — deferred-work-Eintrag bricht Datei-Format
_bmad-output/implementation-artifacts/deferred-work.md:195-197— neu eingeführter Eintrag trägtsource_spec:/summary:/evidence:, aber keinstatus:/Home:wie alle bestehenden. Fix:status:-Zeile mit Owner ergänzen. - [Review][Patch] P10 — Gefrorener Block: „Kein Frontmatter-Change" wörtlich widersprüchlich
spec…md:74— der Frozen-Block sagt „Kein Frontmatter-Change, kein neues Feld", der Diff ergänzt aberid-Werte + zweisources-Einträge. Rev 1.6 löste das nur auf compiler.md-Seite; das Spec Change Log dokumentiert die Angleichung nicht. Fix: Angleichungs-Hinweis („kein neues Feld über das §3.3-Subset hinaus") im (nicht gefrorenen) Change Log nachführen — Frozen-Block unverändert lassen. - [Review][Patch] P11 — Forward-Referenz-Zitat „Epic-3-Abschnitt" mehrdeutig
wiki/knowledge-kompilation-inkrementell.md:52—raw/epics/…trägt zwei „Epic 3"-Headings (### Epic 3Zeile 90,## Epic 3Zeile 258). Fix: auf die eine Sektion disambiguieren (exakter Sektionstitel/Nummer). - [Review][Patch] P12 — D1-Umsetzung: Komma-Form als zulässige Variante in §5.5 Pkt.1 formal zulassen
schema/compiler.md:72-77— §5.5 Pkt.1 neben der verbindlichen Default-Form(raw/<datei.md>#<stellen-kennung>)die Komma-Form(raw/<datei.md>, <stellen-kennung>)als zulässige zweite Form zulassen (für Stellen-Kennungen, die im Rohdokument als Sektionstitel/Nummer ohne Bezeichner-idvorliegen, z. B.§ 1 Vision,§ 4.5 FR-16) — analog zum bereits vorhandenen Präzedenzfall „Link-Form ggü. Plain-Form bis Story 2.3 formal offen, beide zulässig, sofern der volleraw/-Pfad am Verweis erkennbar und Grep-greifbar". Zusätzlich: Multi-Beleg-Serialisierung festlegen (Komma-Gruppierung#ID1, #ID2unter einem Pfad explizit zulassen ODER je Kennung vollen Pfad wiederholen — Konsistenz mit den Bodies; vgl.wiki/wissensarchitektur-trennung-states.md:15). Worked Example um ein Komma-Form-Beispiel ergänzen. Bodies bleiben unverändert (Form ist dort dann konform). Rev-1.7-Eintrag im §8-Revisionslog.
Defer (vorbestehend / Scope)
- [Review][Defer] W1 — Sources-Closure (inline
raw/-Pfad ⊆sources) — bereits indeferred-work.md(Abschnitt „Deferred from: code review of story-2.2") verankert; kein neues Handeln. - [Review][Defer] W2 — Stellen-Kennung-Existenz im Rohdokument wird nirgends geprüft
schema/compiler.md:74— Fragment-Typo (z. B.#FR-19,#AD-1b) oder verbotenes Concept-id-Fragment#s1durchläuft Grep + 14 Validator-Punkte + EC-1 (Datei existiert) → SUCCESS; Falsch-Attribution ohne Pin. D-3-/kein-Standalone-Kontext; Schwester zu W1. - [Review][Defer] W3 — Kontext-Marker-Grammatik (Selbstreferenz-Verbot, Musterwahl) ungeprüft
schema/compiler.md:81-94— ein Selbstreferenz-Marker (Concept nennt sich als Ursprung) trägt den exakten Token und passiert jede re-runnable Prüfung; das Rev-1.6-Selbstreferenz-Verbot ist durch nichts erzwingbar. Schwester zu W1. - [Review][Defer] W4 —
sources-id-Eindeutigkeit je Concept ohne Checkschema/compiler.md:96— duplizierteid-Werte (z. B. beides1) passieren Validator Punkt 6 (prüft Keys, nicht Werte) + Punkt 13 (Top-Level) + Spec-Greps; §5.5 Pkt.4 führt die Regel nicht. Schwester zu W1.
Spec Change Log
- 2026-08-17 (Erstellung): Initiale Approve-Baseline.
- 2026-08-17 (Patch-Runde, Step-04-Review): Review-Findings (patch-Klasse) umgesetzt: §5.5-Klarstellungen (Rev 1.6 in
schema/compiler.md), Body-Vereinheitlichung (Stellen-Kennungs-Sektionstitel statt Concept-id-Fragmente, volleraw/-Pfade je Beleg, Direktübernahme-Marker ohne Selbstreferenz, FR-16-Beleg auf PRD §4.5 allein),index.md/log.md-Angleichungen. Klassifikation:review-2-2-klassifikation.md. Defer: sources-Closure-Verifikation →deferred-work.md. - 2026-08-17 (bmad-code-review, 4 Layer — Patch-Runde 2): 1
decision-needed(D1 Referenzform → Option 1: Komma-Form als zulässige Variante in §5.5 Pkt.1) + 12patchumgesetzt (schema/compiler.md→ Rev 1.7: Grep-Formel behoben, Komma-Form + Multi-Beleg-Serialisierung, 1a/1b-Nummerierung, drei Marker-Muster, Forward-Referenz-Disambiguierung, §8-Normreferenzen;wiki/log.mdStatusreview;wiki/knowledge-kompilation-inkrementell.mdForward-Referenz-Zitat; Spec-Interna: Code Map +sprint-status.yaml, Verification-Grep-Synchronisation, Review-Order-Statuszeile,review_loop_iteration). Defer: W2–W4 (neue Schwester-Gaps zu W1: Fragment-Existenz, Marker-Grammatik,id-Eindeutigkeit — keine re-runnable Prüfung möglich ohne Standalone, D-3) →deferred-work.md.- Angleichung zum Frozen-Block (Review-Finding P10): Die frozen-Block-Zeile „Kein Frontmatter-Change, kein neues Feld" ist als „**kein neues Feld über das §3.3-Subset hinaus" zu lesen — das Hinzufügen/Erweitern bestehender
sources-Einträge (resource/id, Relokation/Zielwechsel, §5.5 Pkt. 1b) ist Teil der Konvention und erfolgt im vorliegenden Diff (drei Concepts, zwei neuesources-Einträge +id-Vergabe). Der Frozen-Block selbst bleibt unverändert; diese Leseanweisung ist hier dokumentiert, weil die wörtliche Formulierung mit dem deliverierten Change kollidierte (Rev 1.6 hat die Angleichung nur aufcompiler.md-Seite vorgenommen).
- Angleichung zum Frozen-Block (Review-Finding P10): Die frozen-Block-Zeile „Kein Frontmatter-Change, kein neues Feld" ist als „**kein neues Feld über das §3.3-Subset hinaus" zu lesen — das Hinzufügen/Erweitern bestehender
Verification
Commands:
git diff --stat—schema/compiler.md, 3 xwiki/*.md,wiki/index.md,wiki/log.md,sprint-status.yaml; KEINEraw/-/schema/wiki-compiler.md-Mutation.sh -c "grep -nE '\(raw/' wiki/*.md"— je belegter Aussage ein Inline-raw/-Verweis (die Formelgrep -nE '\(raw/'ist die verbindliche Selbsttest-Formel,schema/compiler.md§5.5 Pkt.1/Pkt.4, Rev 1.7; das Teilmuster(raw/erfasst Plain-Form und Markdown-Linkform).- Validator-Lauf (deterministisch) — alle
wiki/-Dateien SUCCESS (Punkte 1/6/11/14, EC-1). grep -nE '^(type|sources|generated|verified|status|stale_after):' wiki/*.md— nur §3-Felder;grep -nE 'resource:' wiki/*.md— jeder Wert existierender/-getrennterraw/-Pfad.
Manual checks (if no CLI):
- Belegte Aussage → Inline-
raw/-Verweis; Übernahme → Kontext-Marker („übernommen aus … auf Basis von …, nicht eigenständig belegt"). sources-idje Concept eindeutig; keine unautorisierten Keys;schema/compiler.mdrein textuell (D-3), deterministisch (AD-17h), referenziert den Vertrag.wiki/log.mdenthält datierten Nachrüst-Eintrag inkl. Diagramm-Quell-Deklaration.
Suggested Review Order
Instruktions-Basis (§5.5 Claim-granulare Provenienz — der Einstiegspunkt)
-
Konvention: Inline-
raw/-Verweis je belegter Aussage, Kontext-Marker je Übernahme,id-Scoping — der verbindliche Standard für alles Folgende.compiler.md:66 -
Selbsttest-Formel & Sicherstellung der Grep-Auffindbarkeit (AD-17h).
compiler.md:76 -
Revisionslog dokumentiert Nachrüstung (1.5) und Review-Patch-Runde (1.6).
compiler.md:188
Nachkonformierte Concept-Bodies (die eigentliche Provenienz-Arbeit)
-
Belegte Aussagen mit vollem
raw/-Verweis; Diagramm als Direktübernahme ausraw/architecture-spine/…mit Marker; Forward-Referenz auf Epic 3.knowledge-kompilation-inkrementell.md:37 -
SoC-Diagramm als Direktübernahme aus
raw/prd/…(§ 8.3) mit Marker; FR-16-Beleg auf PRD § 4.5 allein (Relokations-Regel eingehalten).wissensarchitektur-trennung-states.md:30 -
Datenfluss-Diagramm als Direktübernahme aus
raw/prd/…(§ 0 Document Purpose); PRD-Attribution über Sektionstitel (keine s-Fragmente).llm-wiki-prinzip.md:40
Bundle-Index & Nachweisführung
-
index.md-Beschreibungen mit(aus <raw-Pfad>)inkl. Diagramm-Quellen.index.md:29 -
log.md-Nachrüst-Eintrag (Vertrag §5-Format) inkl. Diagramm-Quell-Deklaration.log.md:4 -
Defer-Kontext: sources-Closure-Verifikation (jeder inline-referenzierte
raw/-Pfad ⊆sources) für spätere Fokussierung.deferred-work.md:196 -
Story-Status
done(bmad-code-review 2026-08-17 abgeschlossen, alle Findings aufgelöst; Human-Review-Freigabe in dieser Review-Runde).sprint-status.yaml:47