The ledger
An append-only record of every step and decision on a case, written in the same transaction as the change it records.
Every case has a ledger. A row is written in the same database transaction as the change it records, so there is no change without its row and no row without its change. Rows are never edited or removed.
What a row says
| Field | Meaning |
|---|---|
action | What happened, as noun.verb: file.received, gate.confirmed, run.ingested, document.approved, workflow.auto_filed. |
actor.name | Who decided. A person's role, the name of an API key, or Workflow. |
actor.authenticatedAs | Whose sign-in or key authorized the write. |
target, detail | What was touched, and the specifics. |
name and authenticatedAs differ exactly when a machine decided. A workflow can file a document but cannot sign in, so the row says Workflow decided, under the identity of whoever took the gate.
Where to read it
- In the app: the ledger lens of the case.
- Over the API:
GET /applications/{id}/events, newest first. See reading results. - Pushed to you: webhooks deliver ledger rows as they are written.
Retention
A case and its ledger are removed together when the case passes the retention window. The ledger is part of what is purged, by design.
Sheaf