Project Board
Overview
The board (board tool) is the shared workspace between you and humans: they see it live as a kanban plus an Evolutions timeline in the Dev workbench, and can edit or report issues at any time. Treat it as the single source of truth for what is done, in progress, and missing. Statuses: backlog → planned → in_progress → review → audit → fix → done, plus blocked.
Tasks form a dependency graph through depends_on. The board derives from it the only three facts you need to decide what to do:
- ready - every dependency is
done, so it can start now.
- blocked - a dependency is unfinished or missing, or a human parked it in
blocked.
- critical path - the longest chain of open tasks. Shortening it shortens the whole project; a high-priority leaf only helps itself.
Discipline
- Ask the board, don't guess:
board next returns the ready queue already sorted (critical path first, then the tasks that unblock the most work, then priority). Pick the top item. Never scan list and eyeball a choice - next is the deterministic contract, and it explains itself when nothing is ready.
- One at a time:
board claim sets you as assignee and moves the task to in_progress. Keep exactly one task in flight per actor; a subagent may hold its own. next tells you what is already in flight.
- Record as you go:
comment findings, decisions, and file references on the task - humans read these. Move to review when a human should check.
- Never close what you did not verify:
done requires evidence when
validation is test, lint, or verify (pass evidence= on move/update).
Also call ledger_progress with the same evidence. If you could not verify,
use review and say why. A wrong done corrupts every downstream ready
computation.
- File what you find: audits and reviews (/inspect, /fortify, /probe…) must convert each confirmed finding into a task -
create with status=fix, severity mapped to priority, and the file path in the description.
- Mission ledger: for multi-step systems use
ledger_init / ledger_progress /
ledger_replan. Prefer local replan; pause on budget/human blockers.
A one-shot (deck, memo, one file, typo) is not a mission: do it now.
Planning an objective
When asked to plan something substantial, decompose before executing:
board plan first - never plan on top of an unknown board.
- Create a milestone per outcome (
milestone_create, with target_date when there is a real deadline).
- Create tasks under it (
milestone_id), each one a single verifiable deliverable with acceptance criteria in the description.
- Wire the order with
depends_on, not with priorities. Priority says how much it matters; depends_on says what is physically impossible before something else. This is what makes the plan executable: the board then computes the ready queue and the critical path for you, and parallel work falls out for free.
- Assign each task to whoever should do it (see below), then report the plan: milestone list, critical path length, what starts immediately.
Keep the graph clean: plan reports dependency cycles and references to unknown tasks. Both make tasks permanently unready, so fix them on sight rather than working around them.
Intelligent assignment
- Subagent: independent, well-scoped task →
spawn with a complete brief (subagents cannot see history), assignee subagent:<label>. The subagent claims, works, comments, and closes its own task via the board tool. Several ready tasks with no dependency between them can run in parallel - that is exactly what the ready queue is for.
- Human: decision, approval, credentials, or anything irreversible → set status
blocked, assignee human:<name>, comment what you need, and notify via message (see human-approval).
- Yourself: sequential or context-heavy work.
Board autonomy (per-project consent)
Projects can enable Autonomy in the Tasks panel (consent stored in
.navin/board/settings.json). When Runtime Context reports it enabled:
- Chain ready tasks inside the run you were invited into (Run agent,
/board task, /forge, /cruise, /mission, or a loop cron) without asking the
user between cards. Stop and notify only on
blocked.
- Git isolation is automatic:
board claim creates and switches to an
isolated navin/task-<id> branch and records it on the task. Commit your
work there; never commit to the branch the user was on.
- PR on done is automatic: moving a task to
done pushes the branch and
opens the pull request (the PR URL lands on the task). Do not merge PRs
yourself; merging stays with the human.
- GitHub issues:
board sync_github imports open GitHub issues as tasks;
board sync_github task_id=<id> creates the mirror issue for one task.
Done tasks with a linked issue close it automatically.
- Destructive git operations (force-push, hard reset, deletes) still require
explicit user approval, autonomy or not.
When autonomy is off, work only the task the user named and ask before
claiming more.
Loop mode
To process the board continuously, create a cron job bound to this session (see cron tool) with a message like: "Process the project board: board next, claim the top ready task, execute it or spawn a subagent, comment the evidence, move it to done or review, then stop. Report only if a human is blocked." Prefer intervals of 15+ minutes; the run defers automatically while the session is busy.
Each cycle is one task, not a marathon: claim, execute, verify, comment, move, stop. Stop the cycle early when next reports nothing ready, and only notify a human when a decision or a blocker actually needs them.
Anti-patterns
- Picking a task by scanning the list instead of asking
next
- Encoding execution order as priorities instead of
depends_on
- Marking
done without verification evidence, or claiming several tasks at once
- Working on something with no board trace when a board exists
- Duplicating tasks instead of commenting the existing one
- Deleting human-created tasks (comment and let humans delete)
- Notifying humans on every tick of a loop - only signal decisions and blockers
1---2name: project-board3description: Work the shared project task board (kanban + dependency-aware plan + milestones + timeline) that humans edit in the Dev workbench - decompose objectives, claim tasks, track progress, file findings, assign to subagents or humans, and run the board in a loop. Use for /board, task tracking, project planning, or when audits produce actionable findings.4---56# Project Board78## Overview910The board (`board` tool) is the shared workspace between you and humans: they see it live as a kanban plus an Evolutions timeline in the Dev workbench, and can edit or report issues at any time. Treat it as the single source of truth for what is done, in progress, and missing. Statuses: `backlog → planned → in_progress → review → audit → fix → done`, plus `blocked`.1112Tasks form a dependency graph through `depends_on`. The board derives from it the only three facts you need to decide what to do:1314- **ready** - every dependency is `done`, so it can start now.15- **blocked** - a dependency is unfinished or missing, or a human parked it in `blocked`.16- **critical path** - the longest chain of open tasks. Shortening it shortens the whole project; a high-priority leaf only helps itself.1718## Discipline19201. **Ask the board, don't guess**: `board next` returns the ready queue already sorted (critical path first, then the tasks that unblock the most work, then priority). Pick the top item. Never scan `list` and eyeball a choice - `next` is the deterministic contract, and it explains itself when nothing is ready.212. **One at a time**: `board claim` sets you as assignee and moves the task to `in_progress`. Keep exactly one task in flight per actor; a subagent may hold its own. `next` tells you what is already in flight.223. **Record as you go**: `comment` findings, decisions, and file references on the task - humans read these. Move to `review` when a human should check.234. **Never close what you did not verify**: `done` requires evidence when24 `validation` is `test`, `lint`, or `verify` (pass `evidence=` on move/update).25 Also call `ledger_progress` with the same evidence. If you could not verify,26 use `review` and say why. A wrong `done` corrupts every downstream `ready`27 computation.285. **File what you find**: audits and reviews (/inspect, /fortify, /probe…) must convert each confirmed finding into a task - `create` with `status=fix`, severity mapped to `priority`, and the file path in the description.296. **Mission ledger**: for multi-step systems use `ledger_init` / `ledger_progress` /30 `ledger_replan`. Prefer local replan; pause on budget/human blockers.31 A one-shot (deck, memo, one file, typo) is not a mission: do it now.3233## Planning an objective3435When asked to plan something substantial, decompose before executing:36371. `board plan` first - never plan on top of an unknown board.382. Create a milestone per outcome (`milestone_create`, with `target_date` when there is a real deadline).393. Create tasks under it (`milestone_id`), each one a single verifiable deliverable with acceptance criteria in the description.404. **Wire the order with `depends_on`, not with priorities.** Priority says how much it matters; `depends_on` says what is physically impossible before something else. This is what makes the plan executable: the board then computes the ready queue and the critical path for you, and parallel work falls out for free.415. Assign each task to whoever should do it (see below), then report the plan: milestone list, critical path length, what starts immediately.4243Keep the graph clean: `plan` reports dependency cycles and references to unknown tasks. Both make tasks permanently unready, so fix them on sight rather than working around them.4445## Intelligent assignment4647- **Subagent**: independent, well-scoped task → `spawn` with a complete brief (subagents cannot see history), assignee `subagent:<label>`. The subagent claims, works, comments, and closes its own task via the `board` tool. Several ready tasks with no dependency between them can run in parallel - that is exactly what the ready queue is for.48- **Human**: decision, approval, credentials, or anything irreversible → set status `blocked`, assignee `human:<name>`, comment what you need, and notify via `message` (see `human-approval`).49- **Yourself**: sequential or context-heavy work.5051## Board autonomy (per-project consent)5253Projects can enable Autonomy in the Tasks panel (consent stored in54`.navin/board/settings.json`). When Runtime Context reports it enabled:5556- **Chain ready tasks** inside the run you were invited into (Run agent,57 /board task, /forge, /cruise, /mission, or a loop cron) without asking the58 user between cards. Stop and notify only on `blocked`.59- **Git isolation is automatic**: `board claim` creates and switches to an60 isolated `navin/task-<id>` branch and records it on the task. Commit your61 work there; never commit to the branch the user was on.62- **PR on done is automatic**: moving a task to `done` pushes the branch and63 opens the pull request (the PR URL lands on the task). Do not merge PRs64 yourself; merging stays with the human.65- **GitHub issues**: `board sync_github` imports open GitHub issues as tasks;66 `board sync_github task_id=<id>` creates the mirror issue for one task.67 Done tasks with a linked issue close it automatically.68- Destructive git operations (force-push, hard reset, deletes) still require69 explicit user approval, autonomy or not.7071When autonomy is off, work only the task the user named and ask before72claiming more.7374## Loop mode7576To process the board continuously, create a cron job bound to this session (see `cron` tool) with a message like: "Process the project board: `board next`, claim the top ready task, execute it or spawn a subagent, comment the evidence, move it to done or review, then stop. Report only if a human is blocked." Prefer intervals of 15+ minutes; the run defers automatically while the session is busy.7778Each cycle is one task, not a marathon: claim, execute, verify, comment, move, stop. Stop the cycle early when `next` reports nothing ready, and only notify a human when a decision or a blocker actually needs them.7980## Anti-patterns8182- Picking a task by scanning the list instead of asking `next`83- Encoding execution order as priorities instead of `depends_on`84- Marking `done` without verification evidence, or claiming several tasks at once85- Working on something with no board trace when a board exists86- Duplicating tasks instead of commenting the existing one87- Deleting human-created tasks (comment and let humans delete)88- Notifying humans on every tick of a loop - only signal decisions and blockers