feat: add jurisdiction field to rules, facts and extraction

Rule now carries a required Jurisdiction (land) field, and Facts a
matching Jurisdiction supplied by the caller (like Platform — no
legal jurisdiction can be read off a caption or image, so the model
never guesses it). Evaluate() only lets a rule fire when its
jurisdiction matches the facts' jurisdiction.

This is the structural half of "deutsche Rechtslage zuerst, Struktur
für Österreich und Schweiz vorgesehen": a future AT/CH rule set can be
added as plain new YAML files without touching existing DE rules, but
no AT/CH content is added now — that needs its own legal research
first, same as WK-001/WK-004 needed for Germany.

WK-001 and WK-004 are tagged land: DE, all golden fixtures carry
jurisdiction: DE, and extract.Input passes Jurisdiction through
unchanged into the returned Facts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
noroot
2026-08-27 13:47:08 +02:00
parent da91c3e2c1
commit 15bf277bee
14 changed files with 73 additions and 13 deletions

View File

@@ -2,6 +2,7 @@
"name": "Organischer Post ohne Gegenleistung, keine Kennzeichnung noetig",
"facts": {
"platform": "instagram",
"jurisdiction": "DE",
"consideration": "keine",
"disclosure_present": false,
"disclosure_wording": "",

View File

@@ -2,6 +2,7 @@
"name": "Bezahlter Post, Kennzeichnung vorhanden aber hinter 'mehr anzeigen' versteckt",
"facts": {
"platform": "instagram",
"jurisdiction": "DE",
"consideration": "bezahlt",
"disclosure_present": true,
"disclosure_wording": "Werbung",

View File

@@ -2,6 +2,7 @@
"name": "Bezahlter Post, Kennzeichnung korrekt vor der Kürzung sichtbar",
"facts": {
"platform": "tiktok",
"jurisdiction": "DE",
"consideration": "sachbezug",
"disclosure_present": true,
"disclosure_wording": "Werbung",

View File

@@ -2,6 +2,7 @@
"name": "Bezahlter Post ohne jede Kennzeichnung",
"facts": {
"platform": "instagram",
"jurisdiction": "DE",
"consideration": "bezahlt",
"disclosure_present": false,
"disclosure_wording": "",

View File

@@ -2,6 +2,7 @@
"name": "Gegenleistung unklar - Rueckfrage statt Bewertung",
"facts": {
"platform": "instagram",
"jurisdiction": "DE",
"consideration": "unklar",
"disclosure_present": false,
"disclosure_wording": "",