Skip to main content

Statuses and lifecycles

Statuses help teams understand whether work is active, waiting for review, completed, archived, or superseded.

Tickets

Default ticket workflow statuses are:

StatusCategoryMeaning
BacklogTodoCaptured but not ready for immediate work.
TodoTodoReady to start.
In progressIn progressWork has started.
BlockedIn progressWork cannot continue without intervention.
In reviewIn progressWork is being checked or accepted.
DoneDoneCompleted.
CanceledDoneIntentionally stopped.
ArchivedDoneHidden from active work views.

Projects can customize workflow labels, order, categories, board mappings, and restricted transitions. Projects can also map different ticket types to different reusable workflows, so bugs, stories, epics, tasks, and subtasks can each follow the lifecycle that fits that work.

A ticket's issue type decides which workflow statuses are valid for that ticket. Ticket create/edit forms, ticket action menus, and board moves use the resolved issue-type workflow. If a ticket changes type and its current status does not exist in the new workflow, TOW remaps the status by category when possible.

Workflow status keys are project-wide. If the same key appears in multiple workflows, it must keep the same label and category everywhere.

A workflow must keep statuses that are already used by tickets or mapped by boards.

Status aliases such as open, doing, completed, closed, and cancelled are normalized to workflow statuses when possible.

Projects

StatusMeaning
ActiveProject appears in normal project lists and can be used for work.
ArchivedProject is retained but no longer treated as active work.

Project visibility is separate from project status. Visibility can be open or restricted.

Docs

StatusMeaning
ActivePage is visible in normal docs views.
ArchivedPage is hidden unless archived content is included.

Editing, moving, duplicating, restoring, or safely updating a doc page returns it to active status.

Memory

StatusMeaning
ActiveTrusted memory used by search and AI context.
Pending reviewCandidate memory awaiting review.
SupersededReplaced by newer memory.
ArchivedRetained but excluded from normal active context.

Superseding memory sets a valid-to timestamp and can link to replacement memory. Archiving memory also sets a valid-to timestamp.

Memory diffs

StatusMeaning
PendingProposed change awaiting review.
ApprovedAccepted and applied to memory.
RejectedDeclined by a reviewer.
Auto appliedApplied automatically by a trusted path.

Memory diffs appear in the Inbox and Memory Diffs views when they need attention.

Snapshots and onboarding

Snapshot statuses include:

StatusMeaning
GeneratingSnapshot is being prepared.
Pending reviewSnapshot is ready for review.
ActiveSnapshot is trusted as current context.
SupersededA newer active snapshot replaced it.

Onboarding status can be needed, pending review, or complete.

Decisions and risks

RecordCommon statuses
DecisionProposed, active, archived, or other organisation-defined labels.
RiskActive, mitigated, accepted, archived, or other organisation-defined labels.

The app stores these status values as text so teams can use the labels that match their operating model. Active decisions and active risks are favored in AI context.

Operating proposals and questions

RecordStatusMeaning
Operating proposalPendingAwaiting accept or reject.
Operating proposalAcceptedReviewer accepted the proposal.
Operating proposalRejectedReviewer declined the proposal.
Operating questionOpenWaiting for an answer.
Operating questionAnsweredAnswer captured.

Ticket conflict proposals and roadmap proposals follow the same pending, accepted, rejected review pattern.

Agent Runs

StatusMeaning
QueuedWaiting for a worker slot.
RunningCurrently processing.
CompletedFinished successfully.
FailedFinished with an error.

Completed and failed job status is retained for a configurable period.

Invites

Invites do not use a single status field. Their lifecycle is derived from timestamps:

StateHow it is determined
UsableNot accepted, not revoked, and not expired.
Acceptedaccepted_at is set.
Revokedrevoked_at is set.
ExpiredCurrent time is after expires_at.