Vibestrate
Vibestrate
docs

Run state

The status a run is in, what each one means, and the rules that keep moves between them honest.

In simple words

A run is always in exactly one state, never two at once and never one the tracking invented.

On the dashboard that value is the Status column of All runs, behind Runs in the sidebar. The counts and the scheduler queue sit above the table; the sidebar repeats Active, Merge-ready and Failed as filters.

Tip

The four terminal states mean different things. blocked is a decision - something refused. failed is a crash - a step broke. aborted is you. Only merge_ready is a change you can take.

The runs table, with the integration and scheduler panels above it. Rows carry Task, Status, Review, Verify, Duration, Updated and Run columns, two of them reading merge ready with review approved and verify passed, and each row ends in a Replay button. Above the table, three checked runs are staged for integration into integration/main behind Preview merges and Integrate selected, tagged never main and never push. Beside them the scheduler reads nothing running or queued, with Start the queue and Open the board.

Review and Verify get their own columns because they are separate answers; Replay on any row opens that run’s timeline read-only. A run starts at created and ends in one of four terminal states:

created planning, architecting, executing validating, reviewing, fixing, verifying merge_ready blocked failed aborted no way back out

Why the states are worth knowing

Knowing where to look failed means read the failing step’s own output. blocked means read the review or the policy that refused.

Knowing what is recoverable A blocked run is usually one fix away. A failed one may be an environment problem rather than a code one.

Filtering the list The counts above the table roll sixteen statuses into total, active, merge-ready and failed.

Did you know

There are sixteen statuses, and Vibestrate validates the value against that fixed set before writing it. A run cannot land in a state nobody defined, and it cannot skip from one to another along a path the state machine does not allow. The moves are enforced, not merely recorded.

Moving a run from the dashboard

Open a run and the status hero carries the controls that state allows: Pause and Abort while it runs, with Pause flipping to Resume once it has taken. A run holding at a gate shows an approval banner with Approve, Reject and, for an agent-raised gate, Request changes plus a box for the guidance the stage re-runs with. Mission control collects the same gates in Waiting on you, where Approve and Reject are one click and Details opens the run.

The same moves in the terminal

vibe (or vibe shell) opens the interactive shell. Its : palette carries Pause selected run, Resume selected run and Abort selected run; the Approvals tab decides gates with a to approve, r to reject and c to request changes.

The moves are enforced

Every allowed move is written into an explicit list, the ALLOWED_TRANSITIONS allowlist. A move that isn’t on it raises a StateTransitionError and stops, instead of happening quietly.

The four terminal statuses have no way back out. To start over, run the task again as a new run; the previous run’s artifacts stay where they are.

That is what makes runs replayable, pausable and auditable. A run that reads verifying is verifying: the verifier is running, the previous artifacts are committed, and there is no in-between fuzz.

The statuses

The canonical, generated list lives in the run-state reference.

StatusMeaning
createdRun record exists; orchestrator hasn’t picked it up yet.
planningPlanner is running.
plannedPlan is recorded; about to enter architecting.
architectingArchitect is running.
architectedArchitecture recorded; about to execute.
executingExecutor is editing files in the worktree.
validatingValidation commands are running.
reviewingReviewer is reading diff + validation output.
fixingFixer is addressing review findings.
verifyingVerifier is doing the final pass before merge.
waiting_for_approvalRun is holding at a gate, awaiting a human decision.
pausedUser-requested pause. Resume returns to pausedAtStatus.
merge_readyVerifier passed. Diff is ready for the user to merge.
blockedReviewer or verifier flagged the run unsafe to continue.
failedUnrecoverable error during a stage.
abortedUser aborted explicitly. Worktree is preserved.

Two kinds of pause

A stopped run is stopped for one of two reasons, and the Status column names which.

  • A gate is open (waiting_for_approval). Two things raise one: a project policy listing the stage in requireApprovalAtStages, or an agent asking for your call before it continues. The banner’s overline says which. Request changes belongs to agent-raised gates, because a policy gate has no agent turn to re-run.
  • You asked for it (paused). The flag is picked up at the next stage boundary, and pausedAtStatus remembers where to resume.

Both kinds survive a restart: the pause flag is on disk, so killing and restarting Vibestrate does not lose it.

Automation

Reachable from a script or over SSH; see the CLI overview.

vibe status
vibe status --json
vibe replay <runId>
vibe pause <runId>
vibe resume <runId>

Deciding a gate takes the run id plus the approval id that vibe approvals list prints:

vibe approvals list <runId>
vibe approvals approve <runId> <approvalId>
# reject marks the run blocked
vibe approvals reject <runId> <approvalId>
# agent-raised gates only
vibe approvals request-changes \
  <runId> <approvalId> --guidance "..."
  • Workflow - the stages that drive transitions.
  • Task lifecycle - the same statuses, drawn as a transition diagram.

Next: worktree covers the copy of your repo a run works in.

© 2026 Vibestrate
v0.4.3 Shonshon - Evolving Technologies