Board types and columns
On this page
A board's type decides whether anything runs on it by itself. Its columns decide what a card in each place means: who may claim it, which status it carries, where it goes next.
Board types
Type | Used for | Runs by itself? |
|---|---|---|
| Code work that builders claim and build | Yes. A builder polls it, claims Ready cards, builds and opens pull requests |
| Ordinary work tracked by people and agents | No |
| CRM pipelines | No |
| Planned content | No |
Only factory has the claim engine. A factory board must sit in exactly one active project, or every claim on it is refused with board_project_unresolved and nothing is built. A new board is in no project; add it with opvs projects add-board <project-id> <board-id>.
Type and preset are different things
A preset seeds a board's columns when you create it. It does not change the type.
Preset | For type | Columns | Claim-wired |
|---|---|---|---|
|
| Backlog, Ready, Executing, Review, Deploy, Test Live, Propagate, Done, Needs Replan | Yes |
|
| 4 | No |
|
| 9 | Yes |
|
| 5, 6 | No |
|
| 7 | No |
factory-stages sounds like a factory board and is not one: it is a four-column tasks board with no claim engine. For builders, create the board with --board-type factory --column-preset factory-full. A preset that does not belong to the type is refused with 422, naming the valid ones. List them with opvs boards templates.
How the factory-full preset is wired
Backlog ──move──► Ready ──claim──► Executing ──PR──► Review ──► Deploy ──► Test Live ──► Propagate ──► Done
(default) role: builder role: role: role:
orchestrator verifier orchestrator
Needs Replan: the escape hatch (status blocked)New cards land in Backlog, which nothing claims. Move a card to Ready to release it.
A claim from Ready moves the card to Executing automatically.
Every later step is moved by whoever finishes the step. A column's "next column" setting records
the intent; nothing moves a card on it by itself.
Column settings
Setting | What it does |
|---|---|
| Workers whose role is in the list may claim from this column. The list replaces the old one; pass the whole list each time. If no column declares a role, a worker with no role can claim from every column, Backlog included |
| Binds the column to one status. At most one column per status per board; a second is refused with 409 |
| Advisory only. A move into a full column is not refused; |
| Where a claimed card goes. This one is applied |
| Where a finished card should go. Advisory: move the card yourself |
opvs columns list <board-id>
opvs columns update <column-id> --claimable-by-roles builderRetyping an old board
Changing a board's type to factory does not add the claim rules a board created as factory gets. Set a role on the Ready column, then check it with opvs boards health <board-id> --profile factory. See Board health.
Related: Projects, How a card moves.