---
title: "A board where In Progress is a grant, not a label"
description: "Five states and two gates. Work cannot start without a spec and declared impact, and cannot close without a manifest and the evidence it names."
url: https://commitcycle.com/board/
language: en
---

# Five states, and the two that check anything

> Five states and two gates. Work cannot start without a spec and declared impact, and cannot close without a manifest and the evidence it names.

The five-state board Shipped

The states are Linear's, on purpose — nobody needs a new vocabulary for work. What is different is that two of the transitions are gates: one will not let work start without a spec, and one will not let it close without evidence.

In the console a task crosses the gate into In Progress, and a zone’s owner answers an access request — for one hour, four, or until the task closes.

## The five

| State       | What it means here                                                                                           |
| ----------- | ------------------------------------------------------------------------------------------------------------ |
| Triage      | One line, from anywhere. A request that has not been scoped is not work in progress                          |
| Todo        | Accepted as work. Nothing is checked on the way in: the four fields are checked at the gate into In Progress |
| In Progress | **The first gate.** A grant exists, bound to one task and one branch, and it expires                         |
| In Review   | Handed in. The zones closed in the same breath the board moved                                               |
| Done        | **The second gate.** A manifest, the evidence the quality gate named, and an audit record                    |

Outside the five sits Canceled: work can be dropped from any state before In Review, and the gate asks why.

One line reached Triage **4.0 seconds** after the click — with the typing scripted, measured once, on 2026-08-04, for one task. Capture is meant to be cheap; it is the two gates that are meant to cost something.

## The task spec: four fields, settled before the gate

The first gate refuses to open without these. They are the design-doc fields, not a ceremony invented here.

- **Goal** — what this should do, in a sentence
- **Non-goals** — what it must not do. This is the field that prevents most accidents: it names the tempting adjacent change before anyone is tempted
- **Affected zones** — which protected areas it needs, which is also the access request
- **Acceptance criteria** — how anyone will know it worked. It becomes the checklist at review

There is no mandatory checklist beyond these four, anywhere in the product, and that restraint was argued for three times with data.

## The gate is a transition, not a command

There is no `open-zone`. Access exists because a task moved, and it is bound to the branch that task named. That matters more than it sounds: **the moment a second door exists it becomes the one everybody uses in a hurry**, and a gate with a bypass command is a suggestion with extra steps.

Closing is the same shape in reverse. The second gate computes a change manifest from the branch — over the connector it takes the agent's reported file list instead, and the record marks it as reported; from the console or a merge, it takes the hand-in's recorded diff or the merged pull request's files as GitHub lists them — asks for the evidence the quality gate names, and writes [the audit record](https://commitcycle.com/audit-record/) last, so it contains everything else.

## Spike mode, for the work that should not survive

Exploration leaves residue: code that shipped because nobody decided it should not. A spike is time-boxed and **disposable by default** — promoted deliberately or discarded, on its own branch: `cycle start` cuts `task/` as for any task, and only a start from the console or the connector gets a `spike/` one. CommitCycle creates no tables of its own: `cycle discard` runs your project's own cleanup command if you configured one, and says so when you have not.

The schema zone stays shut for the whole of it, regardless of what the grant says. It is the one place a `git revert` cannot save you, which is why it is the zone governance setup always proposes.

## Where it stops

- **It is not a better tracker.** Linear and Jira are better boards. If you already have one, intake is one POST with a title, so a bridge you write can file work from it; nothing here syncs with it.
- **The console closes only what it can check.** It closes a task once GitHub has confirmed its pull request merged and the board can name the files; otherwise it refuses and points you to `cycle verify --close` on the branch.
- **An agent can ask the gate; no tool can decide for it.** [The MCP tools](https://commitcycle.com/mcp/) file, scope and — over the connector — ask for a transition; the gate decides by the same rules whoever asks, and no tool approves access.

The states and their transitions are in [the docs](https://commitcycle.com/docs/concepts/the-board/), the model a task declares against is [the zone map](https://commitcycle.com/zones/), and what it leaves behind is [the record](https://commitcycle.com/audit-record/).

## Questions this page answers

### How is this different from Linear or Jira?

The states are deliberately the same — they are Linear's default workflow, mapped one to one. The difference is what a transition does: moving a task to In Progress mints a grant bound to that task and that branch, so In Progress is a permission rather than a label.
