The task work type
The task work type
Section titled “The task work type”A task is maintenance work — a dependency bump, a security/CVE update, a runtime or framework upgrade, a config migration, a cleanup — filed with
/taskunder thetasklabel. It is the third work type/warp-driveruns, besidereqandbug, and it sits outside the product hierarchy: a sibling ofbug, never a child ofcap.
The problem it solves
Section titled “The problem it solves”Every piece of work BoB drives autonomously used to be one of two shapes.
A requirement is defined by acceptance criteria: testable outcomes, negotiated up front, that describe new behaviour and trace to a parent capability. A bug is defined by a reproduced failure: a regression test that fails before the fix and passes after, tracing to the behaviour it broke.
“Upgrade Node to 22” is neither. It adds no behaviour a user would notice, so there are no acceptance criteria worth writing. Nothing is broken, so there is nothing to reproduce. What it has is a procedure and a verification: make the change, then show the build runs, the tests pass and the deploy smoke-tests clean on the new runtime.
Before task existed, that work went one of two wrong ways. Either it was
forced into a req — inventing checkbox theatre so the groom readiness gate
passed and a parent capability had to be conjured to hold it — or it was filed
as a plain issue that /warp-drive could not see at all, because discovery
admitted only req and bug. Routine upkeep accumulated as manual chores
beside an autonomous loop that could have done it.
What a task is
Section titled “What a task is”req |
bug |
task |
|
|---|---|---|---|
| For | New product behaviour | A defect in delivered behaviour | Keeping the project healthy |
| Definition of done | ## Acceptance Criteria — outcomes that tick |
A regression test, red before and green after | ## Verification — steps that must pass |
| Traces to | A parent capability (Part of #NN) |
The requirement it broke, when known | A trigger — an advisory, CVE, EOL date or release link |
| Parent capability | Required | Not required | Not required |
| Filed by | /requirement |
/report-bug |
/task |
The Verification steps are still - [ ] checkboxes. That is deliberate:
progress counting, /what-next, flight plans and the issue UI all read a task
exactly the way they read a requirement. What changes is how the checkboxes are
interpreted — as runnable checks the loop executes, not as outcomes a human
negotiated.
The body format, actions and labels are the task command reference.
Where it sits in the hierarchy
Section titled “Where it sits in the hierarchy”Vision → Business case → Capability → Requirement → warp-drive chunks (product intent)
Bug — a defect in delivered behaviour ┐ outside the tree:Task — maintenance, prompted by a trigger ┘ no parent capabilityThe cap→req tree exists to trace work back to product intent: why are we
building this, and which capability does it serve? A task has no answer to that
question, and inventing one would be dishonest. It exists because something
outside the product changed — an advisory was published, a runtime reached end
of life, a dependency shipped a release. The Trigger: line in its Notes is its
provenance, the way Part of #NN is a requirement’s.
So a task legitimately has no Part of #NN, and that is a well-formed task, not
an orphan. /groom never flags a parentless task as
an omission and never proposes reparenting it under a capability — doing so
would recreate exactly the checkbox theatre the work type exists to end. Grooming
a task means what it means for any issue: is it ranked, approved, clear, and are
its Verification steps runnable.
How it runs
Section titled “How it runs”A task rides the same warp-drive loop as everything else. The state machine
did not grow a new pipeline: like bug before it (#518), task is a third value
of work_type on the same linear phases, and it varies only two things — the
phase labels an operator reads, and the instruction addendum the agent reads.
- Discovery. An approved
taskis in the queue alongside approvedreqs andbugs, ranked by the same priority rules; flight plans seat it; the/groomreadiness gate exempts it from the acceptance-criteria rule and asks instead for a Verification section. - Execution. The loop reads the Verification section and the trigger first — the steps are the definition of done, the trigger bounds the scope — then performs the change and only the change.
- Verification. In
testing, every Verification step is run exactly as written, on top of the project’s own checks. A failing step is a failed verification — a blockable event, never a pass. - Done. A step is ticked only after it passed. The engine refuses
requirement_donewhile any step is unchecked, and records the verdict onstate.task.
In bob warp status the session reads as what it is: coding shows as
task_executing, testing as verifying and requirement_complete as
task_complete. The mechanics are in the warp-drive
how-to and internals.
What it is not
Section titled “What it is not”- Not a scheduler.
taskis how maintenance work is filed and run; it does not discover that a dependency is stale or an advisory is open. Filing tasks automatically from scanners and advisory feeds is downstream work (the scheduled-maintenance routines, #1544). - Not a loophole for features. If the change alters what a user can do, it
has acceptance criteria and belongs in a
requnder a capability. A config migration that changes documented behaviour still updates the docs, judged per task by the same conditional docs rule a requirement follows. - Not a
todo. Atodois a human action item an agent hands back; a task is agent-runnable work.
Related
Section titled “Related”- Task command — the
/taskcontract - Warp-drive how-to — running a task
- Capability #1956 — the work type’s origin: #1957 (command and label), #1958
(discovery and grooming), #1959 (the engine’s third
work_type), #1960 (docs)