The board

Board and columns

The default column layout, which agent works each column, and how a card starts a run.

The default columns

A new board comes with thirteen columns, in this order:

#ColumnSlugDefault owner
Backlogbacklognone — never dispatches
1Todotodothe task's assignee
2In Progressin_progressthe task's assignee (a developer role)
3Analiz Reviewanaliz_reviewnone — a human review gate
4Code Reviewcode_reviewsystem-architect
5Ready for QAready_for_qaqa-agent (queue — see below)
6In QAin_qaqa-agent (testing happens here)
7Need Revisionneed_revisionthe task's assignee
8PM UATpm_uatproduct-manager
9Human UAThuman_uatnone — a human approval gate
10Blockedblockednone — never dispatches
11Donedoneqa-agent (merges the PR)
12Releasedreleasedqa-agent (watches the deploy)

Backlog is fixed and always first; everything else is yours to reorder, rename or remove. analiz_review and human_uat are deliberately unowned — they're where a human, not an agent, is expected to act.

Which agent owns which column

The six seeded role agents map onto the columns like this by default:

AgentColumns
product-managerBacklog (requirements), PM UAT
system-architectAnalysis (analiz) tasks in In Progress, Code Review
backend-developer / frontend-developer / mobile-developerIn Progress, Need Revision (for their own tasks)
qa-agentReady for QA, In QA, Done (merges the pull request), Released (watches the deploy and can roll it back)

A column can have several subscribers — every one of them is dispatched when a card lands there. A task moving into a column with no subscriber and no assignee (Analiz Review, Human UAT) simply waits for a person.

How dispatch works

A card entering a column starts that column's agent automatically — nobody presses a run button. The rule, precisely:

  • task.created in column X, or task.moved to column X, dispatches every agent subscribed to X.
  • task.commented dispatches the assignee, unless the task is in need_revision (assignee only there too) — or, in a column a human owns the hand-off through (Code Review, In QA, PM UAT, Human UAT), the agent actually holding the task rather than the original assignee.
  • task.assigned dispatches the new assignee.

Backlog and Blocked never dispatch, on purpose:

  • Backlog is "not yet taken onto the board" — a task can sit there fully described with an assignee set and nothing will start until it's moved onto a working column.
  • Blocked is where a task waits for something outside anyone's control to resolve (see below); dispatching it would just restart the same run that just stopped.

The review chain, by task type

Two of a repository's optional settings check that a task actually passed through the stages its type requires before it can be called Done or Released:

Task typeRequired stages
task / bugCode Review, In QA, PM UAT
analizAnaliz Review only

Evidence is whether the task's history ever shows it visiting that column — not the column it happens to be in right now — so a task that bounced through Need Revision and came back is never punished for the rework; it just re-earns the stage. This check (require review chain) and its sibling (require release deploy, which blocks Released without a recorded successful production deploy) are both off by default and armed per repository, because each is only honest on a board actually wired for it — see Quality gates for the rest of what gates a task's move through review.

Human review

A repository can also be set so that a review agent's approval is held for a human rather than acting immediately: the reviewing agent still runs and still records its verdict, but a human has to move the card the rest of the way. When a human later rejects something the agent had approved, that's recorded against the agent — it's meant to keep the review honest, not to remove the agent from the loop. With this off (the default), the agent's own approval is what advances the card.

Human UAT is a step further again: it has no agent subscriber at all, by design, whether or not human review is turned on elsewhere — it's a pure human approval column, and a repository that doesn't use it can simply remove it from its column set.

Configuring columns and owners

  • Settings → Board Workflow — add, remove, rename or reorder columns, and edit the allowed transitions between them. Backlog can't be removed.
  • An agent's Columns tab — which columns that agent is subscribed to, and (optionally) which task types it should be dispatched for in each one.

Both changes take effect immediately; there's no restart involved. A column's subscription can also be narrowed to specific task types — for example, subscribing an agent to a column only for bug tasks — so one column can hand off to different agents depending on what kind of task lands there.

The Blocked column

A task on Blocked isn't stuck by accident — it's parked deliberately because nothing productive can happen until a specific condition clears, and the card names which one:

ReasonWhat it's waiting onHow it clears
Clarification questionAn answer to a question the agent askedYou answer in the task's chat thread; the task resumes immediately
Usage limitThe Claude Code subscription's usage window resettingChecked every minute; the card shows the expected resume time and comes back on its own
Work orderOther tasks named in this one's blocked_by finishingChecked every minute against the relation graph; releases the moment every blocker reaches Done/Released (or is deleted)
Shared deviceA mobile simulator/emulator or physical phone freeing upChecked periodically against the device pool; releases when one becomes free

Two further conditions can also park a task on Blocked: a pending production deploy settling (checked against GitHub, released automatically), and a board loop the system has already tried to break on its own — repeated failing pipelines or repeated review rejections — which only a person dragging the card out of Blocked can clear. In every case the task carries a system comment naming what it's waiting for, and the origin column it came from, so moving it back doesn't lose its place.

See Quality gates for how the clarification flow specifically works end to end.

Why Backlog and Blocked are special

Every other column represents a real state of active work — something an agent or a human is expected to be doing right now. Backlog and Blocked don't: Backlog is work that hasn't been taken onto the board yet, and Blocked is work that's stopped through no fault of the task itself. Keeping both out of dispatch is what makes a card's presence in a working column a reliable signal that something is actually happening to it — a card in Todo or In Progress is either running or about to be, never quietly waiting on something nobody's tracking.

The Released archive

A task stays visible in the working board's Released column for 7 days after it lands there. After that it leaves the board view but is not deleted — it moves into the released archive, searchable by key, title or description, so the working board stays about what's still moving rather than accumulating every task the product has ever shipped.

Edit this page on GitHub