Files
wow20/_bmad-output/implementation-artifacts/spec-2-5-progressive-discovery-über-index-md-bereitstellen.md

42 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
Progressive Discovery über index.md bereitstellen (Story 2.5) feature 2026-08-18 done 3 64a0f6a616
_bmad-output/implementation-artifacts/epic-2-context.md

Intent

Problem: Die progressive Discovery ist im Bundle zwar normiert (Vertrag §6: Bundleroot → Area-index.md → Concepts, AD-9/FR-11), aber für den Adressierbaren Anspruch sind drei Lücken offen: (1) §7 Z.253 der Compiler-Instruktion verweist die komplette Discovery ("Navigation, Area-Indizes, Suche") als Vorbehalt an Story 2.5; (2) der Validator prüft weder, dass eine Area von der Bundleroot aus erreichbar ist (Navigation Root → Area, AD-9), noch gibt es einen Selbsttest für die vollständige index-Verkettung; (3) Defer F-07 (verschachtelte Areas/Unter-Ebenen, wiki/a/b/concept.md) ist offen und nennt Story 2.5 ausdrücklich als Heimat, die die Antwort festlegt.

Approach: Story 2.5 integriert die progressive Discovery als expliziten Instruktionsabschnitt (§5.8) in schema/compiler.md — D-3-konform, kein Vertrag-/Validator-/raw-Change (AD-3). Sie definiert: (a) die bewertbare Discovery-Vollständigkeit (gewurzelte Erreichbarkeit Root → Area-index.md → Concept als erfolgreicher Discovery-Pfad, §5.7 Pkt. 5), (b) die Basis-Discovery-Pflicht (frontmatterlose Area-index.md verlinkt ihre Area-Concepts) als „Struktur" und nicht nur Soll, (c) eine deterministische textuelle „Such"-Antwort für den Story-2.5-Vorbehalt (Navigation als primäre Discovery, Suche als Consumer-seitige grep-Angelegenheit — AD-13, FR-11, NFR-3), und (d) die Antwort auf Defer F-07: die Kartografie folgt ab Story 2.5 einer konsolidierten Zwei-Ebenen-Struktur (Root-Concepts + Areas mit je einer index.md); verschachtelte Areas (wiki/a/b/) sind keine zugelassene Anlageform — ein solcher Kandidat wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten (Loopback-1-Renegotiation 2026-08-18, menschen-autorisiert — Option A: Träger ist §5.8, nicht §3.2; §3.2 bleibt der Dateikollision bestehender Concepts vorbehalten). Neue §5.8 + Revisionslog (3.x). Kein Interface-/Backend-/Datenbank-Änderung — reine Instruktions- und Bundle-Demonstrations-Änderung. Keine neue §7-Invaliditätsklasse; validator.md bleibt strukturell unverändert (Punkt 11 bleibt die Index-/Verlinkungs-Prüfung).

Boundaries & Constraints

Always:

  • Progressive Discovery ist ein Instruktionsthema (D-3). Die Discovery-Semantik wird in schema/compiler.md (neue §5.8) verankert — einziger Instruktions-Ort. Kein Vertrag-/Validator-/raw-Change (AD-3), keine Erweiterung der §7-Liste, kein Standalone-Tool. Der Validator bleibt bei Punkt 11 als strukturelle Index-/Verlinkungs-Prüfung (Area-Existenz + Concept-in-Index verlinkt); die Discovery-Vollständigkeit (Root → Area → Concept) ist keine neue §7-Invaliditätsklasse — sie wird deterministisch als Instruktions-Selbsttest belegt.
  • Kartografie ist konsolidiert Zwei-Ebenen (befriedet F-07). Das Bundle-Navigationsmodell besteht aus Root-Concepts + Areas (je eine frontmatterlose wiki/<area>/index.md, die ihre Area-Concepts in gepinnter §5.6-Form verlinkt; Bundleroot wiki/index.md verlinkt die Area-index.md, Navigation Root → Area, AD-9). Verschachtelte Areas sind keine zugelassene Anlageform: wiki/a/b/ mit Concept darunter ist kein „Area mit Inhalt" — ein solcher Kandidat (Erstellungskandidat oder Discovery-Ziel) wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten (keine Datei, kein Index-Link, Meldung NESTED AREA: <area>; Loopback-1-Korrektur: Träger ist §5.8-lokal, D-3 — nicht §3.2, der bleibt der Dateikollision bestehender Concepts vorbehalten). Die F-07-Frage „was ist Area mit Inhalt" wird damit instruktionsseitig deterministisch beantwortet (Erkennung = Datei-Existenz in Tiefe ≥ 3 unter der Bundleroot; Meldung = Instruktions-Selbsttest-Befund — kein §7-Eingriff).
  • Suche ist konsumenten-/extern-seitig (AD-9, FR-11, AD-13). Die Discovery braucht keine proprietäre Datenbank: Navigation ist die primäre Discovery (gewurzelte Erreichbarkeit), Suche ist optional konsumenten-seitig — textuell-deterministisch z. B. grep/ripgrep über wiki/. Kein Embedding/Vector, kein Such-Dienst, kein Index-Datei-Format-Erfinden — die bestehenden index.md sind die Discovery-Ebene.
  • Die Discovery-Lücke des Validators ist instruktionsseitig deckbar. Der Validator prüft nicht, dass eine Area von der Bundleroot verlinkt ist (Punkt 11 adressiert Area-Existenz/Concept-Verlinkung, nicht Root→Area-Navigation). Diese Lücke wird durch einen deterministischen, re-executierbaren Instruktions-Selbsttest geschlossen (Discovery-Check: jede Area ist aus der Bundleroot erreichbar; jedes Area-Concept in seiner Area-index.md verlinkt — Verlinkung in gepinnter §5.6-Form). Kein Validator-Change (AD-3, D-3).
  • Kein MOVE bestehender Root-Concepts. Die bestehenden Root-Concepts werden nicht in Areas verschoben (Kuratierung/AD-7d ist Epic-3-Nähe); als Discovery-Demo kann ein neues Root-Concept ergänzt und (a) in der Bundleroot sowie (b) über einen Index-Link „über das Area-Concept" verlinkt werden (nur neue Inhalte).
  • Bundle bleibt ohne geladene Indizes vollständig verständlich (NFR-2/NFR-5) — alle Discovery-Regeln sind Markdown/Datei-Struktur, kein Server, keine Datenbank, kein laufender Prozess.
  • deferred-work.md (append-only): Defer F-07 bekommt status: umgesetzt (Story 2.5…); die drei „Home: fokussierte Instruktionsrunde ab Story 2.5"-Einträge (Multi-Line, )-blinde Extraktion, Cross-Page-Anker) bleiben offen — sie gehören zur Link-Pin-Runde (§5.6), die Story 2.5 unberührt lässt (kein Scope-Hijack). sprint-status.yaml: Key 2-5-…in-progress.

Ask First: Andere Pin-Wahl als die bestehende gepinnte §5.6-Form · MOVE bestehender Concepts · Validator-/Vertrags-/raw-Änderung · Einführung verschachtelter Areas als Regelfall · Such-Dienst/Index-Datei-Format über die Konsumenten-seitige grep-Antwort hinaus.

Never: Veränderung an schema/wiki-compiler.md/schema/validator.md/raw/ (AD-3) · neue §7-Invaliditätsklasse · Angebot einer zweiten Discovery-Ebene über die Zwei-Ebenen-Struktur hinaus · Embedding/Vector/Such-Dienst (AD-13) · proprietäre Link-/Search-Datenbank (AD-8) · Renames/Redirects (AD-7d).

I/O & Edge-Case Matrix

Scenario Input / State Expected Output / Behavior Error Handling
HAPPY_PATH Bundle mit Bundleroot, einer Area (wissensarchitektur/ mit index.md + source-material.md), 3 Root-Concepts Jede Area ist aus der Bundleroot erreichbar; jedes Area-Concept aus seiner Area-index.md; jedes Root-Concept aus der Bundleroot — gewurzelte Erreichbarkeit; Discovery-Selbsttest liefert keine Verletzung; Suche = grep N/A
AREA_UNREACHABLE Area-index.md existiert, ist aber von der Bundleroot nicht verlinkt (kein Root→Area-Pfad) Discovery-Check → UNREACHABLE AREA: <area> als Verletzung — die Area bleibt für die Navigation unsichtbar (AD-9) Run-FAIL textuell benannt (Instruktions-Selbsttest, kein Validator-Punkt)
NESTED_AREA_KANDIDAT Ein Erstellungskandidat mit Ziel wiki/a/b/concept.md (zwei Ebenen, Tiefe ≥ 3) bzw. wiki/a/b/ Zwei Zustände: (1) Hold-Zeitpunkt — der Erstellungskandidat wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten: keine Datei, kein Index-Link; (2) Formel-Befund — existiert eine Markdown-Datei in Tiefe ≥ 3 unter der Bundleroot (z. B. nachträglich angelegt), meldet die §5.8-Selbsttest-Formel (Lauf B) NESTED AREA: <a> (erste Ebene); der Sandbox-Nachweis belegt die Detektion auf einem synthetischen Baum mit angelegter Testdatei Run bricht fürs Gebilde ab: „teilweise erfolgreich" (übrige Einheiten laufen weiter, NFR-4) — Zwei-Zustands-Klarstellung per menschlicher Renegotiation 2026-08-18 (Loop-3-Decision 2)
DISCOVERY_DEMO_ROOT_AREA_LINK Neues Root-Concept, zusätzlich überdacht in das source-material.md-Area-Concept in §5.6-Form verlinkt Root-Concept ist aus Bundleroot erreichbar; zusätzlicher (rein informierender) Link von der Area aus — kein MOVE, konsolidierte Zwei-Ebenen-Kartografie bleibt N/A
SEARCH_GREP Consumer führt textuelle Suche nach Begriff <term> aus grep -n <term> wiki/-Suche als konsumenten-/extern-seitige Antwort; keine Such-Infrastruktur/Bundle (AD-8, AD-13) N/A

Code Map

  • schema/compiler.mdmutiert: neue §5.8 „Progressive Discovery über index.md (Story 2.5)" (nach §5.7 ≈ Z.200, vor §6): (1) Discovery-Pfad — Bundleroot wiki/index.md → Area-index.md (frontmatterlos) → Area-Concepts in gepinnter §5.6-Form; Root-Concepts direkt aus der Bundleroot (§5.7 Pkt. 5, AD-9/FR-11); (2) gewurzelte Erreichbarkeit als deterministisches Discovery-Kriterium + re-executierbarer Selbsttest — jede Area muss aus wiki/index.md verlinkt sein (Root→Area, AD-9); Verletzung → UNREACHABLE AREA: <area> (textuell benannter Instruktions-Selbsttest-Befund, Run-FAIL gemäß §5.6-Pkt.-4-analoger NFR-4-Regel); die Area→Concept-Verlinkung ist durch Validator Punkt 11 mechanisch abgedeckt (Concept nicht verlinkt=<concept>) und wird hier nicht dupliziert; die §5.6-Formeln (Z.133166) decken die Link-Form weiter ab; **verlinkt = Ziel in gepinnter §5.6-Form (a/index.md bzw. (./a/index.md — das ./-Präfix ist von der Erreichbarkeits-Formel toleriert (die Form-Check-Exklusion ^\. in §5.6 Pkt. 3 zählt ./-Ziele nicht als Formverletzung, L2-6-Erkenntnis); (3) konsolidierte Zwei-Ebenen-Kartografie (antwortet Defer F-07): Root + eine Area-Ebene; §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3)wiki/a/b/-Kandidat (Erstellungskandidat oder Discovery-Ziel) wird angehalten (keine Datei, kein Index-Link, Meldung NESTED AREA: <area>, Run „teilweise erfolgreich"); §3.2 bleibt der Dateikollision bestehender Concepts vorbehalten; (4) Suche = Consumer-grep (grep/ripgrep über wiki/, AD-13 — keine Such-Datenbank, kein Embedding). Nachgeführt: §7 (Story-2.5-Vorbehalt auf „Suche"-Rest gekürzt — die Vorbehalt-Zeile lag in der Baseline main bei Z. 253, nach dem §5.8-Einschub bei Z. 285), §8-Revisionslog 2.3 + Normreferenzen AD-9/FR-11/AD-13/NFR-3. Kein Vertrag-/Validator-/raw-Change (AD-3); keine neue §7-Klasse.
  • wiki/log.mdappend: Eintrag (Vertrag-§5-Format) mit Discovery-Semantik, Zwei-Ebenen-Kartografie (F-07 geschlossen), sprint-status-Wechsel 2-5-progressive-discovery-über-index-md-bereitstellen backlogin-progress, Selbsttest-Beleg (keine UNREACHABLE-Verletzung).
  • _bmad-output/implementation-artifacts/deferred-work.mdmutiert: F-07-Eintrag (source_spec bei L87; status:-Zeile bei L90) status:umgesetzt (2026-08-18, Story 2.5 — konsolidierte Zwei-Ebenen-Kartografie, §5.8) (append-only); die drei „Home: …ab Story 2.5"-Link-Pin-Einträge (status:-Zeilen bei L220, L224, L250) erhalten keine Statusänderung (Link-Pin-Runde ist separat). sprint-status.yaml: Key 2-5-…in-progress.
  • wiki/index.md, wiki/wissensarchitektur/*, 3 Root-Concepts, schema/wiki-compiler.md, schema/validator.md, raw/…read-only: keine MOVE-/Inhaltsänderung an Concepts oder index.md (Kuratierung/AD-7d ist Epic-3-Nähe); optional: ein neues Root-Concept als Discovery-Demo (angelegt in Bundleroot-Form, kein MOVE).

Tasks & Acceptance

Execution:

  • schema/compiler.md — §5.8 anlegen (Discovery-Pfad, Erreichbarkeits-Kriterium + Selbsttest, konsolidierte Zwei-Ebenen-Kartografie mit F-07-Antwort über den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3), Suche = Consumer-grep) + §7 Z.253 gekürzt + §8 Revisionslog 2.3 + Normreferenzen (AD-9/FR-11/AD-13/NFR-3). Kein Vertrag-/Validator-/raw-Change.
  • wiki/log.md — Eintrag (§5-Format) mit Discovery-Semantik, F-07-Schluss, Statuswechsel, Selbsttest-Beleg.
  • deferred-work.md — F-07-Eintrag (source_spec bei L87, status:-Zeile bei L90) status: umgesetzt (…Story 2.5…); die drei Link-Pin-Einträge (status:-Zeilen L220/L224/L250) unverändert lassen; sprint-status.yaml — Key 2-5-…in-progress.
  • Discoverability-/Edge-Tests im Sandbox-/tmp-Baum (I/O-Matrix): gewurzelte Erreichbarkeit (kein UNREACHABLE), AREA_UNREACHABLE-Negativ-Test (Area ohne Root-Link), NESTED_AREA-Kandidat wiki/a/b/ → §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3).

Acceptance Criteria:

  • Given ein Bundle mit mehreren Areas, when ein Consumer die Navigation startet, then liest er zunächst die Bundle-Root wiki/index.md und dann die relevanten Area-index.md (AD-9) — gewurzelte Erreichbarkeit ist instruktionsseitig verankert und deterministisch prüfbar (Discovery-Selbsttest, §5.8-Pkt.-2-Formel an Run-Nachweis gebunden).
  • Given die Hierarchie, when ein Concept neu angelegt wird, then wird es passend in index.md des zugehörigen Bereichs verlinkt (AD-9, A0-10) — bestehende §5.3/§5.7-Regel bleibt; §5.8 erläutert die Discovery-Semantik (Area-Concept in Area-index.md — mechanisch abgedeckt durch Validator Punkt 11 —, Root-Concept in Bundleroot).
  • Given eine Suche, when der Consumer sie nutzt, then ist sie klar extern bzw. Consumer-seitig (grep/ripgrep über wiki/, AD-13) — die Discovery braucht keine proprietäre Datenbank (AD-9, FR-11).
  • Given ein Verzeichnis unter wiki/, when es zwei Ebenen tief ist (wiki/a/b/), then ist es keine zugelassene Anlageform — der Erstellungskandidat wird durch den §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) angehalten (keine Datei, kein Index-Link, Meldung NESTED AREA: <area>, Run „teilweise erfolgreich"); Zwei-Ebenen-Kartografie bleibt ($5.8 Pkt. 3).
  • Given die Instruktion, when geprüft, then ist §5.8 der einzige Discovery-Instruktions-Ort (D-3), §5.6-Formeln bleiben re-executierbar (AD-17h), der Validator läuft SUCCESS (keine neue §7-Klasse, kein Schema-/Validator-/raw-Change) — mit dem per-Datei-Verdikt-Nachweis in wiki/log.md belegt.

Spec Change Log

  • 2026-08-18 (Erstellung): Initiale Approve-Baseline.

  • 2026-08-18 (Loopback 1, menschlich-autorisierte Renegotiation — intent_gap F-07): Review-Befund (Blind-Hunter #1/#2/#3/#12, Edge-Case #1/#5/#13): Der Zwei-Ebenen-Kandidat wiki/a/b/concept.md war mechanisch nicht erfassbar — die §5.8-Selbsttest-Formel (nur index.md-Scan) lieferte dafür keine Meldung, und der benannte Träger §3.2-Kollisions-Hold feuerte nur bei Dateikollision eines existierenden Ziel-Pfads (ein brandneuer Pfad kollidiert nie). Korrektur (Option A): Der Zwei-Ebenen-Hold wird §5.8-lokal verankert („§5.8-Instruktions-Hold, Zwei-Ebenen, Tiefe ≥ 3"), Kandidaten mit Tiefe ≥ 3 unter der Bundleroot werden angehalten (keine Datei, kein Index-Link, Meldung NESTED AREA: <area>, Run „teilweise erfolgreich"); §3.2 bleibt der Dateikollision bestehender Concepts vorbehalten. KEEP: gefrorene Erwartung (keine Datei/kein Index-Link/teilweise erfolgreich/Zwei-Ebenen) bleibt bit-identisch erhalten; Determinismus/AD-17h; D-3 (kein neues Prädikat, kein §7-Eingriff); AD-3 (kein Schema-/Validator-/raw-Change).

  • 2026-08-18 (Loopback 1, bad_spec): (a) Verifikations-Formel war nicht identisch zur implementierten §5.8-Formel und schwächer (VG #1, BH #4) — auf byte-identische §5.8-Pkt.-2-Formel vereinheitlicht; (b) Selbsttest deckt „Area-Concept in Area-index.md" nicht (Intention Z.26) — die eigentliche Design-These: diese Koordinate ist durch Validator Punkt 11 (Concept nicht verlinkt=<concept>) mechanisch abgedeckt und wird bewusst nicht dupliziert; (§5.8-Pkt.-2-Einleitung + Intent-Wortlaut präzisiert; BH #6); (c) Outcome-Kopplung von UNREACHABLE AREA an den Run-Nachweis verankert (BH #3/#9); (d) Discovery-Demo als optional/ausgeführt markiert (BH #10); (e) Code-Map-Line-Zahlen postmodern nachgeführt (BH #5); (f) der Validator-SUCCESS-Lauf hat einen re-executierbaren Befehl (BH #13).

  • 2026-08-18 (Loopback 2, bad_spec + Konsistenz-Renegotiation — Review-Loop 2, 3 Layer): (a) Verification-Formel-Byte-Identität nachprüfbar verfügbar gemacht (Kern-L2-1, EC-L2-6/VG-L2-1/BH-L2-15): die Verification-Z. 8385 führen jetzt die §5.8-Pkt.-2-Selbsttest-Formel wörtlich als Einzel-Quote-sh -c '…'-String und binden sie als „verbindlicher Nachweis = exakt die Instruktions-Formel (byte-identisch)"; (b) die irreführende „identische Formulierung im Instruktionstext"-Behauptung (Verification Z. 84) wurde zur faktisch korrekten Formulierung korrigiert („Identische Formulierung liegt auch im Instruktionstext … die Selbsttest-Formel ist die Instruktion"; VG-L2-1/BH-L2-13); (c) der phantombildende „wörtlicher Einzel-Quote-String"-Verweis im Log-Eintrag wurde präzisiert (die wörtliche Instruktions-Formel liegt in schema/compiler.md §5.8 Pkt. 2; VG-L2-2); (d) erfundener Validator-CLI-Befehl entfernt (uv run --no-cache _bmad-bmw40 existiert nirgends; der Validator ist reine Text-Instruktion, human-mechanisch ausgeführt, D-3; VG-L2-3/BH-L2-14); (e) Formel-4-Baseline von 64a0f6a… auf den Run-Kopf 862cf41… korrigiert (die extrahierte Baseline ist der Kopf des letzten Zuwachs-Runs, nicht der Spec-baseline_commit; VG-L2-3/BH-L2-12); (f) die Frozenschnitt-Renegotiation (Loop-1-Option-A) wird in der gefrorenen Design-Notes-Sektion konsistent nachgeführt („Deterministik für wiki/a/b/ liegt im §5.8-Instruktions-Hold", nicht im §3.2-Kollisions-Hold; die §3.2-Zeile war der letzte inhaltlich abweichende Frozen-Text — menschen-autorisierte Vervollständigung der Loop-1-Renegotiation, derselbe Träger, keine neue Entscheidung; BH-L2-16/17); (g) die (a/index.md/(./a/index.md-Verlinkungs-Koordinate wird nun explizit als „gepinnte §5.6-Form, beide Varianten zulässig" dokumentiert (die §5.6-Formel-2-^\.-Exklusion zählt ./ nicht als Formverletzung — die (./-Ambiguität aus BH-L2-19/20 ist damit aufgelöst: die Erreichbarkeits-Formel und der Form-Check sind widerspruchsfrei); h) Code-Map-/Task-Line-Zahlen auf die Ist-Zeilen korrigiert (L87/L90; BH-L2-4/11). KEEP (Constraints): gefrorene Erwartungen, Determinismus/AD-17h, D-3, AD-3. KEEP (Code, muss die Re-Derivation überleben): die §5.8-Selbsttest-Formel byte-formgleich als Einzel-Quote-sh -c '…'-String (zwei Läufe A/B, sort -u-Konsolidierung, NESTED AREA/UNREACHABLE AREA-Meldungen); die §5.8-Sektion nach §5.7 vor §6 mit Revisionslog 2.3 + §7-Z.253-Kürzung auf „Suche"-Rest; Suche=Consumer-grep (Pkt. 4); Discovery-Demo optional kein MOVE (Pkt. 5); log.md-Eintrag im Vertrag-§5-Format inkl. Selbsttest-Beleg; deferred-F-07 status: umgesetzt; sprint 2-5-… → in-progress. Route-Klarstellung (2026-08-18, Auto-Mode-Klassifikator, kein Revert): Der bad_spec-Schritt-4-Regelsee sah „Revert code changes → re-derive" vor; der Auto-Mode-Klassifikator hat den git restore der 4 Story-2.5-Dateien gesperrt (geschützter „Irreversible Local Destruction"-Schutz). Ausführung mit bestem Ermessen ohne Revert (dokumentierte Schritt-4-Abweichung): die bad_spec-Wurzel lag in der non-frozen Verification-Sektion der Spec (dokumentierte Validator-CLI-/Baseline-Behauptungen), nicht im implementierten Code — die implementierte §5.8-Formel war empirisch korrekt (Lauf grün, Exit 0) und die geänderte Spec bildet sie jetzt byte-identisch ab; ein Revert + Re-Derivation wäre ein Null-Op im Artefakt-Stand gewesen und hätte korrektes, verifiziertes Arbeiten zerstört. Rejected (reject, kein Patch): bearbeitete Mehrfach-Bucket-/sort -u-Semantik (empirisch belegt korrekt), Root-Concept-Erreichbarkeit (Punkt-11-Delegation), Area-Concept-/leere-Area-Delegation, Staging/untracked (Workflow-Verhalten), Loop-1-Status-Markierungen, Demo-Ausführungs-Shadow — alle verifiziert als nicht-blockierend. Deferred: F-08/.MD-Case, Run-FAIL-Niveau von NESTED — vorbestehend, kein Story-2.5-Blocker.

  • 2026-08-18 (Loop 3, bmad-code-review, 4 Layer; Nutzer-Entscheidungen 1/1): (a) Decision 1 — §5.8-Selbsttest-Formel gehärtet (Edge-Case-Hunter #1#8): Erreichbarkeits-Check auf echte Markdown-Linksyntax geschärft (Muster \]( statt \( — Lücke (c) Stiller-Vorbeilass auf Prosa-Treffer beseitigt), grep -qEgrep -qF (Fix-String — ERE-Metazeichen-Lücken (a)/(b) für beliebige Area-Namen geschlossen), CWD-Präguard [ -f wiki/index.md ] (Lücke (e) — falscher SUCCESS bei fehlendem Baum beseitigt), LC_ALL=C sort -u (Lücke (f) — AD-17h-Nachweis-Byte-Identität über Umgebungen), POSIX-sh/GNU-find-Prämisse in Pkt. 2 explizit dokumentiert (Lücke (g)); Meldungstokens UNREACHABLE AREA: <area> / NESTED AREA: <a> bit-identisch erhalten (frozen I/O-Matrix intakt); die gehärtete Formel wird byte-identisch in dieser Verification-Sektion gespiegelt (Pkt. 1) und der Log-Selbsttest-Beleg aktualisiert. (b) Decision 2 — frozen-Matrix-Zeile NESTED_AREA_KANDIDAT Zwei-Zustands-Klarstellung (menschlich-autorisierte Renegotiation, VG #4): Hold-Zeitpunkt (Kandidat angehalten, keine Datei, kein Index-Link) von der Formel-Meldung (NESTED AREA: <a> für existierende Tiefe-≥-3-Dateien, Sandbox-Nachweis = synthetischer Baum) getrennt — keine gefrorene Erwartung geändert. (c) 16 Patches umgesetzt (s. Review-Findings-Sektion): §5.8 (Hold-Trigger im Run-Flow, Punkt-11-Rev-9-Lücken-Verweis, Outcome-Klassifizierung vereinheitlicht, Prosa-Formel-Zitat, Body-Link-Terminologie, Tiefen-Definition, Ankerkorrektur §5.3 Pkt. 3, Consumer-grep-Beispiel), log.md (Review-Handoff-Nachführung, per-Datei-Validator-Verdikt-Zeile, I/O-Matrix-Szenariobeleg statt S1S5, „Selbsttest-Lauf A"), spec (AC 5 Wortung, Zeilen-Zitate L220/L224/L250, „Ash"-Phantom, §7-Zeilenreferenz, Suggested-Review-Order-Anker), Defer (2). KEEP (Constraints): gefrorene Erwartungen (Meldungstokens, Zwei-Ebenen, „teilweise erfolgreich"), Determinismus/AD-17h, D-3, AD-3 (kein Schema-/Validator-/raw-Change).

Design Notes

D-3-Begründung (§5.8 statt §7-Erweiterung): Die progressive Discovery ist laut §7 Z.253 explizit ein Story-2.5-Thema; die Story löst den Vorbehalt auf, indem die Discovery-Instruktion in §5.8 wandert. Der §7-Vorbehalt wird auf „Suche"-Rest eingekürzt (Suche bleibt konsumenten-seitig, kein Bundle-Thema mehr). Keine Normtext-Änderung am §7-Katalog/Validator (AD-3). F-07-Antwort (konsolidierte Zwei-Ebenen-Kartografie): Verschachtelte Areas hätten eine Vertrags-/Validator-Änderung erfordert (AD-3 read-only) und wären eine zweite Discovery-Ebene; die Deterministik für wiki/a/b/ liegt im existierenden §5.8-Instruktions-Hold (Zwei-Ebenen, Tiefe ≥ 3) — Loopback-1-Renegotiation (menschen-autorisierte Option A): Träger ist §5.8-lokal, nicht der §3.2-Kollisions-Hold, der bleibt der Dateikollision bestehender Concepts vorbehalten (ein brandneuer Zwei-Ebenen-Pfad kollidiert nie) — kein neues Prädikat, kein §7-Eingriff (D-3). Suche als Consumer-Angelegenheit (AD-13/FR-11/NFR-3): grep über wiki/ ist die textuell-deterministische Suche; keine Such-Indizes/-Datenbank.

Verification

Commands (re-executierbar, ab Workspace-Root):

  1. Discovery-Selbsttest (neu, §5.8): erwartet keine UNREACHABLE AREA- und keine NESTED AREA-Verletzung auf dem Ist-Baum. Die Formel wird wörtlich als sh -c '…'-Einzel-Quote-String ausgeführt (der $-Expansion erst in der inneren Shell stattfindet); verbindlicher Nachweis = exakt die §5.8-Pkt.-2-Selbsttest-Formel von schema/compiler.md §5.8 Pkt. 2 (byte-identisch, wörtlich übernommen): sh -c '[ -f wiki/index.md ] || { echo "SELBSTTEST-SETUP-Fehler: Workspace-Root (wiki/index.md fehlt)"; exit 1; }; find wiki -mindepth 2 -name index.md | while IFS= read -r f; do a="${f#wiki/}"; a="${a%/index.md}"; case "$a" in */*) continue;; esac; grep -qF "]($a/index.md" wiki/index.md || grep -qF "](./$a/index.md" wiki/index.md || echo "UNREACHABLE AREA: $a"; done; find wiki -mindepth 3 -type f -name "*.md" | LC_ALL=C sort -u | while IFS= read -r f; do d="${f#wiki/}"; a="${d%%/*}"; echo "NESTED AREA: $a"; done | LC_ALL=C sort -u' (Identische Formulierung liegt auch im Instruktionstext schema/compiler.md §5.8 Pkt. 2 — die Selbsttest-Formel ist die Instruktion; die einzelfall-spezifischen Sandbox-Negativ-Tests UNREACHABLE AREA/NESTED AREA werden als Selbsttest-Beleg im log.md-Eintrag dokumentiert (Sandbox-Nachweis auf einem synthetischen Baum mit angelegter Testdatei, s. Loop-3-Decision-2-Zwei-Zustands-Klarstellung). Der Live-Baum liefert hier keine Ausgabe, Exit 0; Ausführung außerhalb der Workspace-Root liefert SELBSTTEST-SETUP-Fehler: … + Exit 1 (CWD-Präguard, Loop-3-Decision-1).)
  2. §5.6-Formeln (unverändert re-executierbar): Form 2 (Form-Check) 0 (Exit 0), Form 3 (Dangling-Check) keine Ausgabe; Formel 4 38 ≡ 38 — Ist-Zählung ≡ Extraktion aus dem Run-Kopf 862cf41… (Baseline-Commit des letzten Zuwachs-Runs, §5.6 Pkt. 4; Story 2.5 erzeugt keinen neuen Zuwachs-Run, Formel 4 bleibt passierbar).
  3. Validator-Lauf: 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; kein Validator-/Vertrags-Change. Der Validator ist eine reine Text-Instruktion (schema/validator.md), die der Producer human-mechanisch ausführt (D-3 — es gibt keinen uv-Invoker/keinen CLI-Befehl); das Verdikt je Datei wird als Ausführungs-Nachweis im log.md-Eintrag geführt.

Manual checks:

  • §7 (Z. 285; in der Baseline main Z. 253) auf „Suche"-Rest gekürzt, Discovery in §5.8 verankert; kein Schema-/Validator-/raw-Diff; log.md-Eintrag datiert (2026-08-18) mit Discovery-Semantik + F-07-Schluss + Statuswechsel; deferred-work.md-F-07-Eintrag geschlossen (append-only); sprint-status.yaml konsistent.

Suggested Review Order

Discovery-Instruktion (§5.8, Kern der Story)

  • Einstieg: die neue Discovery-Sektion — gewurzelte Erreichbarkeit + re-executierbarer Selbsttest. compiler.md:202

  • Die deterministische Selbsttest-Formel (zwei Läufe A/B, sort -u-Konsolidierung) — verbindlicher Nachweis. compiler.md:216

  • Konsolidierte Zwei-Ebenen-Kartografie + §5.8-Instruktions-Hold (F-07-Antwort, tieferer Zip) — angehaltene Kandidaten, „teilweise erfolgreich". compiler.md:230

  • Suche = Consumer-grep (Pkt. 4, AD-13) — keine Such-Datenbank, kein Index-Datei-Format. compiler.md:231

  • Das §5.8-Selbsttest-Beleg-Niveau schließt die erreichbare Path-Prüfung ab. compiler.md:227

Verifikation & Nachweis-Ebene

  • Der §5.8-Verification-Block — verbindliche Formel-Byte-Identität + erwarteter Nachweis. spec-2-5-…:84

Status- & Tracking-Ebene

Review Findings (bmad-code-review, 2026-08-18 — Loop 3, 4 Layer)

Decision-Needed

  • [Review][Decision] §5.8-Selbsttest-Formel: realistische Edge-Case-Lücken (Edge-Case-Hunter #1#8) — die gepinnte Formel (Z. 216) ist fragil gegen: (a) Area-Namen mit Leerzeichen (for f in $(find …) splittet den Pfad → korrektt verlinkte Area erzeugt je Wortteil falsche UNREACHABLE AREA), (b) ERE-Metazeichen im Area-Namen (., *, + unescaped in grep -qE → unverlinkte Area besteht still, weil ein Link einer anderen Area den Regex trifft; unbalanciertes (/[ → Regex-Fehler nur in stderr), (c) Prosa-Ausdruck (a/index.md ohne Markdown-Linksyntax ]( in der Bundleroot besteht den Erreichbarkeits-Check still (Muster \( statt \](), (d) Groß-/Kleinschreibungs-Abweichung Verzeichnis↔Link (win32, F-08-Umfeld), (e) Ausführung außerhalb der Workspace-Root → nur stderr, Exit 0 = falscher SUCCESS statt Setup-Befund, (f) sort -u ohne LC_ALL=C → meldungsreihenfolge-Umgebungsabhängigkeit (AD-17h-Byte-Identität der Nachweise bricht), (g) implizite POSIX-sh/GNU-find-Prämisse (NFR-1/NFR-5) nicht dokumentiert. Minderung im Ist-Baum: Area-Namen sind kebab-case-Slugs (§5.1 Pkt. 1, AD-7a) → (a)/(b)/(d) sind für konforme Bäume strukturell nicht erreichbar; verbleibende reale Lücken: (c) Stiller-Vorbeilass auf Prosa-Treffer, (e) falscher SUCCESS bei falschem CWD, (f) Nachweis-Byte-Identität über Umgebungen. Ein Formel-Change bricht die byte-identische Spec↔compiler-Spiegelung (Verification Pkt. 1) und den Log-Selbsttest-Beleg — beides müsste neu belegt werden. Option 1: Formel härten (z. B. grep -qF -- "(<a>/index.md" + "(./<a>/index.md", Muster auf \]( schärfen, CWD-Präguard, LC_ALL=C sort -u, POSIX-sh-Prämisse in Pkt. 2 dokumentieren) + byte-identisch in der Spec neu spiegeln + Log-Beleg aktualisieren. Option 2: Formel unverändert lassen + Prämissen explizit dokumentieren (kebab-case-Area-Namen nach §5.1/AD-7a, Ausführung ab Workspace-Root, POSIX-sh/GNU-Tools-Umgebung, C-Locale) — Lücken (c)/(e) bleiben dann als bekannt-konservativ dokumentiert. — Aufgelöst (Nutzer, 2026-08-18, Option 1): Formel härten — (a) Erreichbarkeits-Check auf echte Markdown-Linksyntax \]( geschärft (Lücke (c) Stiller-Vorbeilass beseitigt), (b) grep -qF (Fix-String statt ERE — Metazeichen-Lücken (a)/(b) für beliebige Area-Namen geschlossen), (c) CWD-Präguard [ -f wiki/index.md ] (Lücke (e) falscher SUCCESS beseitigt), (d) LC_ALL=C sort -u (Lücke (f) AD-17h-Byte-Identität über Umgebungen), (e) POSIX-sh/GNU-Prämisse in Pkt. 2 dokumentiert (Lücke (g)); Meldungstokens UNREACHABLE AREA: <area> / NESTED AREA: <a> bit-identisch erhalten (frozen I/O-Matrix intakt); byte-identische Spec↔compiler-Spiegelung + Log-Selbsttest-Beleg neu belegt (Patches unten).
  • [Review][Decision] Gefrorene I/O-Matrix-Zeile NESTED_AREA_KANDIDAT ist mechanisch selbstwidersprüchlich (VG #4, BH #12) — die Zeile verlangt zugleich „Kandidat wird angehalten — keine Datei, kein Index-Link" und „Meldung NESTED AREA: <area>"; unter der gepinnten Formel (Lauf B: find wiki -mindepth 3 -type f -name "*.md") kann die Meldung aber nur entstehen, wenn eine Datei in Tiefe ≥ 3 existiert. Der Log-Sandbox-Nachweis („Kandidaten → NESTED AREA: a") ist nur mit angelegten Testdateien möglich. Der §5.8-Text (Pkt. 2/3) definiert NESTED AREA ausschließlich als Formel-Output und unterscheidet nicht zwischen dem Hold-Zeitpunkt (Producer hält den Kandidaten an, keine Datei) und dem nachträglichen Formel-Befund (existierende Tiefe-≥-3-Datei wird gemeldet). Die gefrorene Matrix ist nur per menschlicher Renegotiation änderbar. Option 1: Renegotiation der Matrix-Zeile — Zwei-Zustands-Klarstellung (Hold = keine Datei für den Kandidaten; NESTED AREA = Formel-Befund gegen bestehende Tiefe-≥-3-Dateien; Sandbox-Nachweis = Formel-Detektion auf synthetischem Baum). Option 2: Matrix bleibt frozen; Klarstellung nur in den nicht-gefrorenen Sektionen (§5.8 Pkt. 2/3 + Verification) — die Matrix-Zeile bleibt als Änderungskandidat für die nächste Renegotiationsrunde notiert (Story-2.4-Präzedenz für frozen-Defizite). — Aufgelöst (Nutzer, 2026-08-18, Option 1, menschlich-autorisierte Renegotiation): Matrix-Zeile auf die Zwei-Zustands-Klarstellung umgestellt (Hold-Zeitpunkt = keine Datei für den Kandidaten; NESTED AREA = Formel-Befund gegen bestehende Tiefe-≥-3-Dateien; Sandbox-Nachweis = Detektion auf synthetischem Baum). Keine gefrorene Erwartung geändert (keine Datei / kein Index-Link / Meldung / „teilweise erfolgreich" bleiben bit-identisch erhalten) — die bereits gelebte Nachweis-Semantik wird nur explizit.

Patch

  • [Review][Patch] §5.8-Instruktions-Hold hat keinen definierten Trigger-Punkt im Run-Flow — VG #5: §5.8 Pkt. 3 sagt, der Hold „hält Kandidaten an" (Erstellungskandidat oder Discovery-Ziel), aber die fixe Ablaufstruktur (§0: Input → Interpretieren → Reconcile → Synthetisieren → Mutieren → Validieren) enthält keinen Schritt, an dem er auslöst; §5.7-Routing kann Tiefe ≥ 3 strukturell nie erzeugen. Im Ist-Text ist der Hold faktisch nur der nachträgliche Baum-Zustands-Check der Selbsttest-Formel. Fix: Trigger auf den Mutieren-Schritt verankern (§5/§5.8 Pkt. 3): vor Anlage eines Ziel-Pfads in Tiefe ≥ 3 unter der Bundleroot feuert der Hold (keine Datei, kein Index-Link, Meldung NESTED AREA: <a>, Run „teilweise erfolgreich"); die Selbsttest-Formel bleibt der nachträgliche Baum-Check. [schema/compiler.md:230]
  • [Review][Patch] Sprint-Status-Pfad im Log unvollständig — BH #2 + EC #9 + VG #2 + AA #1: der 2.5-Log-Eintrag dokumentiert backlog → in-progress („dieser Statuswechsel findet mit diesem Eintrag statt"), der Diff setzt den Key jedoch direkt backlog → review; der Review-Handoff wird nirgends als eigener Statusschritt protokolliert (Story-2.4-Präzedenz im selben File führt das Handoff explizit nach; Workflow-Kommentar sprint-status.yaml Z. 29). Fix: Log-Eintrag um die Handoff-Nachführung ergänzen (Analogie Story-2.4-Eintrag: „Review-Handoff, dieser Eintrag"; die gefrorene → in-progress-Vorgabe beschreibt den Implementierungsstand). [wiki/log.md:4]
  • [Review][Patch] Validator-SUCCESS-Beleg fehlt im Log-Eintrag, den die Spec als Ausführungs-Nachweis benennt — AA #2: Spec-Verification Pkt. 3 verspricht „das Verdikt je Datei wird als Ausführungs-Nachweis im log.md-Eintrag geführt" (7 wiki/-Dateien SUCCESS, Punkte 1/2/6/7/8/9/10/11/12/13/14, EC-1); der 2.5-Log-Eintrag stützt sich implizit auf „unverändert zur Story 2.4" und trägt keine per-Datei-Verdikt-Zeile. Daneben: AC 5 (Z. 67) verlangt „re-executierbarer Validator-Befehl (BH13)" — nach der Loop-2-Korrektur (erfundener CLI-Befehl entfernt; Validator = human-mechanische Text-Instruktion) ist die Wortung nicht mehr erfüllbar und „BH13" ein hängender Verweis. Fix: (a) Log-Eintrag um die per-Datei-Verdikt-Zeile ergänzen; (b) AC 5 (nicht-gefroren) auf „mit dem per-Datei-Verdikt-Nachweis in wiki/log.md belegt" umstellen. [wiki/log.md:4, spec Z. 67]
  • [Review][Patch] Consumer-Suchbeispiel grep -n <term> wiki/ nicht ausführbar — VG #9: nicht-rekursives grep -n auf ein Verzeichnis schlägt fehl (grep: wiki/: Is a directory, Exit 2, verifiziert); nur grep -rn/ripgrep funktioniert. Fix (nicht-gefrorene Seite): §5.8 Pkt. 4 das rekursive Beispiel (grep -rn <term> wiki/ bzw. ripgrep) als primäre Beispielform voranstellen; die frozen-Matrix-Zeile SEARCH_GREP bleibt Änderungskandidat (s. Defer, frozen-Text-Kandidaten). [schema/compiler.md:231]
  • [Review][Patch] „Ash"-Phantomreferenz in der Suggested Review Order — BH #11 + AA #3: Z. 109 „(kein „Ash"-Ghost mehr)" — grep -rn "Ash" liefert im gesamten Repo exakt diese eine Stelle; kein „Ash"-Label/-Datei/-Befund existiert. Unauflösbarer Ghost-Verweis, irreführend in der Review-Navigation. Fix: Satz bereinigen (Phantom-Referenz entfernen). [spec Z. 109]
  • [Review][Patch] Phantom-Labels ohne Referenz: „S1S5" im Log + „(BH1/EC1)" im normativen Instruktionstext — BH #13 + VG #6: der 2.5-Log-Eintrag beansprucht „Negativ-Kontrollen (S1S5) auf dem Sandbox-Baum bestätigt" — S1S5 sind nirgends definiert (I/O-Matrix-Szenarien tragen andere Namen; nur 2 davon sind negativ); §5.8 Pkt. 2 (B) (Z. 223) zitiert die Review-Layer-Befund-IDs „(BH1/EC1)" in den normativen Instruktionstext, der als einziger Instruktions-Ort (D-3) nirgendwo auf eine Review-Runde verweisen sollte. Fix: (a) Log-Eintrag: Szenario-Namen der I/O-Matrix verwenden (AREA_UNREACHABLE, NESTED_AREA_KANDIDAT); (b) (BH1/EC1)-Zitat aus §5.8 Pkt. 2 (B) entfernen. [wiki/log.md:4, schema/compiler.md:223]
  • [Review][Patch] Veraltete Zeilen-Zitate auf die drei Link-Pin-Defer-Einträge — BH #3 + VG #10 + AA #4: Tasks Z. 59 „(L219/L223/L249)" und Code Map Z. 51 „status: bei L224 … L246/L250" treffen nicht die Ist-status:-Zeilen in deferred-work.md (Ist: L220 )-blinde Extraktion, L224 Cross-Page-Anker, L250 Multi-Line; L246 ist der Status der Image-Eintrags, L219/L223/L249 sind evidence:-Zeilen; L246-Hauszuordnung „Deferred from … spec-2-3" zudem ungenau). Der Loop-2-Change-Log (h) behauptet „auf die Ist-Zeilen korrigiert" — korrigiert wurde nur der F-07-Eintrag (L87/L90). Fix: Zeilen-Zitate auf L220/L224/L250 korrigieren; F-07-Verortung Code Map (L87) vs. Tasks (L88) vereinheitlichen. [spec Z. 51, Z. 59]
  • [Review][Patch] Veraltete Referenz „§7 Z. 253" — BH #4: die Discovery-Vorbehalt-Zeile lag in main bei Z. 253, nach dem 32-zeiligen §5.8-Einschub steht sie bei Z. 285; spec (Code Map Z. 49, Manual-Checks Z. 91), wiki/log.md-Eintrag und Revisionslog 2.3 (compiler.md Z. 317) zitieren „§7 Z. 253" in Präsens-Kontexten, wo der Leser die Ist-Zeile erwartet. Fix: in Präsens-Kontexten die Ist-Zeile ergänzen (Z. 285) oder auf Sektions-Referenz ohne Zeilennummer umstellen. [spec Z. 49/91, wiki/log.md:4, schema/compiler.md:317]
  • [Review][Patch] Discovery-Demo-Verlinkung terminologisch widersprüchlich — VG #11 + BH #7: §5.8 Pkt. 5 (Z. 232) nennt den zusätzlichen Demo-Link „Index-Link … aus einem bestehenden Area-Concept heraus" — ein Link in der Concept-Body-Datei ist nach §5.6 (Pin gilt für Concept-Bodies und index.md-Dateien als getrennte Orte) ein Body-Link, kein Index-Link; die frozen-Matrix-Zeile formuliert die Richtung zusätzlich anders („in das Area-Concept verlinkt"). Fix (nicht-gefrorene Seite): §5.8 Pkt. 5 eindeutig als Body-Link benennen ([<text>](../<concept>.md) aus wiki/wissensarchitektur/source-material.md, file-relative ../-Form §5.7 Pkt. 4); frozen-Matrix-Zeile bleibt Änderungskandidat (s. Defer). [schema/compiler.md:232]
  • [Review][Patch] Inkonsistente Tiefen-Terminologie „zwei Ebenen" vs. „Tiefe ≥ 3" — BH #12: Hold-Name, I/O-Matrix und AC mischen „zwei Ebenen" (Verzeichnisstufen) und „Tiefe ≥ 3" (find -mindepth 3 = Segment-Ebenen unter der Bundleroot inkl. Datei); aus Prosa allein ist nicht ableitbar, welche Schwelle verbindlich ist. Fix: §5.8 Pkt. 3 um eine definierende Zeile (Tiefe = Segment-Anzahl unter der Bundleroot; wiki/<a>/<b>/… = Tiefe ≥ 3 = zwei Verzeichnisstufen plus Datei; Meldung benennt die erste Ebene <a>). [schema/compiler.md:230]
  • [Review][Patch] Falscher Norm-Anker in §5.8 Pkt. 1 — BH #9: Z. 208 „verlinkt die Root-Concepts (direkt, §5.7 Pkt. 5)" — §5.7 Pkt. 5 (Z. 199) trägt nur die Area-Pflichten; die Root-Concept-Verlinkungspflicht ist §5.3 Pkt. 3 (Z. 62), den derselbe Absatz einen Satz später korrekt nennt (Z. 212). Fix: Anker auf §5.3 Pkt. 3 korrigieren. [schema/compiler.md:208]
  • [Review][Patch] Inkongruente Outcome-Klassifizierung in §5.8 Pkt. 2 — VG #13: die Einleitung (Z. 213) sagt „Run-FAIL-artig gemäß §5.6-Pkt.-4-analoger NFR-4-Regel", das Bullet (Z. 227) „Run-FAIL gemäß §5.6 Pkt. 4-analoger NFR-4-Regel" — dieselbe Outcome-Kopplung wird einmal abgemildert, einmal direkt; „-artig … -analog" ist doppelt abgeschwächt. Fix: beide Stellen auf die uneingeschränkte Wortung vereinheitlichen („Run-FAIL gemäß §5.6 Pkt. 4-analoger NFR-4-Regel" — Loop-1-Pkt.-c-Verbindlichkeit). [schema/compiler.md:213/227]
  • [Review][Patch] Prosa-Formel-Textabweichung in §5.8 Pkt. 2 (B) — BH #10: Z. 223 zitiert find wiki -mindepth 3 -name "*.md" -type f, die gepinnte Formel (Z. 216) lautet find wiki -mindepth 3 -type f -name "*.md" (Semantik identisch, Wortlaut divergiert von der als verbindlich deklarierten byte-identischen Formel). Fix: Prosa-Zitat an die gepinnte Formel angleichen. [schema/compiler.md:223]
  • [Review][Patch] Suggested-Review-Order-Self-Link zeigt auf eine Leerzeile — VG #12: spec-2-5-…:83 (Z. 115) verweist auf die leere Zeile zwischen „Commands" (Z. 82) und Verification-Punkt 1 (Z. 8486); Ankernummer um eine Zeile verschoben. Fix: Anker auf Z. 84 korrigieren. [spec Z. 115]
  • [Review][Patch] Englisch-Fremdwort im deutschen Log-Text — BH #15: 2.5-Log-Eintrag mischt „Self-Check-Lauf A" in den konsequent deutschen Text. Fix: „Selbsttest-Lauf A" (bzw. „Lauf (A)"). [wiki/log.md:4]
  • [Review][Patch] Punkt-11-Delegation benennt die bekannte offene Validator-Lücke nicht — VG #1: §5.8 Pkt. 2 (Z. 213/229), die Spec (AC 2, Code Map) und der Log-Eintrag stützen die Nicht-Duplizierungs-These und den „Validator läuft SUCCESS"-Nachweis auf dem Validator-Punkt-11-Check, ohne den offenen Defer-Finding (deferred-work.md Z. 284287: ein wörtlicher, mechanischer Punkt-11-Check meldete Concept nicht verlinkt=wissensarchitektur/source-material; Behebung = Rev-9-Aktionsitem, open) zu nennen — die SUCCESS-Behauptung ist damit nicht unabhängig überprüfbar. Fix: §5.8 Pkt. 2 (bzw. Pkt. 2-Bullet) um einen Zeigerverweis auf die bekannte Rev-9-Lücke (deferred-work.md) ergänzen; die Lücke selbst bleibt beim Rev-9-Aktionsitem (kein neuer Defer). [schema/compiler.md:213]

Defer

  • [Review][Defer] Spec-Frontmatter status: 'done' bei offenem Review-Zyklus [spec Z. 5] — deferred, Story-2.4-Präzedenz (deferred-work.md Z. 269272): done erst nach Review-Freigabe; mit dem Abschluss dieses Review-Loops synchron (s. Step 6), kein separates Patch.
  • [Review][Defer] Frozen-Text-Wortfehl- und Konsistenz-Kandidaten (nur per menschlicher Renegotiation änderbar) [spec Z. 18/42/43] — deferred, Änderungskandidaten für die nächste Renegotiationsrunde (Story-2.4-Präzedenz): (a) Intent Z. 18 „Revisionslog (3.x)" — implementiert ist 2.3 (Reihenfolge 2.0/2.1/2.2/2.3); (b) I/O-Matrix DISCOVERY_DEMO_ROOT_AREA_LINK Z. 42: „zusätzlich überdacht in das Area-Concept" — Wortfehler + Verlinkungsrichtung unauflösbar (nicht-gefrorene Seite s. Patch „Index-Link-Oxymoron"); (c) I/O-Matrix SEARCH_GREP Z. 43: grep -n <term> wiki/ nicht ausführbar (nicht-gefrorene Seite s. Patch „Consumer-Suchbeispiel"); (d) Intent Z. 18 „Kein Interface-/Backend-/Datenbank-Änderung" (Grammatik: „Keine … Änderungen").