Repository navigation
🏷️ v0.17.0 — every worker gets a name tag
This one was learned in the field, not designed at a desk. A real /dobby:execute run hit a wall on its very first dispatch, the operator patched the protocol by hand mid-build, and /dobby:learn turned that session into the kit. The headline: the build loop's workers are now addressable per task, and you can watch the whole plan move, step by step, while it runs.
📛 Per-task worker names
The dispatch protocol used to tell the Architect to name every worker dobby:<role>. The Agent tool's name field rejects a : outright, so that first dispatch failed with an InputValidationError every single time, and even if it hadn't, one name per role collides the moment two tasks run in parallel. Workers are now dispatched as test-author-t<id> / implementor-t<id> / qa-t<id> (the subagent_type stays dobby:<role>), every dispatch opens with the task's roster so a worker knows exactly who its siblings are, and a task's three workers are dispatched once: every later round reaches the same name by SendMessage, which resumes the agent with its context intact. No more fresh workers re-reading the world mid-task. dobby spec lint now also checks that a task's # cell is a legal name fragment, so an address can never be malformed by construction.
📊 A live status table after every step
Ask any operator watching a multi-task run what they want and it is this: after every worker verdict and every fix round, the Architect prints one row per task, one column per step, one emoji per cell (⚪ not started · 🔄 in progress · ❌ failed, in fix · ✅ passed · — n/a), with the transitions spelled out so two runs never show the same state two different ways. The closing summary table is unchanged; this is the running view that was missing.
🔁 Fix rounds close themselves
A round used to have a hole in it: QA reported a defect, the implementor fixed it, and nobody said who woke QA back up. Now the fixer messages back by name with the round number. And a corrected test contract always returns through the implementor's Exit gate before QA resumes, because QA never runs the suite, so a contract fix that skipped the gate would have been an unproven done. The test-author agent gained SendMessage to hold up its end of that conversation.
🗂️ Affected areas that match how apps are actually built
spec lint rejected TanStack-style $param route directories as "not a real path", and accepted a not-yet-existing area only when its direct parent already existed. The field workaround was to name whole directories, which made every task overlap and serialised the entire plan. Both rules are relaxed: $ is a legal path character, and a planned path just needs some existing ancestor below the repo root. task-decomposition.md now says it plainly: name files, not directories, from the first draft. Parallelism is back.
⚠️ Two things this release asks of you
- Reload before your next execute.
test-author's tools changed, and Claude Code registers agent tools at session startup. Run/reload-plugins(or open a fresh session), or your test-authors will be mute. - A spec can go red.
dobby spec lintnow rejects a#cell that is not a short[A-Za-z0-9_-]token. Renumber the tasks1, 2, 3…and it passes.
The full walkthrough lives in plugin/skills/upgrade/references/v0.17.md, and /dobby:upgrade walks it for you.
⬆️ Upgrade
bun update @kvnwolf/dobbyThen /reload-plugins, and run bunx dobby spec lint on any live STATE.md before your next /dobby:execute.