Files
wow20/_bmad-output/implementation-artifacts/spec-2-1-concepts-aus-source-material-erzeugen-okf-konform.md
T
Michael Tamse f91ef89078 @
chore: Story 2.1 Review-Nachzug abgeschlossen (Re-Review 2026-08-16)

Nachzieh-Patches aus dem Erst-Review (bmad-code-review) + Re-Review-Verdikt:
- schema/compiler.md auf Revision 1.3: §1-Überschrift ins Deutsche,
  Pruefgrundlage auf validator.md Revision 7 angeglichen, §6.6 canonical-
  Key-Reihenfolge-Zeile auf reine ✓-Vorgabe korrigiert, §4.2-Label berichtigt,
  §1.2/§1.4-Evidenz-Widerspruch als dokumentarische Konvention aufgeloest.
- wiki/log.md: drei Demonstrationslauf-Eintraege an Vertrags-§5-Format angeglichen.
- spec-2-1: Review-Findings-Sektion + Re-Review-Verifikationsvermerk; status
  in-progress, review_loop_iteration 1.
- deferred-work.md: Code-Review-Defer-Sektion + Arbeitsauftrag "autorisierte
  Validator-Revision (Option-A-Heilung)" (F-14-Fixture, Innen-Ebenen-Key-Subset,
  Validator-Header-Anhebung OBS-1).
- sprint-status.yaml: Story 2.1 review -> in-progress; neues Action-Item
  "code-review-2-1-item-1-autorisierte-validator-revision-option" (open).

Story 2.1 bleibt in-progress: done-Faehigkeit an die naechste autorisierte
Validator-Revision gekoppelt (Option A, Frieren-Prinzip).

Co-Authored-By: Claude <noreply@anthropic.com>
@
2026-08-17 05:37:13 +02:00

30 KiB
Raw Blame History

title, type, created, status, review_loop_iteration, baseline_commit, context
title type created status review_loop_iteration baseline_commit context
Concepts aus Source Material erzeugen (OKF-Konform) (Story 2.1) feature 2026-08-16 in-progress 1 a67ba65910
_bmad-output/implementation-artifacts/epic-2-context.md

Intent

Problem: Der Workspace kann Sources unter raw/ (Story 1.2) halten und deren OKF-Konformität validieren (Story 1.4), aber es existiert noch keine deterministische, agentische Anweisung, die aus diesen Sources neue, eigenständige OKF-0.2-Concepts erzeugt (FR-5, FR-9) — der erste Compile-Run steht aus.

Approach: Eine agent-unabhängige Compiler-Instruktion schema/compiler.md schaffen, die die Concept-Erzeugung als deterministischen, textuell nachvollziehbaren Agenten-Prozess beschreibt (Interpret → Reconcile → Synthesize → Mutation, AD-5/AD-7), und sie in einem ersten Demonstrationslauf gegen die drei vorhandenen raw/-Sources anwenden — Ergebnis: konkrete, OKF-validierbare Root-Concepts + Verlinkung in wiki/index.md.

Boundaries & Constraints

Always:

  • schema/compiler.md ist der einzige Ort der Erzeugungs-Instruktion; er ist rein textuell (kein ausführbarer Code, D-3) und agent-unabhängig (AD-10), liegt außerhalb des Bundles neben Vertrag und Validator (AD-1).
  • Concepts MÜSSEN OKF-0.2-konform sein: Markdown mit YAML-Frontmatter, type als einziges Pflichtfeld und nicht leer (§3.1, Stolperstein Punkt 1); Feldsubset strikt nach §3 (type, sources, generated, verified, status, stale_after), keine unautorisierten Keys (Stolperstein Punkt 6). okf_version/type: bundle NIE in Concepts (Punkt 9).
  • Trust-Metadaten v1 (A0-20, AD-15): maschinell erzeugt → generated: { by: wow-compiler/0.1.0, at: <ISO-8601-Datetime> }, verified ungesetzt. at ist VOLLES ISO-8601-Datetime (YYYY-MM-DDTHH:MM:SS mit Z/±HHMM/±HH:MM), nie reines Datum (Validator Revision ≥3, Punkt 14).
  • sources zeigt ausschließlich auf /-getrennte, relative Workspace-Pfade unter raw/ (§3.3, AD-4b); jede referenzierte raw/-Datei MUSS zum Validierungszeitpunkt als Datei existieren (EC-1) — nie auf wiki/-Pfade (Punkt 3), kein ../URL/absolut/Backslash (Punkt 4).
  • Concepts sind eigenständige Wissenseinheiten (FR-5): nicht 1:1 pro Abschnitt, nicht bloße Kopie/Zusammenfassung des Quelldokuments (FR-2); mehrere Source-Abschnitte können in verschiedene Concepts fließen. V1-Instruktion erzeugt Concepts auf Root-Ebene unter wiki/ (Story 2.4 regelt Area-Zuordnung später); neue Concepts MÜSSEN in wiki/index.md verlinkt werden (Punkt 11 / Index-Regel §6).
  • Der Demonstrationslauf mutiert ausschließlich wiki/ (Concepts + index.md + zulässiger log.md-Eintrag); raw/ bleibt unangetastet (AD-3); schema/wiki-compiler.md und schema/validator.md bleiben unverändert (autorisiert).
  • log.md-Eintrag (optional, Vertrag §5-konform): datumsgruppiert, neueste zuerst; dokumentiert die angelegten Concepts inkl. Quell-Pfad.
  • Instruktion und Konzepte in Deutsch.

Ask First:

  • Eine bewusste Abweichung vom Feldsubset oder eine neue Invaliditätsart (Verschärfung des §7-Katalogs) — alles, was den autorisierten Vertrag ändern würde, ist explizit menschlich zu genehmigen.
  • Die Einführung eines Standalone-Programms (Python/TS/etc.) als Compiler — D-3 widerspricht; nur mit menschlicher Zustimmung (Rückkehrpunkt dokumentiert).
  • Die Anlage eines wiki/<area>/-Verzeichnisses in dieser Story (Area-Zuordnung ist Story 2.4) — nicht ohne menschliche Genehmigung.

Never:

  • Kein eigener OKF-Dialekt, keine Änderung an schema/wiki-compiler.md/schema/validator.md (autorisiert, Story 1.3/1.4), keine Änderung an raw/ (immutable, AD-3).
  • Kein Standalone-/Executable-Compiler (D-3); keine LLM-Runtime-Implementierung im Bundle; kein MCP.
  • Keine claim-granulare Inline-Provenienz-Ausarbeitung (Story 2.2), keine deterministische Area-Zuordnung/Hierarchie (Story 2.4), keine vollständige Discovery-Logik über index.md/Progressive Discovery (Story 2.5) — diese Stories bleiben unangetastet, dürfen aber nicht behindert werden.
  • Keine Löschung/Umbenennung bestehender Concepts oder log.md-Einträge; keine stillschweigende Verlinkung außerhalb wiki/index.md.
  • Kein LLM-Urteil in der Instruktion als alleinige Entscheidungsbasis: Wo Relevanz/Klassifikation nötig ist, wird sie textual-deterministisch begründet (AD-13).

I/O & Edge-Case Matrix

Scenario Input / State Expected Output / Behavior Error Handling
HAPPY_PATH 3 neue Sources unter raw/ (prd, epics, architecture-spine), leeres wiki/ (nur index.md, log.md) Compiler erzeugt 3 dem Source-Inhalt entsprechende, eigenständige Root-Concepts (wiki/<slug>.md) mit type, sources→existing raw/-Pfade, generated {by, at} ohne verified; verlinkt alle 3 in wiki/index.md; Validator-Lauf ergibt SUCCESS N/A
CONCEPT_OHNE_TYPE Compiler legt Concept ohne/leeres type an Concept ist strukturell invalide (Punkt 1) Instruktion verlangt zwingend type; Run bricht mit textueller Fehlerursache ab, wiki/-Änderungen bis dahin rückmelden
FEHLENDE_RAW sources-resource verweist auf nicht existente raw/-Datei Fachlich invalide (EC-1) → Run-FAIL Instruktion: nur real existierende raw/-Dateien als resource; Verweis auf strukturierte Prüfung
LEERE_QUELLE / KEINE_WISSENSEINHEITEN Source enthält keine klar abgegrenzten Wissenseinheiten (z.B. nur README/Artefakt wie raw/README.md) Wird NICHT zu einem Concept verdichtet; ggf. als Hinweis in log.md Artefakt-Dateien (source.md, README.md) sind keine Evidenz (raw/README.md) → ausgeschlossen
VERALTETE_SOURCE source.md verweist auf Commit, der nicht mehr existiert Provenienz-Hinweis bleibt im Sidecar; raw/-Datei selbst ist Evidenz Fehlende Commit-Auflösbarkeit blockiert die Concept-Erzeugung nicht (Sidecar ist Artefakt, nicht Input)
KEIN_CONTENT Concept würde nur Source-Copy sein Kein Concept anlegen; Wissen ist nicht neu → nichts erzeugen FR-2-konform: Kopieren/Zusammenfassen ist keine Wissensintegration

Code Map

  • schema/compiler.mdZieldatei (neu): deterministische Compiler-Instruktion zur Concept-Erzeugung; Kern des Reviews.
  • schema/wiki-compiler.mdNormative Grundlage (read-only, Story 1.3): §1 Geltungsbereich, §2 Bundleroot, §3.13.7 Feldsubset & Formate (inkl. §3.3 sources/resource, §3.4 generated, §3.5 verified, §3.6 status, §3.7 stale_after), §5 log.md, §6 Index-Regel/Prädikate, §7 abschließende 14-Punkte-Liste, §8 Normreferenzen.
  • schema/validator.mdPflicht-Referenz (read-only, Story 1.4): §3.2 Voraussetzungsprüfungen V-1/V-2; §4.1 kanonische Key-Reihenfolge; §4.3 ISO-8601-Normalform (at voll, keine reine Datumsangabe); §6 fachliche Prüfungen (EC-1 Existenz); §6.2 Punkt-4-vor-3-Priorität; Punkt-11-Index-Check (Root-Concepts → Bundleroot wiki/index.md).
  • wiki/index.mdZieldatei (mutiert im Demonstrationslauf): Bundleroot (Frontmatter exklusiv type: bundle/okf_version: "0.2"); nimmt die Root-Concept-Links auf (Punkt 11); kein eigenes Frontmatter-Feld anfassen.
  • wiki/log.mdZieldatei (append-only): zulässiger Protokolleintrag (Vertrag §5) über angelegte Concepts; kein Frontmatter.
  • raw/prd/prd-wow20-2026-08-14.md, raw/epics/epics-2026-08-14.md, raw/architecture-spine/architecture-spine-2026-08-14.mdEvidenz (read-only, Story 1.2): Demonstrations-Sources; resource-Ziele der neuen Concepts.
  • raw/README.md, raw/*/source.md — Artefakt-/Grenzdateien (keine Evidenz); nicht als Concepts konsumierbar.
  • adapters/README.md, adapters/claude/README.md — Adapter-Kontext (read-only, AD-10); Story 5.3 Zuständigkeit, kein Ort für Erzeugungslogik.
  • _bmad-output/planning-artifacts/architecture/architecture-wow20-2026-08-14/ARCHITECTURE-SPINE.md — AD-5 (inkrementell, Interpret→Reconcile→Synthesize→Update), AD-7-Reihe (Identität/Verlinkung/Areas: Story 2.3/2.4), AD-17 (Lease/branch, nur committete Inputs), D-3 (kein Standalone-Compiler).
  • _bmad-output/implementation-artifacts/epic-2-context.md — primärer Planungskontext (read-only).

Tasks & Acceptance

Execution:

  • schema/compiler.md — Compiler-Instruktion anlegen: Zweck & Aufruf (Agent führt Schritte deterministisch aus), Eingabe (committete raw/-Evidenz, AD-17) und Ausgabe (OKF-validierbare Concepts), der logische Fluss Interpret→Reconcile→Synthesize→Mutation (AD-5), die Erzeugungs-/Auswahlregeln (Wissenseinheiten statt 1:1-Abschnitte, FR-5; keine Kopie, FR-2; artefakt-Evidenz-Ausschluss), die Pflicht-Frontmatter-Vorgabe für neue Concepts (type gesetzt; §3-Subset; generated { by: wow-compiler/<version>, at: volles ISO-8601 } ohne verified, A0-20; canonische Key-Reihenfolge §4.1; sources→existierende raw/-Pfade, EC-1), die Verlinkungs-Pflicht (neue Root-Concepts in wiki/index.md verlinken, Punkt 11/§6), Dokumentationspflicht (log.md, Vertrag §5) und die Selbstbegrenzung (keine Area-Anlage [Story 2.4], keine claim-granulare Provenienz-Ausarbeitung [Story 2.2], kein Standalone-Code, keine OKF-Erweiterung [D-3, AD-1a]) — FR-5, FR-9, NFR-2/3/4.
  • schema/compiler.md — Determinismus-/Selbsttest-Norm: jede Erzeugungsentscheidung textual-deterministisch begründbar (AD-13); eine Nachprüf-Sektion, die ein erzeugtes Concept gegen den Validator abprüfbar macht (vollständige §3-Subset-Konformität, at-Normalform, sources-Existenz) — AD-17h-konform, ohne LLM-Doppelurteil (der Validator bleibt die mechanische Prüfung).
  • schema/compiler.md — Positiv-/Negativ-Beispiele (Referenztabellen): je Regel ein Beispiel-Concept (ideal-konform vs. verletzte Regel) — AD-17h/Verifikations-Kultur aus Story 1.4 (Verifikations-Beleg).
  • Demonstrationslauf (Agent führt Instruktion aus): 3 eigenständige Root-Concepts aus den 3 raw/-Evidenzdateien erzeugen (je wiki/<slug>.md: type, sources mit existierenden raw/-Pfaden, generated {by, at} ohne verified, inhaltlich eigenständig kuratiert), alle in wiki/index.md verlinken, wiki/log.md-Eintrag ergänzen.
  • Validator-Lauf gegen das mutierte Bundle: erzeugte Concepts + index.md + log.md MÜSSEN SUCCESS liefern (Punkt 11 inklusive: Root-Concept links in Bundleroot); Ergebnis im Spezifikations-Verification dokumentieren.
  • _bmad-output/implementation-artifacts/sprint-status.yaml — Story 2.1 von backlog auf in-progress setzen (nach Start der Implementierung).

Acceptance Criteria:

  • Given eine neue Source mit mehreren Abschnitten, when ein Compilation Run sie verarbeitet, then erzeugt der Compiler eigenständige Concepts gemäß den erkannten Wissenseinheiten — nicht 1:1 pro Abschnitt, nicht an die Source-Struktur gebunden (FR-5).
  • Given die Concept-Erzeugung, when ein Concept geschrieben wird, then ist es OKF-0.2-konform: Markdown mit YAML-Frontmatter, type als verpflichtendes, nicht leeres Feld; vollständiges §3-Subset ohne unautorisierte Keys (AD-1a, FR-9).
  • Given ein erzeugtes Concept, when dessen V1-Trust-Metadaten gesetzt werden, then sind sie generated: { by, at } (volles ISO-8601) ohne verified (A0-20, AD-15).
  • Given der Demonstrationslauf, when der Validator danach ausgeführt wird, then ist das Bundle mit den neuen Root-Concepts + index.md-Verlinkung + log.md-Eintrag vollständig SUCCESS (insbesondere Punkt 1, 6, 11, 12, 14).
  • Given sources-Referenzen, when sie dokumentiert werden, then lösen sie ausschließlich auf real existierende raw/-Dateien auf — nie auf wiki/-Pfade (AD-4b, EC-1).
  • Given ein erzeugtes Concept, when es inhaltlich eine bloße Kopie/Zusammenfassung der Quelle wäre, then erzeugt der Compiler es nicht (FR-2: Kopieren ist keine Wissensintegration).
  • Given ein neues Concept auf Root-Ebene, when es angelegt wird, then wird es in wiki/index.md verlinkt (Punkt 11/§6), ohne Area-Verzeichnis anzulegen (Story 2.4).
  • Given die Instruktion, when sie ausgeführt wird, then ist sie eine eigenständige, deterministische, agent-unabhängige Anweisung (D-3, AD-17h) — kein Standalone-Programm.

Review Findings (bmad-code-review, 2026-08-16)

patch:

  • [Review][Patch] schema/compiler.md §1-Überschrift ist Englisch („Input (what the compiler consumes)") — Verstoß gegen eigene Always-Regel „Instruktion … in Deutsch"; fix: ## 1. Input (was der Compiler konsumiert) [schema/compiler.md:23] — erledigt, Rev 1.3
  • [Review][Patch] schema/compiler.md enthält „Revision 6"-Referenz auf die Prüfgrundlage, während der Commit validator.md Rev 7 liefert — Selbstwiderspruch des Instruktions-Selbstbilds; fix: Revisionszahl angleichen (bzw. bei Rev-7-Rückbau konsistent „Revision 6" lassen) [schema/compiler.md:5, schema/compiler.md:127] — erledigt, auf Revision 7 angeglichen, Rev 1.3
  • [Review][Patch] schema/compiler.md §6.6-Referenztabelle enthält eine irreführende Zeile: canonical-Key-Reihenfolge wird als „✗"-Abweichung gelistet, aber als „kein FAIL, aber nicht erzeugt" beschrieben und das Label „§6.4" verweist auf eine reine Pfad-Regel (Punkt 4); fix: Zeile aus der ✗-Tabelle herausnehmen (kein Validator-FAIL) bzw. Label auf §4.4 korrigieren [schema/compiler.md:102] — erledigt: Zeile auf reine ✓-Vorgabe, Label auf §4.2, Rev 1.3
  • [Review][Patch] schema/compiler.md §1.2 vs. §1.4 widersprechen sich: „jede Datei unter raw/ ist Evidenz" (extensiv) vs. „Artefakt-/Grenzdateien (raw/README.md, raw/**/source.md) sind KEIN Input" (restriktiv) — neue normative Regel, die so weder im Vertrag noch im Spine noch im Validator steht; fix: in §1.4 die nicht-mechanisch prüfbare Sonderregel als dokumentarische Konvention (nicht als Input-Verdikt) kennzeichnen; alternativ im Change Log als Klarstellung nachführen — erledigt: §1.2 präzisiert, §1.4 als dokumentarische Konvention gekennzeichnet, Rev 1.3
  • [Review][Patch] wiki/log.md-Einträge weichen vom Vertrags-§5-Beispielformat ab (freie Prosa statt „- neu: … angelegt (sources: …)"); keine Maschine prüft das, aber der dokumentierte Doku-Standard wird nicht eingehalten; fix: Einträge an das §5-Beispielformat angleichen [wiki/log.md] — erledigt: drei Demonstrationslauf-Einträge auf §5-Format umgestellt

defer:

  • [Review][Defer] Contract-Verletzung: schema/validator.md im Commit mutiert (Rev-7-Notiz §7.3), obwohl Always/Never + AD-3 es als unverändert autorisiert frieren [schema/validator.md:262] — aufgelöst via Option A (2026-08-16): validator.md bleibt mit Rev-7-Hinweis erhalten (inhaltlich korrekt, kein Rückbau); Heilung über die nächste autorisierte Validator-Revision (F-14-Fixture + Innen-Ebenen-Klarstellung dort formal tragen — vgl. deferred-work.md); Story 2.1 bleibt bis dahin in-progress, Review-Wiedervorlage vor done. (Grund: Frieren-Prinzip wahren, ohne die nützliche Klarstellung zu verwerfen.)
  • [Review][Defer] Content-Truth-Verifikation: kein Check verifiziert den Inhalt eines Concepts gegen seine deklarierten raw/-Quellen (Verification-Gap) — deferred, Story 2.2 [wiki/*.md]
  • [Review][Defer] Determinismus-Selbsttest-Dokumentation: §6.6-Interpretations-Hinweis behauptet eine starte „genau diese Form", obwohl generated.at pro Run variiert (AD-15) — deferred, Story 2.3 [schema/compiler.md:106]
  • [Review][Defer] R-1 (Compiler-Input-Interface): Compiler definiert seine Source-Eingabe als Menge beliebiger raw/-Dateien (Set-Interface) — Verdikt Bestanden. Der übergebene dryrun-Fall „einzelner Pfad" existiert nicht mehr. Empfehlung gemäß Review-Vorgabe ergänzend: den Mechanismus der Source-Auswahl (welche raw/-Dateien wann verarbeitet werden) als Konventions-/Erkennungsproblem für Epic 3/AD-5-Home-Story in deferred-work.md festhalten — Firm-Zwang, die „Run-ohne-Pfad"-Lücke der Nutzererwartung bleibt offen (Story 3.1/3.2) — deferred, Epic 3
  • [Review][Defer] R-2 (Nicht-Markdown-Quellen): Compiler-Instruktion liest Sources endungsneutral als Datei (§1.2/§1.4, Verdikt Bestanden); die Konventions-/Asset-Zuordnungsfrage für PDF bleibt als dokumentierte Konvention offen — deferred, Epic 2/3 [raw/README.md]

Re-Review Verifikationsvermerk (bmad-code-review, 2026-08-16)

Konforme Wiedervorlage nach dem Erst-Review — alle 5 Patch-Findings verifiziert, kein neuer Bruch:

  • P-1..P-5 (compiler.md Rev 1.3, log.md §5-Format, spec-status, deferred-work, sprint-status) sauber umgesetzt und im Working Tree verifiziert.
  • AC-Abgleich gegen epics.md Story 2.1: unverändert gültig (type-Pflicht, §3-Subset, v1-Trust generated {by,at} ohne verified, Wissenseinheiten ≠ 1:1, Index-Pflicht, kein Area, D-3-Textinstruktion) — kein neuer Verstoß durch die Patches.
  • Validator-Run gegen das Bundle (gemäß schema/validator.md): SUCCESS für alle 5 Bundle-Dateien (index.md, log.md, 3 Concepts) — Points 114 ✔, V-1/V-2 ✔, EC-1/EC-3/EC-11 ✔, Punkt 11 (alle 3 Identitäten verlinkt) ✔. Keine Abweichung.
  • AD/Provenienz: AD-3 (raw/ unangetastet, leerer Diff), AD-5 (nur neue Root-Concepts), AD-10 (adapters/ unverändert, keine abweichende Knowledge-Semantik), D-3 (rein textuell, kein Executable-Block), AD-4b (alle sources[].resource → existierende raw/-Dateien, nie wiki/), v1-Default (generated gesetzt, verified ungesetzt).
  • R-1 (Menge von Source-Pfaden, Set-Interface — compiler.md §1.2 definiert die gesamte evidierenfähige raw/-Menge; Einzelpfad-Interface existiert nicht): Bestanden, kein Finding. Erkennungs-Mechanismus bewusst deferriert (AD-5-Home-Story, Epic 3, Story 3.1/3.2).
  • R-2 (Nicht-Markdown-Quellen): Instruktion liest Sources endungsneutral als Datei (Vertrag §3.3: nur Dateipfad unter raw/; Validator EC-1: nur Existenz); PDF zulässig; §1.4 dokumentarische Konvention (§1.2/§1.4-Widerspruch via Rev 1.3 Patch #4 sauber aufgelöst, kein neuer Bruch): Bestanden.
  • Option A intakt: validator.md Rev-7-Notiz unverändert erhalten (kein Rückbau); Spec konsistent in-progress; done-Fähigkeit korrekt an die nächste autorisierte Validator-Revision gekoppelt (F-14-Fixture + Innen-Ebenen-Klarstellung), kein Widerspruch zum Frozen-Bereich. OBS-1 (validator.md-Header „Revision 6" vs. Revisionslog „Revision 7") als pre-existing Mitnahme in dieselbe Revision vermerkt.

Verdikt: Story 2.1 bleibt in-progress — ausschließlich gebunden an die offene Option-A-Voraussetzung. Kein AC-/Vertrags-Blocker in den Story-Artefakten; keine neuen Findings aus den Nachzieh-Patches. Wiedervorlage vor done, sobald die nächste autorisierte Validator-Revision die F-14-Fixture + Innen-Ebenen-Klarstellung (und die Header-Anhebung) formal trägt.

Spec Change Log

  • (leer bis zum ersten Review-Loopback)

Design Notes

Warum eine Instruktion, kein Programm (D-3): Genau wie der Validator (Story 1.4) ist der Compiler eine textuelle Agent-Instruktion — der deterministische Kern ist schema/compiler.md, ausgeführt von einem vorhandenen agentischen Host (AD-11). Das hält die Story klein, revisionierbar (Git) und prüfbar (AD-17h). Ein Standalone-Compiler ist explizit D-3-verboten und nur als dokumentierter Rückkehrpunkt für eine spätere Story zugelassen.

Root-Ebene statt Areas (Umgehung des Punkt-11-/Area-Dilemmas): Story 2.4 besitzt die deterministische Area-Zuordnung; Story 2.5 die Discovery-Navigation. Story 2.1 darf diesen Stories nicht vorgreifen. Daher entstehen die ersten Concepts direkt unter wiki/ (wiki/<concept>.md) und werden — wie es der Punkt-11-Check des Validators für Root-Concepts verlangt — in der Bundleroot wiki/index.md verlinkt. Es wird kein wiki/<area>/-Verzeichnis angelegt. Story 2.4 kann diese Root-Concepts später per deterministischer Zuordnung in Areas verschieben (mit AD-7d-Rename-Eintrag in log.md).

Demonstrationslauf = der eigentliche „Beweis": Die Instruktion allein wäre nur Theorie. Der Run gegen die 3 raw/-Evidenzdateien erzeugt echte Concepts und wird anschließend gegen den autorisierten Validator (Story 1.4) geprüft — das ist die mechanische Bestätigung der Konformität (Kultur aus Story 1.4: Validator-Selbstprüfung gegen Fixtures). Die at-Zeitstempel werden zum Ausführungszeitpunkt in UTC-ISO-8601 gesetzt.

Zeitstempel-Determinismus: Der at-Wert ist ein Ausführungszeitpunkt und damit per se nicht deterministisch über Runs hinweg — das ist beabsichtigt (Trust-Metadaten beschreiben den Erzeugungsmoment, AD-15). Deterministisch sind Pfad, Struktur, Frontmatter-Form und sources-Auflösung; der Verdikt-Erfolg hängt nicht von einer festen at-Sekunde ab.

Verification

Commands:

  • git status --short && git diff --stat — expected: neue Datei schema/compiler.md + wiki/<slug>.md-Concepts + wiki/index.md-Änderung + wiki/log.md-Eintrag + sprint-status.yaml-Update; KEINE raw/-, schema/wiki-compiler.md-, schema/validator.md-Mutationen.
  • Validator-Instruktion gegen Bundle ausführen (manuell/deterministisch, siehe schema/validator.md §5-Grammatik): grep -nE 'Punkt 11|concept nicht verlinkt' schema/validator.md + praktischer SUCCESS-Lauf des Validators gegen wiki/ — expected: alle neuen Concepts + index.md + log.md liefern SUCCESS (kein FAIL, kein WARN-Blocker).
  • Frontmatter-Konformitäts-Smoke: grep -nE '^(type|sources|generated|verified|status|stale_after):' wiki/*.md — expected: nur §3-Felder je Concept; type gesetzt; generated.at im Format YYYY-MM-DDTHH:MM:SS (mit Offset-Suffix).
  • sources-Auflösung: grep -nE 'resource:' wiki/*.md — expected: jeder Wert ist ein existierender /-getrennter raw/-Pfad (kein .., kein wiki/, keine URL).
  • git log --oneline -3 -- raw/ — expected: keine neuen Commits/Einträge unter raw/ (immutable).
  • at-Format-Smoke (Punkt 14): grep -nE '^ at: [0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(Z|[+-][0-9]{2}:?[0-9]{2})$' wiki/*.md (je generated.at/verified.at ein volles ISO-8601-Datetime; reines Datum wäre FAIL Punkt 14).
  • sources-Eintrag-Key-Subset (Vertrag §3.3/Punkt 6): grep -nE '^ - [a-z_]+:' wiki/*.md — expected: je sources-Eintrag ausschließlich resource (bzw. erlaubte optionale: id/title/author/usage_count/last_modified); kein unautorisierter Key.

Manual checks (if no CLI):

  • schema/compiler.md ist rein textuell (kein Programmcode/Executable-Abschnitt) und beginnt mit Zweck & Aufruf.
  • Alle Erzeugungsregeln sind deterministisch formuliert und auf Vertrag/Validator zurückführbar (kein reines LLM-Urteil).
  • wiki/log.md enthält einen datierten Eintrag über die angelegten Concepts mit Quell-Pfaden.
  • Jede Concept-Datei ist menschlich lesbares Markdown (NFR-2) und nicht bloße Kopie der Quelle (FR-2).

Verification Record (Ausführungs-Beleg, 2026-08-16)

Demonstrationslauf: schema/compiler.md (Revision 1.1) angelegt; 3 Root-Concepts erzeugt; wiki/index.md + wiki/log.md mutiert. sprint-status.yaml: epic-2 + Story 2.1 → in-progress.

Validator-Lauf gegen das mutierte Bundle (gemäß schema/validator.md, Revision 6, deterministisch ohne LLM-Urteil):

Datei Punkte 114 §6/V §6.1 EC-1 Verdikt
wiki/index.md 8, 9, 13 ✓ (Punkt 8 OK, kein Punkt-9-Inhalt, keine Duplikate) SUCCESS
wiki/log.md 10 ✓ (kein Frontmatter), 9 ✓ SUCCESS
wiki/llm-wiki-prinzip.md 1, 2, 6, 7, 12, 13, 14 ✓ (type: concept, generated.by gesetzt, at = 2026-08-16T09:23:33Z volles ISO-8601, canonical key order, keine Duplikate) EC-1 ✓ (raw/prd/prd-wow20-2026-08-14.md existiert als Datei) SUCCESS
wiki/knowledge-kompilation-inkrementell.md 1, 2, 6, 7, 12, 13, 14 ✓ EC-1 ✓ (raw/epics/epics-2026-08-14.md existiert) SUCCESS
wiki/wissensarchitektur-trennung-states.md 1, 2, 6, 7, 12, 13, 14 ✓ EC-1 ✓ (raw/architecture-spine/architecture-spine-2026-08-14.md existiert) SUCCESS

Punkt 11 (Index-Regel): Alle 3 Root-Concept-Identitäten llm-wiki-prinzip, knowledge-kompilation-inkrementell, wissensarchitektur-trennung-states sind in wiki/index.md verlinkt (grep -c je = 1) ✓.

Punkt 3/4 (Keine wiki/-Auflösung, Pfad-Grammatik): Alle resource-Werte sind /-getrennte raw/-Pfade ohne .., ohne führendes /, ohne Backslash, ohne URL ✓.

Scope: Keine Mutation unter raw/ (git log raw/ ohne neue Commits), schema/wiki-compiler.md und schema/validator.md unverändert (autorisiert) ✓. Frontmatter-Smoke grep -nE '^(type|sources|generated|verified|status|stale_after):' wiki/*.md → nur §3-Felder in Concepts, kein okf_version/type: bundle ✓.

Gesamtergebnis: SUCCESS für alle 5 Bundle-Dateien — kein FAIL. Run als erfolgreich gewertet (Integrations-/Verifikations-Beleg).

Spec Change Log

  • 2026-08-16 (Step-04-Review): sources-Eintrag-Key-Subset als Zusatz-Verification-Check ergänzt (Vertrag §3.3, Punkt 6); at-Format-Smoke als Punkt-14-Beleg unter die Verification-Checks aufgenommen; status: in-review (Review begonnen). Keine Änderung am <frozen-after-approval>-Intent.
  • 2026-08-16 (Erstellung): Initiale Approve-Baseline.

Edge-Case-Matrix-Audit

Scenario Abgedeckt durch Befund
HAPPY_PATH §5 Demonstrationslauf ✓ 3 Concepts erzeugt, verlinkt, validiert
CONCEPT_OHNE_TYPE §4.1 (Punkt 1) + §6.5 Kriterium 1 ✓ Instruktion verlangt zwingend non-empty type; Abweichung → Run-FAIL mit textueller Ursache
FEHLENDE_RAW §4.2 + §6.5 Kriterium 3 (EC-1) ✓ nur real existierende raw/-Dateien als resource
LEERE_QUELLE / KEINE_WISSENSEINHEITEN §1.3/§1.4 (Artefakt-Ausschluss) raw/README.md, raw/**/source.md sind kein Input/keine Evidenz; werden nie resource
VERALTETE_SOURCE §1.4 (Sidecar = Artefakt, nicht Input) ✓ fehlende Commit-Auflösbarkeit blockiert Erzeugung nicht
KEIN_CONTENT §2.3 (FR-2, Curated ≠ Copy) ✓ bloße Kopie/Zusammenfassung → kein Concept

Step-04-Review-Nachschärfungen (2026-08-16)

Nach den drei Review-Layern (Blind Hunter, Edge Case Hunter, Verification Gap) angewendet:

  • schema/compiler.md auf Revision 1.2: Input-Regel auf AD-17a statt AD-17.2 referenziert; sources-Eintrag-Key-Subset (Innen-Ebene, Vertrag §3.3) in §4.2, §6.5-Kriterium-1 und §6.6 ergänzt; status-Absenz Formulierung an Vertrag §3.6 (Absenz = stable) angebunden; Bereichs-Ziel-Ablehnung bis Story 2.4 (§5.1/§6.6); §6.6-Fehlerursache der verified-Zeile auf Punkt 6 korrigiert (statt „semantisch (Trust)"); §6.6-Referenzlabel von §4.5 auf §4.4 korrigiert; §6.6 um vollständige Punkt-4-Pfad-Verbote ergänzt; AD-17f als Commit-Boundary sichtbar (§0/§5.3/§6.6).
  • schema/validator.md auf Revision 7: §7.3-Isolations-Hinweis um Innen-Ebenen-Key-Subset-Fälle (Punkt 6 in sources/generated/verified-Einträgen) erweitert.
  • wiki/index.md: Workspace-Absatz präzisiert — schema/ enthält drei Artefakte (Vertrag, Validator, Compiler-Instruktion) statt nur „Compiler-Schema-Vertrag".
  • wiki/log.md: Review-Eintrag ergänzt (Nachschärfungen + at-Konsistenz-Prüfung).
  • sprint-status.yaml: Story 2.1 → review (Review begonnen).

Verifiziert gegen Fehlalarme: at: 2026-08-16T09:23:33Z entspricht 11:23:33 Lokalzeit (+0200) und deckt sich mit den Datei-Mutationszeitpunkten (11:24) — kein Befund auf die Ausführungszeit; Consumer-Namen (BMAD/Claude Code/Codex) sind in raw/prd, Spine und Epics verbatim belegt; Key-Reihenfolge liegt korrekt in Validator §4.1 (Zeile 104); „Mutieren" (AD-6/A0-7) steht im Einklang mit dem inkrementellen „Update"-Fluss (A0-6).

Defer-Kontexte (in deferred-work.md notiert): Content-Truth-Verifikation (kein check prüft die inhaltliche Übereinstimmung eines Concept-Bodys mit seinen raw/-Quellen; Story 2.2/Deferred) sowie eine at-basierten Determinismus-Selbsttest-Divergenz (die at-Sekunde variiert pro Run, während der §6.6-Interpretations-Hinweis eine feste Form behauptet — mit der at-Run-Zeit semantisch konsistent, als Selbsttest-Dokumentation für Story 2.3/nächste Validator-Revision zu schärfen).

Suggested Review Order

Einstieg (Design-Intent der Story)

  • Deterministic compiler instruction — the single artifact that makes Story 2.1 load-bearing: one place, textual (D-3), flow Interpret→Reconcile→Synthesize→Mutate→Validate. compiler.md

Feldsubset & Trust — Intake der drei Artefakte

  • New compiler instruction: sources-entry key-subset (Innen-Ebene, Vertrag §3.3) and generated (by/at, no verified) — the §4 production rules in canonical form. compiler.md

  • Authorized contract: field subset, sources key-subset per entry, generated by/at — the normative anchor Story 2.1 derives from (unchanged, authorized). wiki-compiler.md

  • Validator (Rev 7): §7.3-Isolations-Hinweis auf Innen-Ebenen-Key-Subset erweitert — Punkt 6 deckt auch sources/generated/verified-Eintragsebenen ab (Revisionslog nachgeführt, unverändert autorisiert). validator.md

Wissenseinheiten — Konzepte aus den Quellen

  • LLM-Wiki-Prinzip — Anker-Concept: Compounding, Knowledge Compiler vs. Retrieval; Trust-Metadaten gemäß A0-20 (generated ohne verified). llm-wiki-prinzip.md

  • Knowledge Compilation & Inkrementelle Evolution — AD-5-Datenfluss, FR-12/FR-6/FR-14; Abgrenzung zu Epic 3. knowledge-kompilation-inkrementell.md

  • Wissensarchitektur: Source Material, Curated Knowledge & Consumer — AD-2/AD-3-Grenzen, Consumer-Unabhängigkeit, Konvergenzregeln. wissensarchitektur-trennung-states.md

Verlinkung & Dokumentation — Bundle-Integrität

  • Bundleroot-Index: ## Concepts mit den 3 Root-Concept-Links + korrigierter Workspace-Beschreibung (drei schema/-Artefakte). index.md

  • Bundle-Log: Story-2.1-Demonstrationslauf- und Review-Einträge (datumsgruppiert, ohne Frontmatter). log.md

Status & Tracking — Peripherie

  • Sprint-Status: epic-2/Story-2.1 auf review (Review begonnen), nach Abschluss auf done zu flippen. sprint-status.yaml