KB-71A8

FIX3 03 — Plan Fingerprint v3

3 min read Revision 1

SUPERTRACK C. Goal: the plan fingerprint is content-addressed over ALL control inputs, so no stale plan can appear current when any control input changes.

fn_qt001_plan_fingerprint_v3 returns a jsonb with engine_version 3, scope_count 74, and a composite (live cb7f062ed3becb1d71ff70917ec5b105) computed by the pure composer fn_qt001_fp_compose_v3 over these components: scope_hash (full 74-collection scope), rules_hash (now INCLUDING governance fields authority_lock/provenance/rule_checksum/approved_by alongside predicate/version/approval/active/superseded), engine_hash (binds eval_predicate_v2 + eval_rule_core + eval_rule_v3 + rule_governance_ok + rule_checksum + machine_tier_v3), signal_hash, governance_hash (per-rule machine governance verdict), signoff_hash (now INCLUDING reviewer_type, reviewer_name, evidence_path, valid_until, reviewed_plan_checksum, plus binding plan_id/plan_version/plan_checksum/scope/tier/verdict/valid_until), trigger_fingerprint (fn_birth_registry_auto def md5 + tga count), gateway_release_hash (ACTUAL norm_md5 per gateway fn aggregated + integrity bool — live 479947caa6f4dceff6d121c09940cb74 ok=true), dotfreeze_status (PASS 2/2), guards_state (governance/parity/engine/public/directus/scale/capability), policy_identity_hash (per-collection governance_role/strategy/eligible/apply_safe), watermark_hash (source row counts), blocker_hash, version, count.

Negative tests: v_qt001_plan_fingerprint_v3_negative_tests calls fn_qt001_fp_compose_v3 with each of the thirteen components individually perturbed and asserts the composite changes. All thirteen pass (scope, rules, engine, signal, governance, signoff, trigger, gateway, dotfreeze, guards, policy, watermark, blockers — every one content-sensitive). This is a behavioral proof of completeness that does not require mutating any table.

Design note on circularity: the fingerprint binds the structural guard STATES (governance/parity/engine/public/directus/scale/capability) rather than the readiness v6 verdict, because readiness v6 consumes the fingerprint guard. Binding the component states captures the same information with no view cycle.

Back to Knowledge Hub knowledge/dev/reports/architecture/birth-stage2-6a-fix3-qt001-exact-control-contract-authority-lockdown-2026-06-06/03-plan-fingerprint-v3.md