One receipt per consequential action.
For each action that matters, AXR emits a receipt: the action taken, hashes of its inputs and outputs, a timestamp, the identity of the agent, and an Ed25519 signature over the canonicalised record. It proves one thing precisely — that a given workflow, on a given input, made a given decision, and that the record has not changed since.
That buys two distinct things. Tamper-evidence is the cryptographic floor: the signature proves the record has not changed. Behavioral legibility is what earns its keep day to day — the receipt makes the workflow's actual behaviour readable enough that an internal contradiction surfaces even when nothing was tampered with and every signature is valid.
It is deliberately not a workflow builder, an agent framework, or an observability platform. It is the thin accountability layer that sits underneath those tools. Two receipt types carry the load: a step receipt records a single decision-relevant node, and a workflow receipt ties one run's steps into a signed, chained record. Steps chain within a run; runs chain across an agent's history — so deleting any receipt breaks the chain, and altering any receipt breaks the signature.
Illustrative step receipt — the shape of one signed action
{
"axr_version": "0.2.1",
"agent_id": "axr:agent:eco-clean:v5.1",
"step": { "name": "Create Booking", "kind": "side_effecting" },
"io": {
"input_hash": "sha256:9f2c…b41a",
"output_hash": "sha256:1d7e…0c88",
"decision": "BOOKING_CONFIRMED"
},
"logic_version": "5.1",
"logic_hash": "sha256:a3b9…77e2",
"previous_receipt_hash": "sha256:5c10…d9f3",
"timestamp": "2026-06-13T09:14:22Z",
"signature": "ed25519:K8f…/Qb2Aw=="
} Signature valid Change one byte of any field and the signature no longer verifies. That is the whole principle — and it is enough.