Progress Board
The user should never have to ask "how's it going". A persistent, counted board in your responses gives ambient awareness at zero interaction cost.
The board shape
N tasks (A done, B in progress, C open)
◼ <concrete deliverable> # in progress
◻ <concrete deliverable> # open
…
- Counts up top:
N tasks (A done, B in progress, C open). The delta from last turn is the real signal.
- Glyphs:
◼ in progress · ◻ open · ☑ done. Pick one set and stick with it.
- Collapse the tail:
… +K pending when the board would exceed ~6 visible lines.
Naming rule — deliverables, not verbs
Bad (ambiguous "done"):
Look at the data pipeline
Fix routing
Good (unambiguous "done"):
Build packages/data-ingest data-collection pipeline (OSS stack + fallbacks)
Wire /v1/runs + /v1/data-ingest routers into api
A task is done when the named artifact exists and behaves as the parenthetical constrains it. If you can't phrase the task as a noun + scope + (constraint), the task isn't well-defined yet — refine before adding it to the board.
When to show the board
- At the end of a turn where you started or finished a task.
- When the user asks "what's the status" (then keep showing it on subsequent turns).
- When you're about to switch lanes — the board makes the switch legible.
When NOT to show the board
- Single-step tasks — a board for one item is noise.
- Pure conversational turns with no task progress.
- After every single trivial sub-step — the board tracks user-visible tasks, not internal ticks.
Update discipline
- Move a task to
done only when the artifact exists and you've verified it (smoke-import passed, test green, file written, command succeeded). Not when you've "finished thinking about it".
in progress rule: one active foreground ◼ at a time. A second ◼ is allowed only when it represents a backgrounded long-running operation (a multi-minute build, a long test run, a deploy) that you've parked while doing other work. Two active foreground ◼ means you're context-switching — pick one. When the background op finishes, immediately mark it done or re-foreground it; don't leave a stale ◼.
- If a task grows a sub-board, split it into its own task rather than nesting.
Phased variant — for a large feature
When a single task is large enough that "done" is far away, break it into numbered phases, each with a concrete deliverable, in dependency order, with the last phase explicitly the verify+report gate:
Phase 1: <investigation/audit> → <fixed doc path>
Phase 2: <design (shared vs local)>
Phase 3: <build shared primitive + primary wiring + sibling passes>
Phase 4: Verify, task done, readiness report
Rules:
- Numbered phases — the unit is a phase, not a sub-step.
- Each phase has a named deliverable, often a file path (
docs/reviews/ui-ux-engagement-audit.md). A phase without a deliverable isn't a phase; it's a sub-step.
- Dependency order — audit → design → build → verify. A reviewer can read top-to-bottom and the story makes sense.
- The last phase is the gate — "Verify, task done, readiness report". The validate gate is built into the plan, not an afterthought.
- One
◼ per phase at a time (with the backgrounded-op exception above).
Use the phased board for features spanning multiple phases; use the flat board for ordinary multi-task work.
1---2name: progress-board3description: Maintains a visible, counted, one-line task board for ambient progress awareness. Use when running any multi-step task (3+ steps), when switching lanes, when the user asks for status, or when a long background op runs alongside foreground work.4---56# Progress Board78The user should never have to ask "how's it going". A persistent, counted board in your responses gives ambient awareness at zero interaction cost.910## The board shape1112```13N tasks (A done, B in progress, C open)14◼ <concrete deliverable> # in progress15◻ <concrete deliverable> # open16…17```1819- Counts up top: `N tasks (A done, B in progress, C open)`. The delta from last turn is the real signal.20- Glyphs: `◼` in progress · `◻` open · `☑` done. Pick one set and stick with it.21- Collapse the tail: `… +K pending` when the board would exceed ~6 visible lines.2223## Naming rule — deliverables, not verbs2425Bad (ambiguous "done"):26- `Look at the data pipeline`27- `Fix routing`2829Good (unambiguous "done"):30- `Build packages/data-ingest data-collection pipeline (OSS stack + fallbacks)`31- `Wire /v1/runs + /v1/data-ingest routers into api`3233A task is done when the named artifact exists and behaves as the parenthetical constrains it. If you can't phrase the task as a noun + scope + (constraint), the task isn't well-defined yet — refine before adding it to the board.3435## When to show the board3637- At the end of a turn where you started or finished a task.38- When the user asks "what's the status" (then keep showing it on subsequent turns).39- When you're about to switch lanes — the board makes the switch legible.4041## When NOT to show the board4243- Single-step tasks — a board for one item is noise.44- Pure conversational turns with no task progress.45- After every single trivial sub-step — the board tracks user-visible tasks, not internal ticks.4647## Update discipline4849- Move a task to `done` only when the artifact exists and you've verified it (smoke-import passed, test green, file written, command succeeded). Not when you've "finished thinking about it".50- `in progress` rule: one **active foreground** `◼` at a time. A second `◼` is allowed only when it represents a **backgrounded long-running operation** (a multi-minute build, a long test run, a deploy) that you've parked while doing other work. Two active foreground `◼` means you're context-switching — pick one. When the background op finishes, immediately mark it done or re-foreground it; don't leave a stale `◼`.51- If a task grows a sub-board, split it into its own task rather than nesting.5253## Phased variant — for a large feature5455When a single task is large enough that "done" is far away, break it into numbered phases, each with a concrete deliverable, in dependency order, with the last phase explicitly the verify+report gate:5657```58Phase 1: <investigation/audit> → <fixed doc path>59Phase 2: <design (shared vs local)>60Phase 3: <build shared primitive + primary wiring + sibling passes>61Phase 4: Verify, task done, readiness report62```6364Rules:65- **Numbered phases** — the unit is a phase, not a sub-step.66- **Each phase has a named deliverable**, often a file path (`docs/reviews/ui-ux-engagement-audit.md`). A phase without a deliverable isn't a phase; it's a sub-step.67- **Dependency order** — audit → design → build → verify. A reviewer can read top-to-bottom and the story makes sense.68- **The last phase is the gate** — "Verify, task done, readiness report". The validate gate is built into the plan, not an afterthought.69- **One `◼` per phase at a time** (with the backgrounded-op exception above).7071Use the phased board for features spanning multiple phases; use the flat board for ordinary multi-task work.