Pipeline lifecycle & state
Every run has a status you can see in the dashboard, and you can steer it at any time with the lifecycle controls.
The state machine
Section titled “The state machine”A single run moves through these states. Running is the hub: from there it can pause, stop, fail, or finish — and resume brings a paused, interrupted, or failed run back to running.
Hover or focus any state to see what it means. Blue is a forward transition; amber is resume — the recovery path.
States
Section titled “States”A run’s status is always one of seven values:
| State | Meaning | |
|---|---|---|
| Pending | Created but not yet started. | non-terminal |
| Running | Actively executing stages. | non-terminal |
| Paused | Cleanly checkpointed by you; resume continues exactly where it left off. | non-terminal |
| Completed | All stages finished and a pull request exists. | terminal |
| Failed | Unrecoverable error, loop exhaustion, circuit breaker, or crash. | terminal (resumable) |
| Interrupted | You stopped it (control file, signal, or webhook abort). | terminal (resumable) |
| Cancelled | Force-cancelled from the UI. | terminal |
Failed and Interrupted are terminal but resumable — resume re-enters the run where it left off. Completed and Cancelled are final.
The difference between failed and interrupted is who stopped the run: interrupted means a human stopped it intentionally; failed means something went wrong (an exception, an exhausted loop, the circuit breaker, or a crash).
Controlling a run
Section titled “Controlling a run”From the run’s header in the dashboard:
- Pause — stop at the next safe checkpoint without losing progress (Running → Paused).
- Resume — pick a paused, interrupted, or failed run back up (→ Running).
- Stop — end the run now (Running → Interrupted).
- Cancel — force-quit a run you no longer care about (→ Cancelled, not resumable).
Because each run lives in its own git worktree, stopping or failing never leaves your main working tree in a half-finished state.
Circuit breaker
Section titled “Circuit breaker”worca classifies errors and counts failures. When failures cross the configured threshold, a single run ends as failed (with a circuit-breaker reason) instead of retrying indefinitely — a backstop against a run that’s stuck spending tokens with no progress. The threshold is configurable in the Settings UI.