Skip to content

Authorisation Receipt, format v1 (final)

Status: final, version 1 (xybern-authorisation-receipt/v1). Example: spec/xybern-formats-v1/vectors/receipt.json.

A receipt is the standalone record of one decision: the action, the authorisation, the lineage, and the Vault certificate that lets anyone verify it offline. Since Phase 9 it is two-sided: authorisation.execution carries the tool's attestation and two_sided says whether one exists.

Key Meaning
format, workspace_id, issued_at, receipt_id (rcpt_ + decision id), decision_id Identity
action action_type, summary, content_excerpt, content_sha256, metadata, occurred_at, agent, chain
authorisation.outcome authorised, refused, escalated, authorised after review, authorised after dual control, authorised with obligations (, all met)
authorisation.decision, decision_path, rules_triggered, verdict, reasoning, escalation, latency_ms The decision
authorisation.charter The Charter version pinned
authorisation.lineage, lineage_text See lineage-v1
authorisation.warrant, collective_limits, obligations, flow, execution, two_sided The warrant proof, shared counters, obligations with who satisfied them, information-flow labels with provenance, the execution attestation
vault_entry_id, proof, proof_available The Vault certificate: entry, chain hashes, ECDSA signature, public keys, hashing recipe

Verify with tools/xybern-verify/verify.py <proof_bundle.json> or the SDK's offline verifier; the proof block is what makes the receipt checkable without Xybern.