From ed827626db066e34342e6a1f13b008a1a923ad47 Mon Sep 17 00:00:00 2001 From: twentyOne2x Date: Wed, 15 Jul 2026 05:14:47 +0200 Subject: [PATCH] Support legacy claim evidence fingerprints --- scripts/run_approve_claim_clone_canary.py | 3 ++- tests/test_run_approve_claim_clone_canary.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/run_approve_claim_clone_canary.py b/scripts/run_approve_claim_clone_canary.py index 2ea28e6..c2e6d55 100644 --- a/scripts/run_approve_claim_clone_canary.py +++ b/scripts/run_approve_claim_clone_canary.py @@ -45,6 +45,7 @@ SECURITY_DEFINER_ARGUMENT_TYPES = { "assert_approved_proposal": "uuid, text, jsonb, text, uuid, timestamp with time zone, text", "finish_approved_proposal": "uuid, text, jsonb, text, uuid, timestamp with time zone, text, text", } +CLAIM_EVIDENCE_FINGERPRINT_ORDER = "ce.claim_id::text, ce.source_id::text, ce.role::text" def _run( @@ -976,7 +977,7 @@ select json_build_object( 'public.agents', {fingerprint("public.agents", "a", "true", "a.id::text")}, 'public.claims', {fingerprint("public.claims", "c", f"not ({claim_predicate})", "c.id::text")}, 'public.sources', {fingerprint("public.sources", "s", f"not ({source_predicate})", "s.id::text")}, - 'public.claim_evidence', {fingerprint("public.claim_evidence", "ce", f"not ({evidence_predicate})", "ce.id::text")}, + 'public.claim_evidence', {fingerprint("public.claim_evidence", "ce", f"not ({evidence_predicate})", CLAIM_EVIDENCE_FINGERPRINT_ORDER)}, 'public.claim_edges', {fingerprint("public.claim_edges", "e", f"not ({edge_predicate})", "e.id::text")}, 'public.reasoning_tools', {fingerprint("public.reasoning_tools", "rt", f"not ({tool_predicate})", "rt.id::text")}, 'kb_stage.kb_proposals', {fingerprint("kb_stage.kb_proposals", "p", f"p.id <> {ap.sql_literal(proposal_id)}::uuid", "p.id::text")}, diff --git a/tests/test_run_approve_claim_clone_canary.py b/tests/test_run_approve_claim_clone_canary.py index a978da0..ad0eccf 100644 --- a/tests/test_run_approve_claim_clone_canary.py +++ b/tests/test_run_approve_claim_clone_canary.py @@ -13,6 +13,11 @@ sys.path.insert(0, str(ROOT / "scripts")) import run_approve_claim_clone_canary as canary # noqa: E402 +def test_unrelated_fingerprint_orders_legacy_claim_evidence_by_composite_key() -> None: + assert canary.CLAIM_EVIDENCE_FINGERPRINT_ORDER == ("ce.claim_id::text, ce.source_id::text, ce.role::text") + assert "ce.id" not in canary.CLAIM_EVIDENCE_FINGERPRINT_ORDER + + def _passing_result(expected_rows: dict, expected_deltas: dict) -> dict: proposal_id = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa" return {