- decision
- DENY
- policy_snapshot_id
- 018f9a1e-6d4c-7a3b-9f52-0c1d2e3f4a60
- timestamp
- 2026-07-15T09:24:11.000Z
- integrity_hash
- b20158d4684cd066acffea0cf5def73a6d364814ef074cc51d0909cb894ba8b6
- signature_kid
- msk_demo_v2 · ed25519
- transparency_anchor
- null · not anchored
Decision Receipt
A Decision Receipt is a signed, replayable record of how a consequential decision was made, created at the moment it happens and independently verifiable afterwards.
It records the policy in force, relevant decision context, the outcome and the integrity information needed to determine later whether the signed record has changed.
A receipt does not prove that the decision was correct, that its inputs were true, that the outcome was fair, or that it was lawful everywhere. It does not prove that a named human personally acted, or that a model followed the rationale it stated.
- Signed
- Replayable
- Portable
- Chainable
- Independently verifiable
This is a synthetic demo bundle, signed with the demo key msk_demo_v2. The decision it records never happened and the file carries no tenant data. It is the same JSON envelope the API returns from GET /v1/receipts/:id/bundle — a manifest plus the canonical bytes of every bundled file, so it parses in any verifier that accepts the real thing. Verify it offline against the demo public key published at /.well-known/meshqu-demo-keys.json; demo trust roots are deliberately separate from production ones, so this bundle will not verify against a production key and a production receipt will not verify against this one.
What a Decision Receipt is
The definition is above, in full. What it implies and does not state is the pair of questions a reader forms straight after reading it: when does the record come into existence, and why is the log an institution already keeps not enough?
At the moment the decision happens — which is the property that makes everything else possible.
At the decision boundary
A receipt is written when the decision is evaluated — not when a batch job runs, not at the end of the day, and not when someone later asks. The policy in force, the submitted context and the outcome are captured in the same operation that produces the outcome.
Bound before anything can move
The policy snapshot is frozen and its digest bound into the record; the integrity hash is computed over the canonical content; the signature is produced over that hash. From that instant, any later change to the recorded content is detectable by anyone holding the artefact.
Once, and only once
A receipt is not amended. A correction, an override or an escalation is its own decision with its own receipt, linked to the first. The sequence is the record — nothing is edited into a tidier version of what happened.
Most institutions already log thoroughly. Logging is not the gap; proving is.
A log records that something happened
It does not record which version of which policy was in force at that moment, or preserve the inputs the decision was actually evaluated against. Both are usually recoverable — from a deploy history, a config repository, a database that has since been migrated — and recovering them is an act of reconstruction, not retrieval.
Reconstruction produces a story
Assembling evidence across systems, tickets, approvals and institutional memory takes weeks and yields a narrative that is only as good as the assembler. A challenger can dispute the assembly itself, and often does, because nothing about it is independently checkable.
Nothing in a log resists alteration
Append-only storage is a property of the system holding it, so it is only as trustworthy as continued access to that system and to the people who operate it. A signed receipt is checkable by someone with no access to MeshQu, no account, and no reason to take anyone at their word — years after the systems that produced it were replaced.
The rest of this page works through the object itself: what is inside it, who or what can produce one, how a sequence of them holds together, and exactly what verifying one does and does not establish. For the structure of the object and the boundaries around it, see structure, verification and trust boundaries; for the exact field-level contract, see the Receipt Reference.
Inspect the object
Hover or focus any field on the receipt to inspect its semantics. Verify and Replay sit beneath as operational capabilities — both run locally and reveal real claim outputs, not network theatre.
Synthetic demo fixture, signed with msk_demo_v2. Generated in the MeshQu monorepo and published here as meshqu-public-demo-2026-08.
- decision bound
- DENY
- violations[] bound
- DTI_MAX · highreason_codeVALUE_ABOVE_MAXfielddtiactual_value0.52expected_value<= 0.45is_shadowfalse
- timestamp bound
- 2026-07-15T09:24:11.000Z
- policy_snapshot_digest bound
- 5b32b0787167389c0a643a72521e906405f31dd3eb105073bc900125ea4ab736policy_snapshot_id018f9a1e-6d4c-7a3b-9f52-0c1d2e3f4a60
- integrity_hash signed
- b20158d4684cd066acffea0cf5def73a6d364814ef074cc51d0909cb894ba8b6
- signature signature
- LI-2rncUT3-6xpWNLQftNZA67WziMMFfaHawHRsH07LohWwWRuvPI1HAO6aAkvXCZDMTCxHGorLeCeTsTKgABAsignature_kidmsk_demo_v2signature_algorithmed25519
- transparency_anchor recorded
- nullNot anchored
decision
boundBound into integrity_hash.
The verdict, recorded as one of four discrete values — ALLOW, DENY, REVIEW, ALERT— never free text. This receipt records a decline on a credit application. Everything else on the receipt explains how that verdict came about.
Synthetic demo fixture, signed with msk_demo_v2. Generated in the MeshQu monorepo and published here as meshqu-public-demo-2026-08.
Human, AI or an existing platform
A Decision Receipt is the same object whichever of the three produced the decision. What changes is where the decision boundary sits and what the receipt has available to record — not the shape of the artefact, and not how it is verified.
Human decisions are captured through a policy-derived endpoint rather than inferred from tickets and mail threads afterwards. The submitted context, the policy in force and the outcome are bound together at the moment the person acts, and the resulting receipt is the same object an automated path produces.
- Approval
- Rejection
- Exception
- Override
- Manual check
- Supporting rationale
An agent asks to do something consequential; the request is evaluated against the policy in force and the outcome is signed. The receipt records what was asked, what was decided and on what basis. Identity is whatever the integrating system submits — an actor id and context fields, bound like all submitted context; MeshQu does not independently establish which model or agent acted. Where a rationale is supplied it is preserved as an assertion by the system that produced it — verification does not, and cannot, establish that a model reasoned its way to the answer it gave.
- Agent identity, as the integrator supplies it
- Policy context
- Relevant evidence
- Requested or executed action
- Resulting decision
MeshQu integrates at an existing decision boundary through the API without replacing the underlying workflow, policy engine or operational system. The platform continues to make the decision it already makes; what changes is that the decision now leaves a verifiable record instead of a log line.
- Workflow engines
- Policy and rules engines
- Case and operational systems
- Service-to-service calls
Actor attribution reflects what the issuing system asserts. A receipt preserves that attribution and binds it so it cannot be revised afterwards; it does not independently establish that a named human personally acted, or that a model followed the rationale it stated.
Decision Chains
A single receipt proves one decision. A chain proves a workflow. Related decisions reference each other in order, so a screening, an escalation, a human review, an override and a final approval read as one governed sequence rather than five unrelated records. Hover any step to inspect its receipt and the continuity from the prior one; verify the chain integrity end-to-end.
Verification bundles
Receipts ship inside verification bundles that carry their own manifest, policy snapshot, expected public keys and canonicalization profile — plus optional transparency, chain and evidence artefacts when the decision has them. Every digest below is read from the published artefact, and the download is that artefact unmodified. Replay and verification do not require contacting MeshQu.
- {
- "canonicalization_profile": "meshqu-canonical/v0",
- "chain_id": null,
- "decision_id": "018f9a1e-6d4c-7a3b-9f52-0c1d2e3f4a5b",
- "evaluator_version": "1.2.0",
- "exported_at": "2026-08-03T00:00:00.000Z",
- "files": [
- {
- "path": "policy_snapshot.json",
- "required": true,
- "sha256": "5b32b0787167389c0a643a72521e906405f31dd3eb105073bc900125ea4ab736",
- "size": 919
- },
- {
- "path": "receipt.json",
- "required": true,
- "sha256": "3865ed86fe5cbb32d7ed3c49bb490f4c75978128fca4d21fa2e6e17bf1c6e2ba",
- "size": 1144
- },
- {
- "path": "trusted_keys.json",
- "required": true,
- "sha256": "42104328d8bea3850c1dba6f754ce14dd2ea5663c26d6a3240d86554bc951bc1",
- "size": 540
- }
- ],
- "manifest_digest": "3919b6cae273c123b7f56ed5b2b5fa47275689409df1fcb0ff28538db2fad24c",
- "signature_alg": "ed25519",
- "version": "1"
- }
Pretty-printed for reading. The digest above is over the canonical single-line bytes as shipped — run sha256sum against the download, not against this view.
All ten sub-claims for this bundle, reported together. No network call.
This is a synthetic demo bundle, signed with the demo key msk_demo_v2. The decision it records never happened and the file carries no tenant data. It is the same JSON envelope the API returns from GET /v1/receipts/:id/bundle — a manifest plus the canonical bytes of every bundled file, so it parses in any verifier that accepts the real thing. Verify it offline against the demo public key published at /.well-known/meshqu-demo-keys.json; demo trust roots are deliberately separate from production ones, so this bundle will not verify against a production key and a production receipt will not verify against this one.
What verification proves
A verifier consumes the bundle and reports a status for every sub-claim it can evaluate. This is the whole of what a passing result asserts — stated here rather than only on /spec, because this is the page people actually read before they form a view of what a receipt is worth.
- The receipt has not been altered.
- The issuer signature validates.
- The decision can be replayed against preserved context.
- Referenced evidence digests match the bundle manifest.
- Chain references and seals verify where present.
- Approval lineage verifies where trusted ratifier roots are supplied.
The integrity hash is recomputed from the canonical receipt body and compared to the one recorded. Any edit to the decision, the submitted context or the bound digests changes it.
An Ed25519 signature over the canonical envelope is checked against trusted key material supplied to the verifier — never against a value carried inside the receipt. The envelope covers the integrity hash, the timestamp and the key identity, so the hash is what ties the signature to the content.
Whichever of the ten sub-claims the bundle supports are reported together: manifest digests, snapshot replay, canonicalization profile, and — where the decision has them — evidence, chain and transparency artefacts. Missing material yields not_applicable, never a soft pass.
Verification runs against the bundle, offline, with no call to MeshQu. The long-form account — including a worked tamper demonstration — is in Verifying a Receipt Offline.
What it does not prove
The boundary matters more than the claim. A receipt is strong evidence about how a decision was made and deliberately silent about whether it was the right decision — and a reader who does not know where that line sits will over-read a green result.
- The original business policy was correct.
- The underlying evidence was true.
- The decision was fair by itself.
- That all disclosure should be unrestricted.
- That MeshQu must be trusted as a live service.
A receipt records the policy that was in force and the outcome that followed from it. Whether that policy was the right policy is a question about the institution, not about the artefact.
Submitted context is bound so it cannot be revised afterwards. Binding a value is not the same as attesting that it was accurate when it was captured.
A verified receipt is evidence of how a decision was made. It is not a determination that the decision was lawful in every jurisdiction that might later examine it.
A receipt also does not prove that a named human personally acted, or that a model followed the rationale it stated. Those are attributions the issuing system asserts; the receipt preserves them faithfully and makes no further claim about them.
Operational examples
The receipt becomes real through operational context. The same primitive carries different operational shapes — AML escalation, sanctions screening, AI-assisted review, procurement approval, agent tool invocation, credit decision, compliance attestation. One of these, the credit decision, is the signed fixture inspected above; the rest are illustrations drawn to the same schema and labelled as such.
AML escalation
Illustrative shape · not a signed receiptA velocity threshold tripped and the case went to a human analyst. REVIEW is the verdict the policy produced — it is not a deferred decision, it is the decision, and the receipt records the snapshot and evidence references the analyst was handed.
- VELOCITY_ANOMALYhighField 'transfers_24h' value 19 exceeds maximum 8reason_code VALUE_ABOVE_MAXfield transfers_24hactual_value 19expected_value <= 8
- actor
- aml-screening-service · automated
- policy_snapshot_id
- 018f7c2a-4b11-7e08-9a3d-1f0b6c25d411
- Evidence
- Two evidence references — transaction window, counterparty profile. Digests only.
- Bundle sub-claims
- integrity, signature, snapshot_replay, chain_link and canonicalization valid; chain_seal not_applicable while the chain is open.
Build with it
Inspect, verify, and build against the Decision Receipt object. Verification works offline against the issuer’s public key — the bundle is self-describing and outlives the systems that produced it.
Decision Receipts are portable accountability artifacts, designed to be inspected outside the systems that produced them: open schemas, public-key verification, transparency-log compatibility, evidence manifests. That shape sits comfortably alongside Sigstore, DSSE and in-toto style attestations without claiming conformance to any single specification. The shape is the contract; the bundle is the portable witness.
This is a synthetic demo bundle, signed with the demo key msk_demo_v2. The decision it records never happened and the file carries no tenant data. It is the same JSON envelope the API returns from GET /v1/receipts/:id/bundle — a manifest plus the canonical bytes of every bundled file, so it parses in any verifier that accepts the real thing. Verify it offline against the demo public key published at /.well-known/meshqu-demo-keys.json; demo trust roots are deliberately separate from production ones, so this bundle will not verify against a production key and a production receipt will not verify against this one.