Skip to content

Durable Goals

A Goal is the unit of durable intent in Wayland Core. Where a session is what is happening now, a Goal is what you asked for, recorded in a form that outlives the process running it.

Kill the process mid-run and the Goal is still there, in state, and resumable.

Durable Goals landed in v0.12.26.

Wayland Core runs agentic work through five loop owners: Anvil, Council, Crucible, ForgeFlows, and Direct. Before v0.12.26 each carried its own notion of what finished meant.

They now share one durable Goal kernel, with a single canonical terminal taxonomy lifted into wcore-types and one transition path driven from the shipped binary. A Goal completed under Crucible and a Goal completed under ForgeFlows mean the same thing and are queried the same way.

Goals are first-class on the host protocol, not just an internal bookkeeping detail:

  • A typed Goal control command set, so a host can drive Goal state directly.
  • goal stream for a live view of Goal transitions as they happen.
  • Refusals rendered in the TUI rather than swallowed.
  • Durable Goal state shown in the terminal.

If you embed the engine, see Driving the Engine from a Host and the JSON Stream Protocol.

Fleet work rides a durable task ledger with an epoch fence. Three properties come out of that design, and each closes a specific failure:

  • Dependencies are enforced at the durable boundary. A task cannot start because an in-memory view thought its dependency was done; the durable record decides.
  • An agent releasing a claim must present its own epoch. A stale agent that wakes up late cannot release a claim that has since moved on.
  • A loop-owner claim carries a lease. A dead owner cannot deadlock its own Goal, because the lease expires and the claim becomes reclaimable.

Taken together, these are what make a Goal genuinely resumable rather than merely recorded. A Goal whose worker died is not a Goal stuck forever waiting on that worker.

You wantRead
To run a council of providers under a GoalCrucible
To run authored multi-step flowsWorkflows
To spread work across worktree workersSwarm
To see the turn-by-turn mechanics beneath a GoalAgent Loop and Turn Lifecycle
To run a Goal on another machineExecution Backends