DocsIssue PropertiesStatus
Back
Issue Properties

Status

Status values

Every issue moves through a simple lifecycle:

BACKLOG → PLANNED → DOING → DONE
                  ↘ BLOCKED ↗
StatusMeaning
BACKLOGCaptured but not yet spec'd or prioritized
PLANNEDSpec'd and ready for work
DOINGActively in progress
BLOCKEDStuck on something
DONEShipped

Transition commands

xpo planned <id>                  # → PLANNED
xpo start <id>                    # → DOING (creates a branch)
xpo blocked <id>                  # → BLOCKED
xpo done <id>                     # → DONE

Or set status directly:

xpo update <id> --status PLANNED

Branching

xpo start does two things: sets the status to DOING and creates a git branch named after the issue. You're switched to the new branch automatically.

xpo start <id>                    # creates branch + switches
xpo start <id> --force            # take over existing branch

Merging

When the work is done, merge the branch back and close the issue in one step:

xpo merge <id>                    # squash-merge + close
xpo merge <id> --ff               # fast-forward only
xpo merge <id> --keep-branch      # don't delete the branch

Review the diff before merging:

xpo review <id>

Blocked issues

An issue with blocked_by relationships cannot move to DOING until all blockers are DONE. See Relationships for details.

Status cascading

Status changes can cascade between parent and child issues through automations — for example, completing all children automatically completes the parent. See Parent & Sub-Issues for details.

In the web board

Drag issues between status columns to transition them. The board view shows issues grouped by status in a Kanban layout.