Stages and Roles
The eight system stages, the seven roles the platform branches on, the system, org, project and workflow cascade, and mapping tracker statuses to stages with a write status.
Preview. Stages 1.0 is built and merged but not deployed yet. Names, screens and defaults on this page can change before release.
A stage is one step of your process: Icebox, Backlog, Review, or a step you define yourself. Stages replace the older idea of a work type as the thing you configure. You describe your process once as a set of stages, map your tracker's statuses onto them, and decide which cards run in each. The workflow itself stays the same when you add a card or a stage, which is what keeps it small.
Each stage has:
| Field | Meaning |
|---|---|
key | A stable identifier: lowercase words joined by dashes, at most 64 characters. |
| Name and description | What people see. |
| Role | One of seven fixed values the platform branches on. It is set when the stage is created and never changes. |
| Cards | The agent cards that may run in the stage, with one default. See Stage Cards. |
| Outcomes and retry | Where work moves when a run starts, succeeds, fails, is blocked or is closed. See Outcomes and Transitions. |
| Model selection | An optional default model for the stage. See Choosing Models. |
The system stages
Every organization inherits eight system stages. They are not copied into your org: they stay in one place and you override or disable them where you need to.
| Key | Name | Role | Default card | Other cards |
|---|---|---|---|---|
icebox | Icebox | hold | Research | Backlog Writer |
backlog | Backlog | intake | Development | Development Coordination, when the issue has sub-issues |
in-progress | In progress | inflight | none | |
review | Review | review | QA | |
acceptance | Acceptance | review | Acceptance | |
rework | Rework | rework | Development | |
done | Done | done | none | |
closed | Closed | closed | none |
The system stages reference only system cards. The stages carry no tracker status names: which of your tracker's statuses means "Backlog" is something each project says in its status mapping.
Roles
The platform makes decisions from a stage's role, never from its name. That is why you can rename Backlog to "Ready" or add a stage called "Security review" without changing any workflow.
| Role | What it means | Examples |
|---|---|---|
hold | Not scheduled. Nothing runs here automatically. A card runs only when someone mentions it. | Icebox, Waiting |
intake | Ready to be picked up. A status in this stage can start a run. | Backlog, Ready, Triage |
inflight | Being built. | In progress, Active |
review | Being verified. | Review, Acceptance, Verify |
rework | Failed verification and needs another pass. | Rework |
done | Completed. | Done |
closed | Abandoned. | Closed, Canceled, Duplicate |
Two rules follow from the roles:
- A status change dispatches a run only when the issue lands in a stage with the role
intake,inflight,revieworrework. Aholdstage runs a card only on an explicit mention. Stages with the roledoneorclosednever dispatch. - The role cannot be changed on an existing stage, and an override can never set one. Work already in flight keeps its meaning.
Where stages are defined: the cascade
Stage definitions resolve through four scopes, from the broadest to the narrowest:
system -> org -> project -> workflowThe set of stages a project sees is computed from these scopes each time. It is never copied, so a change at the org level reaches every project that has not overridden it.
At each scope you can do three things.
| Action | What it does | Settings button |
|---|---|---|
| Add | Define a new stage with a key, a name and a role. | Add stage |
| Override | Change an inherited stage's name, description, cards, model selection, outcomes or retry. The role stays as defined above. | Customize |
| Disable | Hide an inherited stage at this scope and below. | Disable |
Rules the platform enforces:
- A key can be defined only once in a chain. Defining a key that already exists at or above your scope is refused; create an override instead.
- An override needs a stage with that key defined above it.
- Outcome targets must name stages in the effective set of the scope you are writing, or
stay. - Removing a stage you defined (Remove) or dropping your override (Reset) archives your row. Removing a stage is refused while a tracker's status mapping still points at it.
Fields inherit one by one. A project that overrides only the description of Review still gets the org's outcomes and cards. Outcomes merge per outcome, so a project can change success on one stage without restating the other four.
Each stage in the settings list shows where it stands at the scope you are viewing:
| Badge | Meaning |
|---|---|
| Defined here | This scope owns the stage. |
| Customized here | The stage comes from above and this scope changes something. |
| Inherited | The stage comes from above and this scope changes nothing. |
| Disabled | The effective stage is disabled, wherever that was decided. |
Where to edit
- Organization: Settings, then Stages. Organization admins edit; members see a read-only view.
- Project: the project's Settings, then Stages. Project admins edit; other members see a read-only view. This page also holds the tracker status mapping and the first-run checklist from First-Run Setup.
- Workflow: a workflow can override stages for itself. Workflow-scope rows are written through the project stages API with a
workflowId; the settings pages show the org and project scopes.
Map tracker statuses to stages
A project's tracker has its own status names. The status mapping tells the platform which stage each status belongs to. Each tracker linked to a project has its own mapping, so a project can use more than one tracker.
The mapping has two parts:
- Reading: each tracker status maps to exactly one stage. Several statuses can map to the same stage (for example, both Triage and Backlog to
backlog). Only enabled stages can be mapped. - Writing: reading maps many statuses to one stage, but writing needs a single answer. Every mapped stage therefore names one write status: the tracker status the platform sets when work moves into that stage. The write status must be one of the statuses that map to that stage.
A save is refused with the reason if a status maps to a stage that does not exist or is disabled, if a stage is mapped without a write status, or if a write status is not one of that stage's own statuses.
Example mappings:
| Stage | Platform SDLC (Linear) | Ops-style board |
|---|---|---|
icebox | Icebox | Waiting |
backlog | Triage and Backlog (write Backlog) | Ready |
in-progress | Started | Active |
review | Finished | Verify |
acceptance | Delivered | not mapped |
rework | Rejected | not mapped |
done | Accepted | Done |
closed | Canceled and Duplicate | not mapped |
In the project's Stages page, choose a stage for each status, pick the write status for each mapped stage, and select Save mapping. Saving writes only that tracker's mapping.
An issue whose status is mapped to no stage does not start a run. With the portable template, the platform replies once on the issue asking you to map the project's statuses.
Mapping statuses is a precondition for the portable SDLC template. See Upgrading to the Portable SDLC Template 4.0.0.
What the agent is told about its stage
A dispatch carries a short stage context, and the same text goes into the starting prompt:
- the stage name and role;
- the tracker status the issue was dispatched from;
- the card that runs and why it was chosen (the stage default, a matching condition, a mention, or a card the workflow fixed);
- the issue's parent, and a bounded list of its sub-issues with their statuses.
Tracker text in this block is cut to one line and a fixed length. Issue descriptions are never included.
In the CLI
The CLI shows the same vocabulary. rensei host watch groups the runs waiting under the platform strip by stage and role, in the form Stage name · role, with the dispatched card's handle. When the platform sends no stage for a run, the line falls back to the run's work type. Topology cards use the same label on their issue line. Labels that come from the platform are length-bounded and stripped of control characters before they are drawn in the terminal.
The dispatch-budget reset command renamed its --stage build|review flag to --phase, because a budget phase is a spend bucket and not a workflow stage. --stage still works there as a hidden, deprecated alias that prints a notice, and passing both with different values is refused.
The card listing commands (agent cards list and marketplace browse) also accept a --stage filter. It needs a platform that reports each card's stage, and the dispatch cards route does not report one yet, so the CLI refuses the flag with a message naming it instead of returning an empty list.
API
Org routes accept a browser session, a user token or an org-wide API key. Project routes accept a session or a user token only. Org routes take the organization id and project routes the project id.
| Method and path | Purpose | Minimum role |
|---|---|---|
GET /api/org/{orgId}/stages | The org's effective stages with where each field came from. | Org member |
POST /api/org/{orgId}/stages | Create a stage or an override at org scope. | Org admin |
PATCH and DELETE /api/org/{orgId}/stages/{key} | Edit or archive the org's row for a key. | Org admin |
PUT /api/org/{orgId}/stages/{key}/cards | Replace the org row's stage cards. | Org admin |
GET /api/projects/{projectId}/stages | The project's effective stages. Add workflowId to read a workflow's view. | Project member |
POST /api/projects/{projectId}/stages | Create a stage or an override at project scope, or at workflow scope with workflowId. | Project admin |
PATCH and DELETE /api/projects/{projectId}/stages/{key} | Edit or archive the project's (or workflow's) row for a key. | Project admin |
PUT /api/projects/{projectId}/stages/{key}/cards | Replace the project row's stage cards. | Project admin |
PUT /api/projects/{projectId}/trackers/{trackerId}/status-vocabulary | Set the tracker's status mapping. | Project admin |
GET /api/projects/{projectId}/stages/readiness | The first-run checklist. | Project member |
A PUT to the cards route replaces that scope's full list for the stage. A write that names a model or profile the scope cannot see is answered with 404, and a duplicate card or more than one default is a 400.