Mark recall-limited obligations in DSE shadow telemetry
Trennt im Shadow drei Kategorien statt eines pauschalen FAILED: - echte Lücke (failed_by_current_checker) - redundanter Control-FP (kollabiert per OR zu MET) - Prüfer-Reichweitenproblem (recall_limited) obligation_taxonomy.py: decision_method_required=LLM für recipients_disclosed, third_country_transfer_disclosed, safeguards_disclosed, safeguards_accessible (versioniertes Registry-Artefakt bis DB-Tabelle, v1-Spec). Empirisch: TeamViewer 0/22 kw+emb trotz erfüllter Pflicht (cos 0.49-0.57) → CONTENT/LLM-Klasse, kein Schwellen-Fix. compute_obligation_shadow segregiert FAILED/PARTIAL über requires_llm(): teamviewer 5 Findings → 2 echte + 3 recall_limited. 9 neue Unit-Tests (41 gesamt grün). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
"""Obligation-Taxonomie-Registry — versioniertes Artefakt bis zur DB-Owner-Tabelle
|
||||
(Legal Obligation Layer v1, docs-src/development/legal_obligation_layer_v1.md).
|
||||
|
||||
Hält Metadaten auf OBLIGATION-Ebene, die (noch) keine eigene DB-Tabelle haben.
|
||||
|
||||
`decision_method_required`: Obligations, deren Erkennung Keyword/Embedding
|
||||
NACHWEISLICH nicht zuverlässig leistet (kompakte/synonymreiche Offenlegung) und
|
||||
die CONTENT/LLM brauchen. Empirisch belegt am TeamViewer-Recall-Defekt: 0/22
|
||||
recipients+international_transfer Controls trafen, obwohl die Pflicht erfüllt war
|
||||
(„…außerhalb EU/EWR … Standardvertragsklauseln/Schutzmaßnahmen"); Embedding cos
|
||||
0.49–0.57 < 0.62, teils falscher Chunk → kein Schwellen-Fix, sondern LLM-Klasse.
|
||||
|
||||
Wirkung: der Shadow zählt ein FAILED solcher Obligations NICHT als „echte Lücke",
|
||||
sondern als RECALL_LIMITED (Prüfer kann sie mit aktueller Methode nicht verifizieren).
|
||||
"""
|
||||
OBLIGATION_META: dict[str, dict] = {
|
||||
"recipients_disclosed": {"decision_method_required": "LLM"},
|
||||
"third_country_transfer_disclosed": {"decision_method_required": "LLM"},
|
||||
"safeguards_disclosed": {"decision_method_required": "LLM"},
|
||||
"safeguards_accessible": {"decision_method_required": "LLM"},
|
||||
}
|
||||
|
||||
|
||||
def requires_llm(obligation_id: str) -> bool:
|
||||
"""True, wenn diese Obligation CONTENT/LLM braucht (Keyword/Embedding-Recall belegt unzureichend)."""
|
||||
return OBLIGATION_META.get(obligation_id, {}).get("decision_method_required") == "LLM"
|
||||
Reference in New Issue
Block a user