Skip to content

Event catalog reference

Every run is two-plus append-only streams in the agent's schema: run (written by the orchestrator holding the run lease) and task:<taskId> (written by that task's lease holder). Sequence numbers are per-stream and gapless; every append is a compare-and-append.

run stream

EventMeaning
RunCreated / RunStartedRun exists / first tick began
SideEffectRecordedctx.now() / ctx.random() value, recorded once
TimerSet / TimerFiredctx.sleep began / wake consumed
WavePlannedWave dispatched: tasks, inputs, and the plan digest
WaveDispatchedTask hints enqueued
WaveTaskSettledOne task's terminal outcome absorbed
WaveSettledSettle policy met; coverage summary
StreamInvalidatedVerified replay diverged (workflow edit); effects from fromSeq re-derive
RunCompleted / RunFailed / RunCancelledTerminal

task:<id> stream

EventMeaning
TaskStartedLoop (re)entered — attempt counts retries
LlmCallStarted / LlmCallCompletedModel request (with digest) / durable response + token usage
ToolCallStarted / ToolCallCompletedHandler about to run (idempotency key recorded) / result
ApprovalRequested / ApprovalResolvedTask parked for a human / their decision
StreamInvalidatedPrompt/tool edit detected on replay; steps from fromSeq re-run
TaskCompleted / TaskFailedTerminal for the task (willRetry marks retryable failures)

Payloads are versioned JSONB ({ v: 1, ... }). The log is the source of truth; runs table columns (status, output, error) are rebuildable projections. Full semantics: Durability and spec §5–§6.