Deterministic Refusal Proof: Blocked Mutation, Non-Action Receipt, and Unchanged Destination Verification
Three real out-of-policy proposals. Three deterministic refusals. Three protected destinations whose pre-attempt and post-refusal SHA-256 digests match byte for byte.
Protected target pre-state
Each target has a recorded baseline, byte length, and 64-byte SHA-256 identity. The SQLite fixture also retains row versions and integrity state.
- er-repeat.txt · 65 bytes
bf15f8633e85350430adf1bbc47a47154965d3a7f28e4ebad25d6a39ecaa2f8c- ungated.txt · 3 bytes
2d27fbdf4e8ca207afbfa388ca9172fbcc6c70e534af2476b3b704f87debadcf- contacts.db · 16,384 bytes · row version 1
362088a107369e634cdc9c6c520fbca3e2393722860720d3aa2c2eb11b47d719
Three concrete out-of-policy submissions
Case A · Citation selector fabrication
A citation envelope requests a bounded range of 0..9999 against a 26-character evidence node.
Case B · Write after lease release
A delayed worker proposes replacing v1
with v2
after its active file lease has been released.
Case C · Approval-parameter substitution
The controller pins Controller fixed value; the worker proposes Unrequested but valid value for the same row and version.
Deterministic refusal records
selector_out_of_boundsrange 0..9999 exceeds 26 charactersexact_file_lease_requiredno active File lock; no destination writerequested_act_mismatchcommitted receipt · zero effects · model calls 0A separate stale-generation request is refused with stale_lease_generation: expected 8, current 1 before target creation. No nonexistent preimage is claimed.
Destination verification: pre_sha256 == post_sha256
The offline verifier recomputes every fixture digest, checks every receipt and all 45 fresh conformance cases, and verifies the complete integrity manifest.
Reproduce the verification offline
Download the bundle and run the zero-dependency Python 3 verifier from its root. It recomputes all three digest chains, validates the stale-generation reason-only case, checks all 45 fresh cases and 20 evidence cases, parses every schema, and verifies the integrity manifest.
python verify_refusal_proof.py
Artifact inventory
- Evidence-selector refusal and unchanged 65-byte source
- Unleased-write refusal and unchanged 3-byte destination
- Act-pinning refusal and unchanged 16,384-byte SQLite destination
- Stale-generation reason-only refusal with absent preimage
- Fresh 45-case conformance manifest
- Fresh 20-case evidence manifest
- Sanitized fresh execution transcript
- Candidate binary attestation
- Exact ten-key EISA act envelope, typed lease declarations, RequestedAct schema, and EvidenceRef schema