fix(ucca): Cross-Reg 0070 — beide Domaenen im Router-Top-K (Known Defects 0) #47
Reference in New Issue
Block a user
Delete Branch "fix/multi-reg-0070"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Was & Warum
Der einzige offene Retrieval-Härtefall (Known Defects = 1 → 0): eine Query mit ≥2 explizit genannten Regelwerken („Wie greifen CRA und Maschinenverordnung ineinander?") lieferte nur die keyword-dominante Domäne (CRA), MaschVO fiel komplett aus dem Top-8. Drei zusammenwirkende Ursachen — alle behoben:
MASCHVO· gesetzeMVO· ceMACHINERY/MASCHINENVO. Der Catalog hatte nur["MASCHVO","MaschVO"]→ der exakte per-Reg-Filter fand MaschVO nur in der Slice. Jetzt alle Varianten als CodeValues. (CRA/NIS2/DORA/AI ACT/DATA ACT gegen den dev-Korpus auditiert — stimmen überein.)perColl=3→searchMultiRegulationholte 3+3=6, schnitt auf 3 → konnte eine Domäne je Collection verlieren. Multi-Reg-Queries bekommen jetztperColl = routerPerCollectionTopK * len(regs).balanceByRegulation()gruppiert den gemergten Pool per Regelwerk (exakterregulation_code-Match gegen CodeValues) und nimmt round-robin über die genannten Domänen → jede Domäne mit Treffern ist garantiert im Top-K. Generisch über jede genannte Menge; Single-Domain-Pfad unverändert.Validierung
TestBalanceByRegulation(dominante CRA verdrängt MaschVO NICHT mehr; round-robin-Reihenfolge).Retrieve()):top-8 = [CRA MVO CRA MVO CRA MVO CRA MASCHINENVO]= beide Domänen (vorher nur CRA).go build/vet/gofmtgrün.Scope / Sicherheit
Nur
internal/ucca(multi_regulation.go + authority_router.go + Tests), disjunkt iace/Registry/Obligation/backend. Ändert ausschließlich den Multi-Reg-Pfad (≥2 genannte Regelwerke); Single-Domain-Queries laufen byte-identisch. Folgt auf PR #46 (Authority Router).🤖 Generated with Claude Code
Der einzige offene Retrieval-Haertefall: eine Query mit >=2 genannten Regelwerken ("CRA und Maschinenverordnung") lieferte nur die keyword-dominante Domaene (CRA), MaschVO fiel raus. Drei zusammenwirkende Ursachen, alle behoben: 1. CodeValues-Mismatch: MaschVO heisst je Collection anders (Slice MASCHVO · gesetze MVO · ce MACHINERY/MASCHINENVO), der Catalog hatte nur ["MASCHVO","MaschVO"] → Filter fand MaschVO nur in der Slice. Jetzt alle Varianten als CodeValues. 2. Per-Collection-Truncation: der Router gab perColl=3 → searchMultiRegulation holte 3+3=6, schnitt auf 3 → konnte eine Domaene je Collection verlieren. Multi-Reg-Queries bekommen jetzt perColl = 3*len(regs). 3. Router-Score-Merge starvte die nicht-dominante Domaene. Neue balanceByRegulation() gruppiert den gemergten Pool per Regelwerk (exakter regulation_code-Match) und nimmt round-robin ueber die genannten Domaenen → jede Domaene mit Treffern ist im Top-K. Generisch ueber jede genannte Menge; Single-Domain-Pfad unveraendert. Validierung: Go-Unit (balanceByRegulation: dominante CRA verdraengt MaschVO NICHT mehr); 0070-e2e gegen dev (Retrieve() → [CRA MVO CRA MVO CRA MVO CRA MASCHINENVO] = beide Domaenen, vorher nur CRA); CB-100-Stichprobe REGR 0 (Gain-Profil unveraendert). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>