Pipeline
Vom Aufgaben-PDF zum Audit-Memo in 5 Schritten. Jeder Schritt hat einen Status, zeigt seine Daten, und führt zum nächsten. Diese Reihenfolge ist fest — sie spiegelt die Datenfluss-Architektur, nicht eine UI-Geste.
Ingestion & Pärchen-DB
Pärchen liegen als YAML in data/training-pairs/. Pro Pärchen: Quelle (Hochschule/Verlag/Bauakte), erwartete Aufgabe-Pages, zurückgehaltene Lösungs-Pages, Lizenz-Status, erwartete Ontologie-Konzepte.
pair_001_mammitzsch_goerges-baupair_002_geburtig_scharoun-theaterdata/training-pairs/_candidates_2026-05-05.mddata/training-pairs/README.mdKonzept-Generator
Claude Sonnet 4.6 mit Master-Prompt + 7-Slider-RunConfig. Streaming bis 64K Output-Tokens. Output landet als Markdown in .scratch/agent_runs/pair_*_run_<ts>_<variant>.md (lokal, gitignored).
default · A_konservativ · B_baseline · C_anlagentechnik · D_denkmal_priorisiert · E_adversarial · F_consulting_vs_auditdata/run-configs/variants.json.scratch/run_pair_001_eval.pypython .scratch/run_pair_001_eval.py --variant F_consulting_vs_audit
pair_001_run_20260505T164533Zdefault26.922 chars · 16 citpair_001_run_20260505T174319Z_F_consulting_vs_auditF_consulting_vs_audit34.783 chars · 25 citPrüfSV-Schatten-Dialog
Round 1 Einwand-Katalog (10-15 × E-XX) → Round 2 Antworten (✅/🛡/⚖) → Round 3 Re-Bewertung (✅/🟡/❌) → Round 4 Replik → Round 5 Final-Verdict + Auflagen. Beide Personas mit gegensätzlichen Mindsets (erleichterungs-orientiert vs risiko-orientiert), beide mit Pflicht-Unsicherheits-Kategorisierung (U-DATA / U-NORM / U-AUTH / U-LIMIT / U-EVID).
.scratch/run_pair_001_dialog.pypython .scratch/run_pair_001_dialog.py --konzept .scratch/agent_runs/<konzept-md>
pair_001_run_20260505T164533ZKONDITIONALpair_001_run_20260505T174319Z_F_consulting_vs_auditKONDITIONALTrace-Builder
Parser zerlegt die Markdown-Outputs in: 9 Sections mit per-Topic-Konfidenz- Score (stark/plausibel/schwach/spekulativ aus Hedge-Density + Annahmen- Count + U-Flag-Count + Citation-Count), 11-Konzept-Coverage-Matrix gegen das Pärchen-YAML, 15 Dialog-Threads mit Final-Status. Dialog wird über Filename-Pattern *_for_<konzept-id> automatisch gematcht (kein „latest by mtime"-Mismatch mehr).
scripts/build_run_trace.pydata/run-traces/<run-id>_trace.jsondata/ontology/synonyms.jsonpython scripts/build_run_trace.py \ --eval-run .scratch/agent_runs/<konzept-md> \ --dialog .scratch/agent_runs/<dialog-md>
Audit-Trail-Viewer
Intake · Analyze · Generation per Topic (Konfidenz-Badge je Section) · Coverage Matrix (Ontologie × Mention-Count) · Dialog (alle 4 Tausch-Stufen pro Einwand aufklappbar) · Final-Verdict (Auflagen + Restrisiken kategorisiert). Plus Slider-Panel zum Re-Run mit anderen Settings (LM-Studio-Style, Variant-Preset-Dropdown + Custom-Mode).
Engine-Internals — Schema v0.3.0 Validation-Gates
Innerhalb der Storage-Schicht (Cosmos → SQL Promotion) gilt eine eigene State-Machine. Kein Agent-Output landet ohne Judge-Bewertung in SQL. Vier hard-enforced Gate-Asserts. Live verifiziert gegen sql-fire-lab-de am 2026-05-04 (Gate 6 FINAL).
pending ─┬─► judged_pass ─┬─► accepted ◄──► rejected
└─► judged_fail ─┘
(Judge sagt nein) (Human-Override moeglich)| Code | Regel | Was | Status |
|---|---|---|---|
NoGo-A | validation_status | Kein direkter Agent-Output in SQL ohne Judge | ✓ enforced |
NoGo-B | evidence_present | Keine OntologyProposal/KnowledgeCard ohne EvidenceItem | ✓ enforced |
NoGo-C | jurisdiction | Keine Norm-Aussage ohne explizite Jurisdiktion | ✓ enforced |
5.3 | citation_resolves | source_id muss in source_registry existieren | ✓ enforced |
Letzter Gate-6-FINAL-Run gegen sql-fire-lab-de/brandschutz_lab: 163 Records erlaubt (117 evidence_items + 46 ontology_proposals), 4 geblockt (PipelineGateError, NoGo-A).