Files
wow20/_bmad-output/implementation-artifacts/spec-2-2-claim-granulare-provenienz-dokumentieren.md
Michael TamseandClaude 6d8d172c98 feat: Story 2.2 bmad-code-review abgeschlossen (Rev 1.7) — done
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>
2026-08-17 11:23:59 +02:00

18 KiB
Raw Permalink Blame History

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
_bmad-output/implementation-artifacts/epic-2-context.md

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.md unverändert (AD-3). schema/compiler.md = einziger Instruktions-Ort (D-3).
  • Neue sources-Einträge: nur §3.3-Subset; id je Concept eindeutig; resource nie wiki/ (AD-4b); kein generiertes Concept führt ein anderes als alleinige Provenienz (AD-4c).
  • generated/verified/status unangetastet (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.mdmutiert: Sektion „Claim-granulare Provenienz" (Inline-Verweise, Kontext-Marker, id); Revisionslog (§8); §7-Selbstbegrenzung.
  • schema/wiki-compiler.mdread-only: §3.3 sources/id, §5 log.md, §7 abschließende Liste.
  • schema/validator.mdread-only (Rev 8): bleibt strukturell.
  • wiki/llm-wiki-prinzip.md, wiki/knowledge-kompilation-inkrementell.md, wiki/wissensarchitektur-trennung-states.mdmutiert: Body um Inline-Verweise/Kontext-Marker.
  • wiki/index.mdmutiert: Beschreibungen um (aus <raw-Pfad>).
  • wiki/log.mdappend-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.yamlmutiert: Status-Übergang (Review-Workflow-Sync, backlogreview).

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, eindeutiges id-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ätzlichem sources-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 auf raw/-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). 1 decision-needed (entschieden 2026-08-17 → Option 1), 12 patch, 4 defer, 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 #-FormEntschieden (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,99grep -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 — fehlen AD-4a, A0-3 (Kernnormen des §5.5) sowie AD-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 Status wiki/log.md:4 — Eintrag endet „— Story 2.2 in-progress", während derselbe Diff sprint-status.yaml auf review setzt. Fix: auf review angleichen.
  • [Review][Patch] P6 — Spec review_loop_iteration: 0 spec…md:6 — trotz abgeschlossener Step-04-Review-Loop + Patch-Runde (P1P7) und Defers; Vergleich spec-2-1 = 2. Fix: tatsächliche Iterationszahl setzen.
  • [Review][Patch] P7 — Suggested-Review-Order-Statuszeile falsch spec…md:124 — „Story-Status in-progress (nach Human-Review → review)" zeigt auf sprint-status.yaml:47, die hier bereits review ist; Klammer dreht die Workflow-Richtung um (Human-Review → done). Fix: Zeile korrigieren.
  • [Review][Patch] P8 — Code Map lässt sprint-status.yaml aus spec…md:43 — die Code Map enumeriert alle mutierten Dateien, außer sprint-status.yaml, den die eigene Verification git diff --stat auffü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ägt source_spec:/summary:/evidence:, aber kein status:/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 aber id-Werte + zwei sources-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:52raw/epics/… trägt zwei „Epic 3"-Headings (### Epic 3 Zeile 90, ## Epic 3 Zeile 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-id vorliegen, 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 volle raw/-Pfad am Verweis erkennbar und Grep-greifbar". Zusätzlich: Multi-Beleg-Serialisierung festlegen (Komma-Gruppierung #ID1, #ID2 unter 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 in deferred-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 #s1 durchlä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 Check schema/compiler.md:96 — duplizierte id-Werte (z. B. beide s1) 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, volle raw/-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) + 12 patch umgesetzt (schema/compiler.mdRev 1.7: Grep-Formel behoben, Komma-Form + Multi-Beleg-Serialisierung, 1a/1b-Nummerierung, drei Marker-Muster, Forward-Referenz-Disambiguierung, §8-Normreferenzen; wiki/log.md Status review; wiki/knowledge-kompilation-inkrementell.md Forward-Referenz-Zitat; Spec-Interna: Code Map + sprint-status.yaml, Verification-Grep-Synchronisation, Review-Order-Statuszeile, review_loop_iteration). Defer: W2W4 (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 neue sources-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 auf compiler.md-Seite vorgenommen).

Verification

Commands:

  • git diff --statschema/compiler.md, 3 x wiki/*.md, wiki/index.md, wiki/log.md, sprint-status.yaml; KEINE raw/-/schema/wiki-compiler.md-Mutation.
  • sh -c "grep -nE '\(raw/' wiki/*.md" — je belegter Aussage ein Inline-raw/-Verweis (die Formel grep -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 /-getrennter raw/-Pfad.

Manual checks (if no CLI):

  • Belegte Aussage → Inline-raw/-Verweis; Übernahme → Kontext-Marker („übernommen aus … auf Basis von …, nicht eigenständig belegt").
  • sources-id je Concept eindeutig; keine unautorisierten Keys; schema/compiler.md rein textuell (D-3), deterministisch (AD-17h), referenziert den Vertrag.
  • wiki/log.md enthä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 aus raw/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