The business runs itself.
You read the numbers.
Metrics & reports, alerts, workflows & lifecycles, scheduled jobs — all reading one record, so nothing drifts.
Operations
run workflowNumbers, recomputed on ask.
A metric is recomputed from the ledger the moment you read it. No stale dashboard, no export that was true last Tuesday.
Alerts watch the spine.
Alerts and scheduled jobs are declared in your rulebook. They watch the event spine and fire on your conditions — and their firings are on the record too.
Workflows advance one gate at a time.
Fulfillment, purchase orders, transfers — declared lifecycles that move step by recorded step. A stuck step is visible; a skipped step is impossible.
See it at the door.
Reading a metric recomputes it from the ledger; advancing a workflow is one typed step — both on the record.
$ whale cmd metrics.read --json '{"metric":"revenue.week"}' # revenue.week = $18,420.00 · recomputed from the ledger, just now $ whale cmd lifecycle.advance --json '{"type":"fulfillment","id":"f_310","to":"shipped"}' # f_310 → shipped · event emitted · alerts checked · on the record
Derived state can always be rebuilt.
Reports, totals, and views are recomputed from the permanent record — so they never disagree with reality. Facts are forever; everything derived is disposable.
more capabilities: inventory & purchasing · money & lightning · the record & security