The Ledger
Every run produces an event ledger — a structured NDJSON log of everything that happened. The ledger is the audit trail. It records what ran, when, with which agent, what it cost, and what the outcome was.Where it lives
manifest.ndjson file contains one JSON object per line, one event per line.
Event types
| Event | What it records |
|---|---|
run_started | Workflow name, spec path, initial commit, agent CLI versions, max_budget |
step_started | Step name, agent, output mode, item (if foreach), session mode |
group_started | Group name, foreach ref, parallel flag, item count |
agent_launched | CLI command, worktree path, prompt hash, session ID |
agent_completed | Exit code, duration, tokens, cost, session ID, artifact refs |
agent_killed | Step, reason (guard/timeout/circuit_breaker), partial metrics |
state_bag_updated | Key that was updated |
state_bag_scope_reset | Start of a group retry |
gate_passed | Which checks passed |
gate_failed | Which check failed, stderr output |
guard_triggered | Guard name, reason |
retry_triggered | Strategy used, attempt number |
hitl_paused | Step name |
hitl_resumed | Action taken |
budget_exceeded | Scope, max budget, current cost |
step_completed | Status (pass, fail, fatal) |
group_completed | Status |
circuit_breaker | Reason |
run_completed | Status, total duration, total cost |
Reading the ledger
The ledger is plain NDJSON — you can read it withjq, grep, or any tool that handles newline-delimited JSON:
gump report is easier — it reads the ledger and presents a summary. The raw ledger is there when you need fine-grained analysis.