themis / phase1 /scripts /33_test_grounding.py
vg15o2's picture
Moonley backend (HF Space build)
1d9bd9b
Raw
History Blame Contribute Delete
2.18 kB
"""CP-A regression test: the render-from-ledger gate drops hallucinated / un-loaded / fabricated claims.
Imports serve (loads the index/models) but only exercises verify_claims (pure)."""
import serve
cases = [
{"case_name": "A v B", "neutral_citation": "2020 INSC 1",
"chunk": "The dying declaration can be the sole basis of conviction if it inspires full confidence of the court."},
{"case_name": "C v D", "neutral_citation": "2020 INSC 2",
"chunk": "Corroboration of a dying declaration is only a rule of prudence."},
]
arr = [
{"claim": "A dying declaration can be the sole basis of conviction.", "n": 1,
"quote": "sole basis of conviction if it inspires full confidence"}, # VALID β€” verbatim substring of case 1
{"claim": "Corroboration is mandatory in every case.", "n": 2,
"quote": "corroboration is mandatory and always required"}, # HALLUCINATED quote β€” not in case 2
{"claim": "Some invented holding from a case that was never loaded.", "n": 5,
"quote": "anything"}, # OUT-OF-RANGE [n]
{"claim": "A fabricated proposition.", "n": 1,
"quote": "this exact sentence does not appear in the loaded text"}, # FABRICATED quote
]
arr += [
{"claim": "Bool-n bypass attempt.", "n": True,
"quote": "sole basis of conviction if it inspires full confidence"}, # BOOL n β€” isinstance(True,int) is True; must drop
{"claim": "Trivial-substring bypass.", "n": 1, "quote": "the court"}, # SHORT quote (<4 words) β€” substring of almost anything; must drop
]
verified, dropped = serve.verify_claims(arr, cases)
print("verified claims:", [v["claim"] for v in verified])
print("dropped:", dropped)
assert len(verified) == 1 and verified[0]["n"] == 1, "FAIL: gate did not keep exactly the one grounded claim"
assert dropped == 5, f"FAIL: expected 5 dropped (hallucinated quote, out-of-range n, fabricated quote, bool-n, short-quote), got {dropped}"
print("PASS: hallucinated quote, out-of-range n, fabricated quote, bool-n, and trivial short-quote ALL dropped; only the verbatim-grounded claim survives.")