Optional evidence[] predicate for decision receipts: schema + verified reference receipt - #1
Open
UseTruth wants to merge 1 commit into
Open
Conversation
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.
Follow-up to the discussion in VeritasActa/Acta#3 (@tomjwxf), converging on ACTA rather than forking.
This adds an optional
evidence[]predicate that carries the evidentiary basis of a decision receipt: not just which decision, but what it rested on and whose attestation that is. It is additive and safely ignorable by verifiers that do not understand it.Files (self-contained under
evidence-predicate/, easy to relocate, e.g. the schema to repo root next toknowledge-unit.schema.json):evidence-dimension.schema.json— JSON Schema (draft 2020-12) for the predicate.receipt-with-evidence.example.json— a signed referencedecision_receiptcarrying the predicate.verification-key.json— public verification key(s) (JWK + hex). TEST keys, not production.README.md— how it maps to the review, and how to verify.Both refinements from the issue are folded in:
stateinsatisfied | unverified | stale | failed;dimensionindata_rights | provenance | freshness | contradiction(core), plus anx-<vendor>-<name>form for experimental dimensions so unknowns stay ignorable.sourceis a structured{ issuer, (key | ref) }with an optionalkid, so the relying party can pin whose attestation this is.issuerMUST be independent of the runtime being gated, and the predicate composes with the signer-derived tier rather than restating it.The reference receipt verifies under
@veritasacta/verify(v2decision_receipt, tier T1ed25519-signature, jcs-canonicalization):Two open questions from the issue, with defaults so this is not blocking:
payload.evidence.dimensions[](composes with the existingpayload.evidence) vs a top-levelpayload.evidence[]. Same predicate either way.x-<vendor>-<name>vs a registry convention you prefer.I have deliberately not touched the draft
.xml/.txthere, so you can integrate the section into the -next signed-receipts draft however you see fit. Happy to co-author.