"""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"
