Skip to content

Commit a2aceab

Browse files
committed
docs: tighten receipt-chain state snapshot boundary
1 parent d5929eb commit a2aceab

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

docs/receipts/RECEIPT_CHAIN_v0.2.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,24 @@ The minimum acceptable test is:
5959
4. Any receipt body change changes `receipt_hash`.
6060
5. Any broken `previous_receipt_hash` breaks chain verification.
6161

62+
## State snapshot rule
63+
64+
`mutation_committed: false` is only accepted when paired with a `state_snapshot_hash` taken after refusal and verified against the expected unchanged state for the tested path.
65+
66+
The snapshot is path-local. It does not prove that every downstream or external mutation route was blocked.
67+
6268
## Verification procedure
6369

6470
A verifier should check:
6571

6672
1. `decision` is `REFUSE`.
6773
2. `mutation_committed` is `false`.
68-
3. `payload_hash` matches the attempted payload.
69-
4. `decision_record_hash` matches the DecisionRecord used by the gate.
70-
5. `previous_receipt_hash` matches the prior receipt in the chain.
71-
6. `receipt_hash` recomputes correctly from the canonical receipt body.
72-
7. Optional signature verifies against the declared signing key, if signatures are enabled.
74+
3. `state_snapshot_hash` matches the expected unchanged post-refusal state for the tested path.
75+
4. `payload_hash` matches the attempted payload.
76+
5. `decision_record_hash` matches the DecisionRecord used by the gate.
77+
6. `previous_receipt_hash` matches the prior receipt in the chain.
78+
7. `receipt_hash` recomputes correctly from the canonical receipt body.
79+
8. Optional signature verifies against the declared signing key, if signatures are enabled.
7380

7481
## Signature status
7582

0 commit comments

Comments
 (0)