Superseded by 2026-04-03-2-review-approval-and-integration-completion-are-distinct.md, which is itself partially superseded by 2026-04-06-1-wp-state-pattern-for-lane-behavior.md. 2026-04-06-1 is the current authority for the full 9-lane state machine.

This ADR encoded a 7-lane model with for_review -> done as reviewer approval. The current lifecycle separates reviewer approval (approved) from integrated completion (done), promotes in_review to a first-class 9th lane, and encapsulates all lane behavior in the WPState ABC.

Context and Problem Statement

The current WP lifecycle uses an implicit 4-lane model (planned, doing, for_review, done) with no formal transition validation or guard conditions. Any lane can be written directly, enabling invalid jumps (e.g., planneddone without review). There is no blocked or canceled state, no ownership tracking beyond "doing", and no forced-transition audit trail.

The state machine operates on events from the canonical append-only event log defined in ADR 2026-02-09-1. Each state transition corresponds to an event appended to the log.

Decision Drivers

  • Multi-agent conflict prevention — Multiple agents claiming or working the same WP must be detected
  • Review authority — Reviewer rollback must be enforceable, not silently overridden
  • Blocked work visibility — Stalled work must be surfaced, not hidden in "doing"
  • Evidence-based transitions — Guard conditions must enforce proof at each transition
  • Deterministic replay — A fixed state machine enables automated merge validation

Considered Options

  • Option 1: Keep current 4-lane model with added validation
  • Option 2: 7-lane state machine with strict transition matrix
  • Option 3: Full kanban with unlimited custom columns
  • Option 4: Simple binary (open/closed) with tags

Decision Outcome

Chosen option: "Option 2: 7-lane state machine with strict transition matrix", because it adds explicit ownership tracking (claimed), blocked work visibility (blocked), clean lifecycle termination (canceled), and mandatory guard conditions — all required for safe concurrent multi-agent work.

Implementation

Lanes: plannedclaimedin_progressfor_reviewdone (plus blocked and canceled)

Allowed transitions (9 total):

  1. planned → claimed — Agent declares intent to work
  2. claimed → in_progress — Work actively begins (workspace context established)
  3. in_progress → for_review — Implementation complete, submitted for review
  4. for_review → done — Reviewer approves (terminal)
  5. for_review → in_progress — Changes requested by reviewer
  6. in_progress → planned — Abandon/reassign (mandatory reason)
  7. any → blocked — External blocker identified
  8. blocked → in_progress — Blocker resolved
  9. any (except done) → canceled — WP abandoned or superseded (terminal)

Guard conditions (6):

  1. planned → claimed: Assignee must be set; no conflicting active claim
  2. claimed → in_progress: Active workspace context must be established
  3. in_progress → for_review: Required subtasks complete OR force flag with reason
  4. for_review → done: Reviewer identity and approval evidence required (per ADR 2026-02-09-4)
  5. for_review → in_progress: Review feedback reference required
  6. Any forced transition: Actor identity and reason are mandatory

Consequences

Positive

  • Explicit ownership tracking — claimed prevents phantom progress and concurrent claim conflicts
  • Blocked state surfaces stalled work — no more hidden "doing" with no progress
  • Guard conditions enforce evidence at every transition
  • Forced transitions are always auditable (actor + reason recorded)
  • Terminal done prevents accidental regression
  • Deterministic replay — fixed state machine enables merge validation (ADR 2026-02-09-3)

Negative

  • More states = more complexity (7 lanes, 9 transitions vs 4 lanes, ~4 transitions)
  • Migration required for existing WPs (doingin_progress)
  • Guard conditions add friction to rapid prototyping
  • Learning curve for new contributors

Neutral

  • Force-with-reason escape valve allows legitimate overrides while maintaining audit trail
  • status doctor command provides automated detection of stale claims and orphan contexts

Confirmation

  • CI validation: every merge triggers a transition validity scan against the state machine
  • Migration: doing maps to in_progress; other lanes map 1:1
  • Operational playbooks (PRD Section 13) cover common scenarios

Pros and Cons of the Options

Keep current 4-lane model with added validation

Retain planned, doing, for_review, done but add transition validation.

Pros:

  • No migration required
  • Simpler mental model — fewer states
  • Backward-compatible with all existing tooling

Cons:

  • Cannot distinguish claimed from active work — phantom ownership undetectable
  • Cannot represent blocked — stalled work invisible
  • Cannot represent canceled — abandoned WPs linger indefinitely
  • Weaker guard conditions (no workspace context check, no claim uniqueness)

Full kanban with unlimited custom columns

Allow projects to define arbitrary lane names and transition rules.

Pros:

  • Maximum flexibility — teams define their own workflow
  • Supports domain-specific states (e.g., "testing", "staging", "deployed")

Cons:

  • No standard transition validation possible
  • Complexity explosion — custom lanes require custom guards, merge semantics, CI rules
  • Deterministic merge requires a known, fixed state machine
  • Interoperability between projects breaks if lane names differ

Simple binary (open/closed) with tags

Two states (open/closed) with free-form tags for substates.

Pros:

  • Minimal state machine — only one transition to validate
  • Tags provide flexibility without schema changes

Cons:

  • No transition validation — tags are unstructured
  • Tags don't compose into deterministic state
  • Merge semantics for tag sets are undefined

More Information

Related ADRs:

  • ADR 2026-02-09-1 (Canonical WP Status Model) — state machine consumes events from this log
  • ADR 2026-02-09-3 (Event-Log Merge Semantics) — replays events through this state machine
  • ADR 2026-02-09-4 (Cross-Repo Evidence Completion) — evidence payloads satisfy guard conditions

References: