feat(receipts): evidence levels — separate signature authenticity from durable inclusion - #236
Merged
Merged
Conversation
…m durable inclusion
Receipts now state what they prove. Four calibrated levels borrowed from
arXiv:2608.11632 §3.3 / Table 4 ("a signature is not evidence that its
transaction committed"):
- structural — canonical syntax, typed bindings, valid receipt signature
under the declared key; malformed receipts fail with stable reason codes.
- attested — a trusted key attests the first terminal stage + reason
(does not independently establish correct evaluation).
- replay — retained prebind inputs + pinned versions reproduce the
recorded decision/transition; watermark reclamation downgrades it.
- inclusion — the org chain verifies and a retained checkpoint anchors a
head covering the receipt's events; survives restart. Commit receipts
(executed actions) require this anchor: sign-then-abort receipts verify
at attested but NOT inclusion.
verification.evidence reports the highest level achieved with the objects
actually retained, per-level reasons, downgrades vs a claimed level, and
the inclusion anchor. Optional HMAC-SHA256 receipt signatures + trusted-
key attestations; audit_json gains key_registry/sign_key_id. 9 new tests;
full suite 720 passed, 71.46% coverage (gate 65).
Closes #235
This was referenced Aug 13, 2026
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Receipts now state what they prove. Introduces the four calibrated evidence levels from arXiv:2608.11632 §3.3 / Table 4, so a signed receipt is never conflated with a durably committed one.
Levels
structural:<code>reasons.Behavior
verification.evidencereports the highest level achieved with the objects actually retained, per-level reason codes, downgrades vs a claimed level, and the inclusion anchor.action_status: executedreportsinclusion_required: true; a sign-then-abort receipt verifies atattestedbut NOTinclusion.signature+ trusted-keyattestationblocks (declared-key registry,key_registry/sign_key_idonaudit_json).Verification
tests/test_evidence_levels.py— one per level + sign-then-abort + restart durability + reclamation.tools/json_smoke.pyPASS.docs/evidence-receipts.md→ "Evidence levels"; CHANGELOG entry.Closes #235