Skip to main content
A receipt is one executed action; an event is one step on the way. Both are written to the store, appended to .ctrlrun/receipts.jsonl and .ctrlrun/events.jsonl as one JSON object per line, and exported to any sink installed. Every enum renders by value, so a reader that never imported CTRLRun can read the evidence.

Receipt

ctrlrun.receipt/v3. seq and prev_hash are the chain; policy_hash and policy_version say which policy decided the action; controls are the registry ids the action and its matched rule cite. Two rows are about the object rather than the document, and the difference matters when you are reading a JSONL line rather than a Receipt. Every line begins with "schema": "ctrlrun.receipt/v3", which is written by the serializer and is not a field below. And hash is a field below and is not in the line: a document cannot contain its own hash, so the store keeps it in a column and chain_hash() recomputes it. A reader checking a chain compares those two.

Result

Event

Event types

In the order the specification introduced them. The five authority types appear only in a configuration with an authority: section.

Next