The board
The board is the one shared source of truth: you and the dispatcher both read it and write to it. Tasks are issues in one Linear project, scoped by milestone and ranked by the board's manual order. Your team can name the columns anything; the config maps each name to its role. The colours are the ones Linear paints the states in.
The seven states
| State | Means | Who moves a task here |
|---|---|---|
| Backlog | not yet | you |
| Ready | go; never worked | you |
| In Progress | an agent has it | the dispatcher |
| Changes Requested | sent back; the same PR gets more commits | the reviewer, or your review on the PR |
| Question | waiting on a decision only you can make | the agent that got stuck |
| Human Review | a PR is waiting for you | the dispatcher, after a passing review |
| Done | merged | your merge |
Five rules worth remembering
- Only you move a task out of
BacklogorQuestion. Answer a question by replying on the issue, then move it toReady(nothing built yet) orChanges Requested(a PR exists). - Merging is what makes a task
Done. No agent merges or writesDone. Changes Requestedis rework, not a restart. The next developer adds commits to the existing PR, and it goes ahead of everyReadytask.- One task is one PR. Steps inside a task are a checkbox list in the issue description; the developer ticks them as it goes.
- Order is priority, milestones are scope. Reorder the board to change what happens next; the dispatcher only touches the milestones you named.
Two labels also steer a task: Confirm with user means "ask me before
starting", and UI marks design-sensitive work.
Who is holding a task
-
The agent shown in Linear's assignee field (the developer agent or the reviewer agent) says which phase the task is in.
-
The claim is one comment on the issue naming the session working it right now, with a timestamp that is refreshed while the work runs:
**[developer]** claimed 2026-08-27T14:05Z · `claude --resume <session-id>`If the timestamp stops moving for 90 minutes the session is presumed dead and the next dispatcher takes the task over. Paste the
claude --resumecommand to open that session.
Taking a task yourself
Assign the task to yourself in Linear and leave the agent empty: pick yourself as the assignee and No agent as the agent. A task with a person assigned and no agent is human-owned, and the dispatcher skips it in every state.
- Do not take over a task an agent is on. While its claim is fresh the dispatcher re-asserts the agent every round, so a hand-removed agent comes back. Take a task when its claim comment is gone or stale, or stop the loop first.
- Your name alone is not the signal. Delegating to an agent also puts the dispatcher's account in the assignee field, so an agent-held task can show your name too. Yours means your name and no agent.
- Hand it back by clearing yourself as assignee and moving it to
ReadyorChanges Requested. If your own PR merges, the task completes like any other. - To have the loop check with you before an agent starts a task, use the
Confirm with userlabel instead of assigning yourself.
That is everything you need to use the dispatcher. Setup is under Get started; the full rules are in the System breakdown.