# 06 — Assessment **Zweck:** Eine **auditierbare Begründungsschicht** über die gerankten Ergebnisse. Sie macht aus einer Trefferliste eine prüfbare Aussage: *Welche Norm ist primär, welche hängen daran, wie eindeutig ist das, braucht es einen Menschen?* ## Mechanik `Assess()` (`legal_rag_assess.go`) nimmt die bereits gerankten `results []LegalSearchResult` und baut ein `LegalAssessment`: | Feld | Inhalt | |------|--------| | `PrimaryNorm` | `CitationUnit` bzw. `ArticleLabel` des Top-Treffers | | `PrimaryRegulation` | `RegulationShort` des Top-Treffers | | `ConnectedNorms` | verbundene Normen (`references_out` + `references_in`), gekappt + dedupliziert | | `CrossRegime` | ob mehrere Regulierungen in den Top-N liegen | | `WinnerMargin` | Score-Abstand Top-1 ↔ Top-2 (Proxy für Eindeutigkeit) | | `HumanReviewFlag` | true bei niedriger Eindeutigkeit | | `ScoreReasoning` | kurze deutsche Begründung | ## Konstanten + Warum | Konstante | Wert | Warum | |-----------|------|-------| | `assessConnectedCap` | `12` | Obergrenze der in der Assessment gezeigten verbundenen Normen — verhindert, dass ein stark vernetzter Artikel die Begründung flutet | | `assessCrossRegimeTopN` | `5` | Fenster, über das „Cross-Regime" (mehrere Regulierungen) beurteilt wird | | `assessReviewMargin` | `0.05` | enger Winner-Abstand → Human-Review-Flag (siehe [07](07-confidence.md)) | ## Human-Review-Logik `HumanReviewFlag` wird `true`, wenn **eine** der Bedingungen gilt: - `WinnerMargin < 0.05` — Top-1 und Top-2 liegen zu dicht beieinander (uneindeutig), - `CrossRegime == true` — mehrere Regimes betroffen (z.B. DSGVO + CRA), - der Primär-Treffer ist **nicht** `binding_law` — eine Rechtsaussage ohne bindende Primärquelle. > Das ist die deterministische Eskalations-Schwelle: das System sagt von sich aus „hier sollte ein Mensch drauf schauen", statt scheinbare Sicherheit vorzutäuschen. ## Code - `legal_rag_assess.go` → `Assess()`, `primaryLabel()` ## Adressierte Fehlerklassen - **„uneindeutige Antwort wird als sicher verkauft"** → `WinnerMargin` + `HumanReviewFlag`. - **„Cross-Regime übersehen"** → `CrossRegime` über `assessCrossRegimeTopN`. - **„Rechtsaussage ohne bindende Quelle"** → Flag bei nicht-bindendem Primär-Treffer.