19 KiB
title, type, created, status, review_loop_iteration, baseline_commit, context
| title | type | created | status | review_loop_iteration | baseline_commit | context | |
|---|---|---|---|---|---|---|---|
| Wissen aus mehreren Sources synthetisieren — gemischte claim-granulare Provenienz operationalisieren (Story 3.4) | feature | 2026-08-19 | done | 0 | 9b256fa5ad |
|
Intent
Problem: §5.9 verankert die Update-Formen einzelner Concepts (Story 3.1/3.3), §4 die sources-Liste. Unoperativ bleibt die Synthese-Dimension (FR-7, AD-4, A0-3): wie der Producer mehrere Sources zum selben Thema zu einer gemeinsamen Wissensrepräsentation mit gemischter, claim-granularer Provenienz zusammenführt — statt getrennter Zusammenfassungen (FR-7). Es fehlt eine deterministische Anleitung für (a) die Erkennung einer Synthese-Einheit (≥ 2 belegende raw/-Quellen), (b) die Konsolidierung redundanter Aussagen ohne Provenienz-Verlust (Multi-Beleg, §5.5), und (c) den reflektierten Wissensstand (keine Aneinanderreihung von Source-Zusammenfassungen, FR-7 AC-4). Der §7-Synthese-Vorbehalt (:343) zeigt auf Story 3.4.
Approach: Story 3.4 verankert die Synthese-Mechanik als neue Sektion §5.10 „Synthese aus mehreren Sources (Story 3.4)" (nach §5.9, vor §6, Revision 2.9): deterministische Regeln für Synthese-Einheit, gemeinsame Zielrepräsentation (ein Concept-Pfad, sources-Liste ≥ 2), claim-granulare gemischte Provenienz mit Multi-Beleg-Konsolidierung (§5.5) und Reflektiertheits-Selbsttest (keine per-Source-Zusammenfassungs-Struktur). Zusätzlich eine re-executierbare Sandbox (sandbox-3-4/run-sandbox.sh, Muster Story-3.3): demonstriert einen echten Synthese-Run aus 2+ raw/-Quellen (Neu-Anlage + Update-Pfad) und assertet die Invarianten hart (sources ≥ 2, Multi-Beleg je konsolidierter Aussage, keine Aneinanderreihung, Erhaltungs-Invariante §5.9-Pkt.-5, Zwei-Run-Identität AD-17h). Nickel die Story-3.3-Defer U2/U7-Empfehlung (Form-Wahl-Klassifikationsprobe) im Sandbox auf. Keine Inhalts-Mutation des realen Bundles (AD-3); kein neues raw/-Material; kein Standalone (D-3).
Boundaries & Constraints
Always:
- Instruktions-Story (D-3): Verankerung ausschließlich in
schema/compiler.md§5.10 als deterministischer Text. Kein executable, kein Standalone, keine neue §7-Invaliditätsklasse, kein Change anschema/wiki-compiler.md/schema/validator.md/raw/(AD-3). - Synthese ist Querschnitt-Dimension, keine fünfte Update-Form: Die §5.9-Abgrenzungs-Reihenfolge
Korrigieren → Präzisieren → Erweitern → No-Op(Story 3.3) bleibt die sole Form-Wahl; Synthese erweitert die Ausführung um gemischte Provenienz + Konsolidierung (bei Update auf ein bestehendes Concept) bzw. die Neu-Anlage mit Multi-Source-sources(bei neuer Einheit). - Gemischte claim-granulare Provenienz (AD-4a/4b, A0-3): jede belegte Aussage des Synthese-Concepts bleibt auf
raw/zurückführbar; Konsequenz von AD-4c — kein bestehendes Concept ist alleinige Provenienz eines anderen; Übernahmen aus bestehenden Concepts tragen den §5.5-Kontext-Marker („übernommen aus<Concept>auf Basis von<source>, nicht eigenständig belegt"). - Konsolidierung ohne Provenienz-Verlust (FR-7 AC-3): redundante Informationen werden zu einer Aussage konsolidiert, die alle betroffenen Inline-Belege trägt (Multi-Beleg, §5.5-Serialisierung) — keine stille Beleg-Tilgung (AD-4).
- Reflektierter Wissensstand (FR-7 AC-4): keine per-Source-Zusammenfassungs-Blöcke („Quelle A: … / Quelle B: …"-Struktur); der Body trägt integrierte, je Aussage provenance-tags versehene Aussagen — textuell per Selbsttest prüfbar.
- Determinismus (AD-17h/A0-19): Ziel-Pfad (via §3.2/§5.7),
sources-Liste (lexikografisch nachresource, LC_ALL=C) und Konsolidierung folgen deterministisch aus der committeten Evidenz; gleicher Git-State + gleiche Eingabemenge → identischer Synthese-Vorgang.generated.at-Wanduhr-Gap bleibt offene A0-20-Konvention (Home Story 3.8). - Struktur-Erhaltung (FR-6/AC-2, Story 3.3): die §5.9-Pkt.-2-Struktur-Erhaltungsregeln gelten je berührtem Pfad unverändert (Frontmatter-Subset, keine stille Löschung, §5.6-Pin unverändert, Inline-Verweise gültig soweit Beleg Body-Bestand).
- Erhaltungs-Invariante (AD-5/FT-6): der §5.9-Pkt.-5-Diff-Selbsttest gilt für Synthese-Runs unverändert (Pfad-Menge ⊆ Kandidatenliste ∪ Neu-Anlage ∪
log.md∪ Index; keine neue Datei außer echten Ziel-Pfaden). sprint-status.yaml: Key3-4-wissen-aus-mehreren-sources-synthetisieren→ in-progress (bei Implementierung).
Ask First: Inhalts-Mutation des realen Bundles (Demo per Sandbox) · AD-7d-Renames · §5.6-Linkform-Änderung · Validator-/Vertrags-/raw/-Change · Leasing-Ausweitung (3.5/3.6-Scope) · Synthese als fünfte Update-Form (Abgrenzung ändern) · per-Source-Concepts als zulässige Anlageform.
Never: Änderungen an schema/wiki-compiler.md/schema/validator.md/raw/ (AD-3) · neue §7-Invaliditätsklasse · Standalone (D-3) · getrennte Zusammenfassungs-Concepts je Quelle (FR-7) · Duplikat-Anlage eines bestehenden Pfads · „Regenerate Everything" (AD-5) · stille Provenienz-Tilgung oder stille Konsolidierung widersprechender Aussagen ohne Ersetzungsbeleg (AD-16) · Embeddings/Vector im Compiler-Kern (AD-13).
I/O & Edge-Case Matrix
| Scenario | Input / State | Expected Output / Behavior | Error Handling |
|---|---|---|---|
| HAPPY_SYNTHESE_NEUANLAGE | Zwei committete raw/-Quellen zum selben Thema (neue Einheit, kein Ziel-Pfad belegt) |
Ein neues Concept (gemeinsame Repräsentation): sources-Liste ≥ 2 (je Quelle ein Eintrag, lexikografisch nach resource), claim-granulare gemischte Inline-Provenienz je Aussage, §5.5-Form; kein per-Source-Summary |
NO_MATCH → §5.9/§3.2-Pfad (keine Synthese-Dimension) |
| HAPPY_SYNTHESE_KONSOLIDIERUNG | Redundante Aussage in beiden Quellen | Eine konsolidierte Aussage mit Multi-Beleg auf alle betroffenen Quellen (§5.5-Semikolon-Form) — keine Provenienz-Dropped | Quellen-EC-1 fehlt → Run-FAIL (Validator), keine Mutation |
| HAPPY_SYNTHESE_UPDATE | Synthese-Einheit trifft bestehenden Concept-Pfad | §5.9-Formwahl normal (Erweitern/Präzisieren/Korrigieren), sources-Zuwachs um die zweite Quelle, gemischte Belege; Struktur-Erhaltungsregeln gelten |
bestehende belegte Aussage als Anker fehlt → Prüfung ob Erweitern |
| NO_OP_SYNTHESE | Evidenz bereits vollständig im Body | No-Op (Nicht-Form): byte-identität, kein Eintrag, kein at-Bump |
im Zweifel greift eine Form (engere Auslegung No-Op) |
| ANEINANDERREIHUNG_NEGATIV | Struktur „Quelle A: … / Quelle B: …" | Instruktions-Selbsttest-FAIL (Reflektiertheits-Kriterium, NFR-7): textuell benannter Befund, vor Run-Abschluss behoben | kein stiller Vorbeilass (NFR-4) |
| STRUKTUR_ERHALT | Synthese-Update greift in Body mit belegten Aussagen | Struktur unverändert (Subset, Verweise, Linkform); kein unbefugter Key | Verstoß → textuell benannt + Rollback (§5.9 Pkt. 5) |
| SYNTHESE_OVERLAP_FORMCROSS | Eine Einheit trägt zugleich neue + schärfende Aussage | §5.9-Abgrenzungs-Reihenfolge wählt die erste zutreffende Form; Textgenauigkeits-Rahmen der übrigen gelten je Teilbestand | — (AD-17h: deterministisch) |
Code Map
schema/compiler.md— primär mutiert (D-3):- Neue Sektion §5.10 (nach §5.9, vor §6): Synthese-Stimulus (≥ 2 belegende Quellen per §2-Interpretation), ein-Ziel-Repräsentation (§5.7-Routing),
sources-Liste (≥ 2, lexikografisch nachresource, LC_ALL=C — deterministisch, AD-17h), gemischte claim-granulare Provenienz (je Aussage Inline-raw/-Verweis §5.5; konsolidierte Aussagen mit Multi-Beleg), Reflektiertheits-Selbsttest (keine per-Source-Zusammenfassungs-Struktur; Muster-Termane wie „nicht eigenständig belegt"), Übernahme aus bestehenden Concepts mit §5.5-Kontext-Marker (AD-4c: nie alleinige Provenienz), §5.6-Pin unverändert,log.md-Eintragspflicht („Story 3.1-Update" bei Update; Anlage-Eintrag bei neuem Synthese-Concept), Erhaltungs-Invariante (Diff-Probe §5.9 Pkt. 5 gilt), Determinismus-Vertrag. - §7 (
:343): Synthese-Vorbehalt auflösen („→ §5.10 verankert (Story 3.4)"). - §8 Revisionslog (
:382): Revision 2.9 mit Abschlussklausel.
- Neue Sektion §5.10 (nach §5.9, vor §6): Synthese-Stimulus (≥ 2 belegende Quellen per §2-Interpretation), ein-Ziel-Repräsentation (§5.7-Routing),
_bmad-output/implementation-artifacts/sandbox-3-4/run-sandbox.sh— neu (re-executierbar, Muster Story-3.3-Sandbox): Mini-Bundle mit 2raw/-Quellen zum selben Thema; Szenarien S1–S6 (Neu-Anlage mit sources ≥ 2 + gemischten Belegen · Konsolidierung mit Multi-Beleg · Negativ-Kontrolle Aneinanderreihung · Synthese-Update auf bestehendem Pfad · Struktur-/Frontmatter-Invariante · Zwei-Run-Identität AD-17h) + N1 (NO_OP-Synthese: Evidenz bereits im Body → volle Byte-Identität, kein at-Bump, kein sources-Zusatz, kein log-Eintrag) + Form-Wahl-Klassifikationsprobe (Story-3.3-Defer U2/U7: überprüft die §5.9-Abgrenzungs-Reihenfolge an einer gemischten Einheit). Harte Pass/Fail-Assertionen (exit 1), Erhaltungs-Invariante,??-Sicht,assert_frontmatter(Muster Story-3.3).wiki/log.md— append (append-only, Vertrag §5): Story-3.4-Eintrag (Verankerung, Sandbox-Nachweis, Statuswechsel, Validator-Verdikt); bestehende Bullets unverändert._bmad-output/implementation-artifacts/sprint-status.yaml— mutiert: Key3-4-…(:57) →in-progress(→donebei Story-Abschluss).schema/validator.md,schema/wiki-compiler.md,raw/…— read-only (AD-3). Keine Concept-Inhalts-Mutation (Demonstration per Sandbox).
Tasks & Acceptance
Execution:
schema/compiler.md— §5.10 Synthese-Sektion einfügen (Stimulus, ein-Ziel-Repräsentation,sources-Liste, gemischte claim-granulare Provenienz + Multi-Beleg-Konsolidierung, Reflektiertheits-Selbsttest, AD-4c-Marker, §5.6-Pin, log.md, Erhaltungs-Invariante, Determinismus) · §7-Vorbehalt auflösen · §8 Revision 2.9; ohne Change anschema/wiki-compiler.md/schema/validator.md/raw/.sandbox-3-4/run-sandbox.sh— Synthese-Run-Demonstrator (Neu-Anlage + Update, Konsolidierung, Negativ-Kontrolle Aneinanderreihung, NO_OP-Synthese, Form-Wahl-Probe, Struktur-Invariante, Zwei-Run-Identität); harte Pass/Fail-Assertionen; Exit 0.wiki/log.md— Story-3.4-Eintrag (append-only): Verankerung, Sandbox-Nachweis, Statuswechsel, per-Datei-Validator-Verdikt.sprint-status.yaml— Key3-4-…→ in-progress.
Acceptance Criteria:
- Given mehrere Sources zum selben Thema, when der Run synthetisiert, then entsteht eine gemeinsame Wissensrepräsentation statt mehrerer getrennter Zusammenfassungen (AC-1; FR-7) — §5.10-Stimulus + ein-Ziel-Regel, Sandbox belegt (eine Datei, keine per-Source-Summary).
- Given eine Synthese aus mehreren Sources, when das Ergebnis erzeugt wird, then übernimmt es gemischte, claim-granulare Provenienz der beteiligten Sources (AC-2; AD-4, A0-3) — Inline-Verweise §5.5 je Aussage, Konsolidierung mit Multi-Beleg.
- Given redundante Informationen aus mehreren Sources, when sie synthetisiert werden, then werden sie konsolidiert, ohne Provenienz zu verlieren (AC-3; FR-7) — §5.10-Konsolidierungsregel, Sandbox-S2.
- Given das resultierende Concept, when es geprüft wird, then reflektiert es den erkannten Wissensstand — keine bloße Aneinanderreihung (AC-4; FR-7) — Reflektiertheits-Selbsttest, Negativ-Kontrolle S3.
- Given die Instruktion, when geprüft, then bleiben
schema/validator.md/schema/wiki-compiler.md/raw/unverändert (AD-3), keine neue §7-Klasse, kein Standalone (D-3), keine fünfte Update-Form (Abgrenzungs-Reihenfolge §5.9 unverändert), kein Leasing-Scope — Validator auf Ist-Bundle SUCCESS (7/7 unverändert).
Spec Change Log
Review-Loop-1 (2026-08-19, bmad-code-review, 3 Subagenten — blind-hunter / edge-case-hunter / verification-gap; kein Loopback, review_loop_iteration bleibt 0): Klassifikation — kein intent_gap, kein bad_spec (frozen Intent + Approach eingehalten); patch (auto-fixiert, siehe unten) + defer (4 Einträge → deferred-work.md append-only: AD-16/AD-4c-reale-Anwendung-Home-Epic-4, Orphan-Kontrolle-Home-3.8, Umlaut/Em-Dash-Normalisierung-Sandbox-Home-3.8, Frozen-„Nickel"-Typo-Re-Negotiation) + reject (noise: diff-Artifakt-Basename, SHA-Reproduzierbarkeit via $BASE-ID). Patches (alle verifiziert): (1) schema/compiler.md §5.10 — Reflektiertheits-Selbsttest-Muster auf Zeilenanfangs-Label erweitert (^(Quelle|Source) [A-Z][A-Za-z0-9_ -]*: — mehrbuchstabige/nummerierte Quell-Labels); Body-Reihenfolge deterministisch (lexikografisch über Beleg-Anker, LC_ALL=C) + Konsolidierungs-Kriterium (Befund-Äquivalenz über dieselbe erkannte Wissenseinheit) explizit; Duplikat-Fall + Orphan-Kontrolle in Pkt. 8; Stil-/Genus-Korrekturen (sole→einzige, der Update→das Update, sources-Pluspunkt→sources-Zuwachs); Sandbox-N2/N3-Nachweise in Pkt. 3/4. (2) Sandbox run-sandbox.sh (jetzt 10 Szenarien S1–S6 + N1–N3 + FW, Exit 0): git add -A-wiki-Staging aus S1/S2/S3/S4/S5/FW entfernt → die Pkt.-8-??-Sicht wird lebendig geprüft; S5-Pkt.-8-??-Negativkontrolle neu (ungetrackte Nicht-Ziel-Datei ghost.md → Duplikat/Ghost-Diff-HARD-FAIL, nicht vacuous — Story-3.3-U9-Muster); N1-Stimulus-Kommentar korrigiert (alpha-v1 = Baseline-Evidenzbasis, nicht Zuwachs); N2 Disagreement (AD-16-Default, beide Behauptungen + je Beleg, kein Falsch-Multi-Beleg, Disagreement:-log-Eintrag) + N3 AD-4c-Übernahme-Marker (Kontext-Marker-Muster, eigenständig belegte Aussagen ohne Marker, übernommene Quelle nicht in sources) als neue Szenarien (schließen die Verification-Gap-Kernbefunde „AD-16-Pfad untested"/„AD-4c-Marker untested"); S1/S2-log.md-Assertionen um die vollständige Multi-Source-Liste erweitert. (3) wiki/log.md: Audit/Sandbox-Zählung auf 10 korrigiert, Scenario-Typo, „zum Audit-Zeitpunkt"-Qualifikation. (4) sprint-status.yaml last_updated-Präzision auf 08-19-2026 16:40 fortgeschrieben (HEAD-Format HH:MM, siehe Story-3.3-Präzedenzleistung 13:21). (5) deferred-work.md — 4 Spec-3.4-Einträge append-only. Nach-Review-Abschluss (dieser Flip): Spec status: 'in-review' → 'done'; sprint-status.yaml Key 3-4-… in-progress → done.
Design Notes
Warum §5.10, nicht §5.9-erweiterung: Synthese ist die Erzeugungs-/Zusammenführungs-Dimension (mehrere Quellen → eine Repräsentation) — keine der in §5.9 definierten Einzel-Update-Formen. §5.9 bleibt der Update-Pfad für einzelne bestehende Concepts; §5.10 erweitert die Ausführung um gemischte Provenienz + Konsolidierung (Querschnitt) und die Neu-Anlage mit Multi-Source-sources. Das spiegelt den §7-Vorbehalt (:343) als eigenständiges Thema.
Multi-Beleg-Konsolidierung (das Kernstück): Eine Aussage, die aus mehreren Quellen redundanz-belegt ist, wird zu EINER Aussage konsolidiert, die §5.5-Multi-Beleg trägt ((raw/a.md#X; raw/b.md#Y) — Semikolon-Form, voller Pfad je Beleg). Keine Beleg-Tilgung (AD-4). Widersprüche (diskrepanter Inhalt) bleiben gemäß AD-16 erhalten — kein stilles Zusammenführen zu scheinbar eindeutigen Aussagen (NFR-7, FR-8; Epic-4-Interface: Disagreement in log.md).
Reflektiertheits-Selbsttest (FR-7 AC-4): textuell prüfbar — der Body enthält keine per-Source-Zusammenfassungs-Sektionen (keine Struktur „Quelle A: … / Quelle B: …"); jede Aussage trägt ihren Provenienz-Tag. Der Selbsttest grep-basiert: keine Zeile, die nur einen Quell-Label abschnittsstrukturiert.
sources-Reihenfolge: deterministisch lexikografisch nach resource (LC_ALL=C) — unabhängig von Verarbeitungs- oder Datei-Reihenfolge (AD-17h; konsistent zur §3.2-Pkt.-3b-Lexikografie-Ordnung und zur §5.9-Tie-Break-Logik).
Verification
Commands (re-executierbar, ab Workspace-Root):
bash _bmad-output/implementation-artifacts/sandbox-3-4/run-sandbox.sh— expected: alle Szenarien S1–S6 + N1 + Form-Wahl-Probe mit harten Pass/Fail-Assertionen, Erhaltungs-Invariante erzwungen, Exit 0.grep -n "Synthese aus mehreren Sources\|Revision 2.9" schema/compiler.md— liefert die Synthese-Sektion + Revisionslog-Eintrag.- Read-only (AD-3):
git status --porcelainzeigt keinen Change anschema/validator.md/schema/wiki-compiler.md/raw/. - Validator-Lauf: alle
wiki/-Dateien SUCCESS (unverändert, keine Inhalts-Mutation).
Manual checks:
- §5.10 trägt Stimulus, ein-Ziel-Regel,
sources-Liste, gemischte Provenienz, Multi-Beleg-Konsolidierung, Reflektiertheits-Kriterium, AD-4c-Marker, §5.6-Pin,log.md-Regel, Erhaltungs-Invariante, Determinismus; §7-Vorbehalt:343auf §5.10 aufgelöst; §8-Rev-2.9 mit Abschlussklausel; keinvalidator.md/wiki-compiler.md/raw/-Diff; kein neuer Standalone (D-3) / keine neue §7-Klasse; §5.9-Abgrenzungs-Reihenfolge unverändert (Synthese = Querschnitt, keine fünfte Form);wiki/log.md-Eintrag datiert mit Story-3.4-Semantik + Sandbox-Nachweis + Statuswechsel + Verdikt;sprint-status.yamlkonsistent.
Suggested Review Order
(Befüllt nach Review-Abschluss durch step-04. Review-Loop 1 abgeschlossen: kein Loopback, 4 Defers; Status → done.)
Synthese-Mechanik (compiler.md §5.10)
-
Verankerung der Synthese-Dimension — Stimulus, ein-Ziel-Regel, gemischte Provenienz, Reflektiertheit, Erhaltungs-Invariante.
compiler.md:290 -
Pkt. 8 — Determinismus-Vertrag:
??-Duplikat-Kontrolle, Orphan-Fall,generated.at-Gap (Home 3.8).compiler.md:301
§7/§8-Auflösung
-
Pkt. 3/4 — AD-16-Disagreement (N2) + AD-4c-Übernahme-Marker (N3) als Sandbox-Nachweise verankert.
compiler.md:296 -
Revisionslog 2.9 — Abschlussklausel (AD-3, keine neue §7-Klasse, keine fünfte Update-Form) + Review-Loop-1-Notiz.
compiler.md:396
Sandbox-Nachweis (re-executierbar)
-
10 Szenarien S1–S6 + N1–N3 + FW, harte Erhaltungs-Invariante je Probe; Export & Pass-Statistik.
run-sandbox.sh:226 -
N2 — AD-16-Disagreement (beide Behauptungen + Disagreement-Eintrag); N3 — AD-4c-Marker.
run-sandbox.sh:562 -
FW — Form-Wahl-Klassifikationsprobe (Story-3.3-Defer U2/U7) + Zwei-Run-Identität (S6).
run-sandbox.sh:740
Provenienz & Status
-
Story-Abschluss + Review-Loop-1-Audit —
done-Flip, 10/10 PASS, 4 Defers.log.md:4 -
Implementierungs-Nachweis — Revision 2.9-Eintrag, Validator-Verdikt 7/7 SUCCESS.
log.md:6 -
Statuskette
in-progress → done+last_updated-Präzision.sprint-status.yaml:57