Statuses and lifecycles
Statuses help teams understand whether work is active, waiting for review, completed, archived, or superseded.
Tickets
Default ticket workflow statuses are:
| Status | Category | Meaning |
|---|---|---|
| Backlog | Todo | Captured but not ready for immediate work. |
| Todo | Todo | Ready to start. |
| In progress | In progress | Work has started. |
| Blocked | In progress | Work cannot continue without intervention. |
| In review | In progress | Work is being checked or accepted. |
| Done | Done | Completed. |
| Canceled | Done | Intentionally stopped. |
| Archived | Done | Hidden 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
| Status | Meaning |
|---|---|
| Active | Project appears in normal project lists and can be used for work. |
| Archived | Project is retained but no longer treated as active work. |
Project visibility is separate from project status. Visibility can be open or restricted.
Docs
| Status | Meaning |
|---|---|
| Active | Page is visible in normal docs views. |
| Archived | Page is hidden unless archived content is included. |
Editing, moving, duplicating, restoring, or safely updating a doc page returns it to active status.
Memory
| Status | Meaning |
|---|---|
| Active | Trusted memory used by search and AI context. |
| Pending review | Candidate memory awaiting review. |
| Superseded | Replaced by newer memory. |
| Archived | Retained 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
| Status | Meaning |
|---|---|
| Pending | Proposed change awaiting review. |
| Approved | Accepted and applied to memory. |
| Rejected | Declined by a reviewer. |
| Auto applied | Applied 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:
| Status | Meaning |
|---|---|
| Generating | Snapshot is being prepared. |
| Pending review | Snapshot is ready for review. |
| Active | Snapshot is trusted as current context. |
| Superseded | A newer active snapshot replaced it. |
Onboarding status can be needed, pending review, or complete.
Decisions and risks
| Record | Common statuses |
|---|---|
| Decision | Proposed, active, archived, or other organisation-defined labels. |
| Risk | Active, 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
| Record | Status | Meaning |
|---|---|---|
| Operating proposal | Pending | Awaiting accept or reject. |
| Operating proposal | Accepted | Reviewer accepted the proposal. |
| Operating proposal | Rejected | Reviewer declined the proposal. |
| Operating question | Open | Waiting for an answer. |
| Operating question | Answered | Answer captured. |
Ticket conflict proposals and roadmap proposals follow the same pending, accepted, rejected review pattern.
Agent Runs
| Status | Meaning |
|---|---|
| Queued | Waiting for a worker slot. |
| Running | Currently processing. |
| Completed | Finished successfully. |
| Failed | Finished 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:
| State | How it is determined |
|---|---|
| Usable | Not accepted, not revoked, and not expired. |
| Accepted | accepted_at is set. |
| Revoked | revoked_at is set. |
| Expired | Current time is after expires_at. |