Release notes: BoB 1.282.0
BoB 1.282.0 — release notes
Section titled “BoB 1.282.0 — release notes”Released: 2026-10-12 · Tag: v1.282.0 · Previous: 1.281.0 (2026-10-11)
Highlights
Section titled “Highlights”- The warp monitor tells you what matters first.
bob warp vizopens on what needs you, in large type, with a phase map and the full graph one click down. It also shows running workflows, background agents and how long the run sat idle between items. (#4352, #4394) - Parallel work keeps itself moving. A forked flight plan starts the next items as soon as the item blocking them lands, up to a cap (
_workflow.fork_max_parallel, default 4).bob warp reapsaves each pane’s scrollback before it kills a session. (#3550, #3552) - Swarms are safer and fail smaller. Each worker gets its whole brief, written to a file with a size budget. One failed unit is sent back with a return record while its independent siblings keep merging. Each unit is graded by blast radius: contained merges on its own, wide merges only if it passes on the first try, and hard-to-reverse waits until you approve it (one to-do per run lists them all). The splitter learns standing rules from units that were sent back. (#3557, #4301, #4302, #4303)
- Big sweeps stop on their own and add up. Discovery runs rounds until two in a row find nothing new, a token budget runs out or a round cap is hit (default 5), and says which. Large result sets are summarised in batches and then combined, with anything dropped named. (#4304, #4305)
- Level 3 can finish onto a protected main. When the manifest says main is protected for admins,
bob warp finalizeopens one pull request and lets merge-on-green land it, instead of pushing to main. (#4184) - Credentials for other machines.
bob route mint --machine <other>mints a model-route key for another fleet machine and stores it there; on Linux the key is read from a mode-600 file. Newbob cloudflare mintandbob cloudflare verifycommands make and check a machine’s Cloudflare working token — they have not yet been run live on macbook-pro-16 (see Known issues). (#4299, #3583) - A security-hunting skill and a stricter skill gate. Cloudflare’s security-audit skill is in the registry as
vuln-hunt, with a locked-down Docker sandbox to run it in. A skill change now passesbob eval gateonly when it scores better with the skill than without it and its trigger rate does not drop. (#2668, #4259)
- Master CI went green again during this release. The test job runs suites three at a time instead of taking 20 minutes on one core.
bob forkwindows read without a UTF-8 locale,bob fork watchdispatches again, test shells no longer read your zshrc, and several stale or platform-bound tests pass on macOS, Linux and from a worktree. (#4351, #4369, #4354, #4355, #4209, #4210, #4356) - Warp viz and
bob warp startin a linked worktree print the URL that shows that worktree’s run, not the main checkout’s. (#4313) - The session-branch guard no longer blocks pushes in other repos or trips on text that merely mentions git: it judges each real git call in the repo it runs in. (#4366)
- Warp-drive: a chunk whose commit lands in another repo, or that needs no diff, can leave committing. (#4158)
- A retired hook gets one verdict from
bob doctorand the reconcile, and the deploy removes it, instead of doctor asking for a prune that never came. (#4135) - Backups: the backup Worker’s token is now documented as D1 Edit (the export API refused a Read token, so every nightly run failed),
bob backup statusnames a run that errored instead of saying “no backup yet”, andbob backup restorecounts rows on databases with many tables. A passing restore is now recorded, sobob backup statusshows the last drill. (#4201, #4266) bob servenames the exactsudo tailscale servecommand when a file handler that is not BoB’s blocks the write. (#2407)- The fleet view reads farm-01’s published snapshot instead of timing out, so farm-01 no longer shows as
never. (#3609) bob readyfinds the BoB source without aBOB_SOURCEexport, so a new operator is no longer told NOT READY. (#2273)- Cap-status reopens and labels a cap that was closed as completed without the
completedlabel. (#4297) - A shipped area’s news brief with no priority passes the brief-label check. (#1752)
Upgrade: every machine
Section titled “Upgrade: every machine”Close every Claude Code window on the machine first. A deploy refuses while a session is live (it would switch off the hooks in running sessions); a refused deploy is queued and runs when the last session ends.
A laptop (dev-laptop)
Section titled “A laptop (dev-laptop)”bob update --to v1.282.0bob doctorA farm worker (farm-worker)
Section titled “A farm worker (farm-worker)”bob update --to v1.282.0bob doctorA machine (utility-host)
Section titled “A machine (utility-host)”bob update --to v1.282.0bob doctorExpected: bob doctor ends green, and its version line names v1.282.0.
Then restart the dashboard (any machine that runs it)
Section titled “Then restart the dashboard (any machine that runs it)”The dashboard server keeps the code it started with, and this release changes the warp monitor. On a machine with the always-on dashboard service, restart it so it loads the new code:
node ~/.claude/scripts/dashboard/viz-service.js restartnode ~/.claude/scripts/dashboard/viz-service.js statusExpected: status reports the service running. A project with its own dashboard unit takes --name <project> on both commands. If status says no service is installed, go on to the next step.
Then stop dashboards started by hand (a machine without the service)
Section titled “Then stop dashboards started by hand (a machine without the service)”Dashboards opened with bob warp viz or bob dash serve also keep the old code. On a machine where status said no service is installed, stop them all, then open the one you want again:
bob dash serve --stop --allbob warp viznode ~/.claude/scripts/lib/dashboard-servers.js listExpected: no line in the list says started before the current deploy. If one does, run the Fix: command printed on that line.
Upgrade: every project
Section titled “Upgrade: every project”In each project checkout on each machine:
cd <project> && bob readyExpected: READY — <project> is warp-drive-ready on this machine.
Action needed
Section titled “Action needed”Only for a project with a D1 backup Worker. If its token was made with D1 Read, every nightly backup has been failing. Check, and if bob backup status names an errored run with Authentication error, replace the token with a Cloudflare API token that has Account · D1 · Edit on that project’s account, then take a backup to prove it. (#4201)
cd <project> && bob backup statuswrangler secret put D1_REST_API_TOKEN --config backup-worker/wrangler.jsoncbob backup runbob backup statusExpected: the last bob backup status reports the backup fresh.
Breaking changes
Section titled “Breaking changes”None.
Known issues
Section titled “Known issues”- The Cloudflare working token commands exist, but the live mint and verify on macbook-pro-16 have not been run, so full access is not yet proven. (#3583, to-do #4386)
- Clean-install acceptance has not passed yet. The acceptance script, the leak scan and the new-operator how-to shipped, but the leak scan still finds operator names in the deployed docs. (#2273, #3431, #4224)
- The portfolio sweep is still open: new rows need their interview, and the Fleet removals are pending. (#3609)
Changes
Section titled “Changes”Full change list — 55 commit(s)
Features
Section titled “Features”- L3 finalize lands a protected main branch through a PR + merge-on-green (#4184) (baecc8a)
- branch-protection lists finalize as a route by the same decision (#4184) (87ca755)
- vendor Cloudflare’s security-audit skill as registry/skills/vuln-hunt (#2668) (2577641)
- vuln-hunt Docker sandbox helper and the evaluation note (#2668) (1526406)
- eval gate enforces with-beats-without and a non-dropping trigger rate (#4259) (5afba2d)
- gate –record keeps trigger_rate in baseline.json; docs say the rule is enforced (#4259) (8bcf9bb)
- bob fork watch starts the plan items a landed item was blocking, under a fork cap (#3550) (a96f03e)
- swarm worker briefs written to .swarm/briefs/ with a line budget (#3557) (eec979c)
- bob cloudflare mint makes this machine’s working token from the root token, and bob cloudflare verify proves it (#3583) (fe3084b)
- both swarm lanes hand the worker its whole brief (#3557) (0c60d92)
- bob cloudflare verify –write proves the token writes here and is refused elsewhere, and a refused mint files one todo (#3583) (14cb7cb)
- check-operator refuses an account naming an undeclared credential, and the inventory lists both Cloudflare tokens (#3583) (da1564e)
- reap and segment teardown save each pane’s scrollback before the kill (#3552) (2644bc9)
- scrollback logs are a reap surface kept for a week, ignored and documented (#3552) (5cb2671)
- bob route mint stores another machine’s key over Tailscale SSH; the working key reads from a mode-600 file (#4299) (51bf23f)
- swarm integrate returns a failed unit with a return record and keeps merging its siblings (#4301) (1eb3d6f)
- held dependents of a returned unit, and run.js summary lists returns and the merged-despite count (#4301) (ba48ef1)
- a failed result gate writes a return record, capped at 3 corrections then needs-attention (#4301) (07b6751)
- blast-radius.js classifies a swarm unit contained / wide / hard-to-reverse from its diff (#4302) (e5e8e10)
- integrate gates each swarm unit on its blast-radius lane and files one todo per run for hard-to-reverse units (#4302) (d97930c)
- run.js summary shows every swarm unit’s blast-radius lane (#4302) (509ed5b)
- integrate records each cutting failure as a splitter constraint in loop-notes (#4303) (8b79e64)
- decompose.js scaffold prints the project’s standing splitter constraints, newest first (#4303) (1a604fe)
- until-dry.js dedupes every round against all seen findings and stops on dry, max-rounds or budget (#4304) (2dd0dac)
- discovery-sweep.workflow.js runs finder rounds until dry, budget or max-rounds (#4304) (ad9267a)
- fan-in.js batches a large result set, summarizes per batch, combines, and names what was dropped (#4305) (e481451)
- research-sweep and multi-file-review layer their fan-in above args.batchSize and report dropped results (#4305) (26a0971)
- warp viz answers needs-you first, in large type, with the full graph one click down (#4353) (#4352, #4353) (384c4f8)
- clean-install acceptance script, leak scan and the new-operator how-to (#2273) (82c6d4e)
- warp viz shows running workflows, background agents and idle time between items (#4394) (2475e6a)
Bug Fixes
Section titled “Bug Fixes”- master green — cdfork windows read without a UTF-8 locale, and five stale tests (#4351) (#4351) (1e49124)
- bob serve names the sudo command when a non-BoB file handler blocks the write (#2407) (5febc1d)
- master green — restore bob fork watch dispatch, and keep test shells off the operator’s zshrc (#4369) (0939566)
- bob ready finds the BoB source without a BOB_SOURCE export (#2273) (cd65039)
- a retired hook is one verdict in doctor and the reconcile, and deploy removes it (#4135) (82847b4)
- bob backup restore counts rows without a compound SELECT, and records the drill (#4266) (4192b10)
- a fleet pull reads the remote’s published snapshot first, so the view sees farm-01 (#3609) (a4f1e50)
- check-brief-labels accepts a shipped area’s news brief with no priority (#1752) (d475c74)
- a chunk whose commit is in another repo, or that needs no diff, leaves committing on verified evidence (#4158) (082f5b7)
- the backup token is D1 Edit, and bob backup status names an errored run (#4201) (3ffdd9a)
- test-control-decompose-session passes on Linux, where a node process is named MainThread (#4209) (155ba98)
- test-viz-service-launch passes from a linked worktree (#4210) (ad74ffe)
- cap-status reopens and labels a cap closed as completed without the completed label (#4297) (80e6c2e)
- warp viz and warp start in a linked worktree print the URL that shows that worktree’s run (#4313) (c8a53c8)
- test-fleet-serve’s doctor cases pass when the shell exports BOB_HOME (#4356) (0cd5035)
- session-branch-guard judges each git call in the repo it runs in, and only real calls (#4366) (c6f8b2b)
Performance
Section titled “Performance”- ci: run the test suites three at a time — the test job was 20 minutes on one core (#4354) (#4354) (e623119)
Documentation
Section titled “Documentation”- cdfork and flightplan how-tos describe self-dispatching fan-out and the fork cap (#3550) (474c127)
- swarm-decompose and graph-orchestration name the brief field and its budget (#3557) (f7a0136)
- model routes document minting for another machine and the Linux key file; the inventory lists farm-01’s working key as a file (#4299) (bef31fa)
- design: warp viz redesign — reference mock and build spec (3798a5b)
- pipefail-sigpipe runs alone — it failed only beside other suites in the parallel CI run (#4355) (#4355) (5a8144b)
- finalize’s one-PR check passes on macOS (BSD wc pads its count) (#4184) (33e7c64)