The board and its two gates
Work enters CC through a board with five fixed states: Triage, Todo, In Progress, In Review, Done — plus Canceled. They are the data model, not a preference, and they live in a database CHECK constraint precisely so that there is nothing to add a row to.
The names come from Linear’s default workflow rather than from us. A gate that sits over your tracker should not ask you to learn a fifth vocabulary for the same five things.
The states
Section titled “The states”| State | What it means | How work leaves it |
|---|---|---|
| Triage | A one-line request. Nobody has agreed to it | Scoping it — the four fields |
| Todo | Scoped and accepted, not started | The main gate ↓ |
| In Progress | A grant exists, bound to a branch | cycle submit — or cycle pause, back to Todo, handing the grant back |
| In Review | Work handed in, evidence attached | The closing gate ↓ |
| Done | Closed, with an audit record | — |
| Canceled | Dropped. Kept, not deleted | — |
Only two of those transitions check anything. The rest are bookkeeping, and calling them gates would dilute the word.
The main gate — Todo → In Progress
Section titled “The main gate — Todo → In Progress”This is the one that mints access. It refuses to start work that has not been described:
- The task spec is complete — goal, non-goals, affected zones, acceptance criteria.
- Every declared zone exists in the zone map.
- Any
highrisk zone the task declared has its owner’s approval.
Passing it produces a grant: time-boxed, bound to the task and to a git branch, opening exactly the zones that were declared and nothing else.
There is no command that opens a zone directly. That is the design’s load-bearing property — not a policy, an absence. A back door has to exist before it can be found, and the only route into In Progress runs through the gate.
The closing gate — In Review → Done
Section titled “The closing gate — In Review → Done”The second check asks whether the work can honestly be called finished:
- A change manifest exists — what actually changed, computed rather than claimed.
- The task’s quality gate is satisfied, with evidence attached where one is required.
- Files touched outside the declared zones are surfaced as logged exceptions with an owner, rather than silently accepted.
Closing without knowing what changed is precisely what the gate exists to prevent, so a missing manifest refuses the close rather than warning about it.
Where work enters from
Section titled “Where work enters from”Triage is deliberately cheap to reach. A request that has not been scoped is not work in progress, and making intake expensive is how teams end up with agents running against a sentence in chat.
- The console — measured at 4.0 seconds in-browser for a one-line request.
- The MCP server —
cc_intake, without leaving the session you are already in. - An API endpoint, so a webhook can bridge whatever tracker you use today.
What the board is not
Section titled “What the board is not”It is not trying to replace your tracker. The first version ships its own because mapping five fixed states onto a workflow your team can rename is a per-customer configuration problem wearing a feature costume — and the five states have to stay fixed for the gate to mean anything.