Board types and columns

ExplanationUpdated 3 min read
View as Markdown
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?

factory

Code work that builders claim and build

Yes. A builder polls it, claims Ready cards, builds and opens pull requests

tasks

Ordinary work tracked by people and agents

No

emails, contacts, companies, deals

CRM pipelines

No

content_calendar

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

factory-full

factory

Backlog, Ready, Executing, Review, Deploy, Test Live, Propagate, Done, Needs Replan

Yes

factory-stages

tasks

4

No

planner-orchestration-v2

tasks

9

Yes

bug-fix-pool, feedback

tasks

5, 6

No

enrichment

companies

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

claimable_by_roles

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

mapped_status

Binds the column to one status. At most one column per status per board; a second is refused with 409

wip_limit

Advisory only. A move into a full column is not refused; opvs boards health reports it

on_claim_move_to

Where a claimed card goes. This one is applied

on_done_move_to

Where a finished card should go. Advisory: move the card yourself

opvs columns list <board-id>
opvs columns update <column-id> --claimable-by-roles builder

Retyping 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.

Did this answer your question?