ultraswarm v2.4.1 — Runner Hardening (closes #6–#12)
The standalone runner now works end-to-end through its CLI entry path, with every runner issue (#6–#12) closed and the bin seam under test. Started from a grok-CLI WIP branch (that made the runner executable); this finishes the job.
Fixed
- #6 —
--decomposeproduces valid plans (model_tier/riskenums + CLI roster in the prompt, plus normalization somodel_tier:"haiku"→simple,risk:"low"→routine). The documentedenabled+overridesconfig shape resolves worker commands — no hand-craftedregistryneeded. - #7 — external workers get the clean task prompt, not the orchestration wrapper.
- #8 — worker launch failures classified (auth/transport/not-installed/timeout) with actionable hints (
worker grok failed (auth) — run `grok login`); worktree-auth limitation documented. - #9 — no-op / scaffolding-only worker output can no longer pass review or merge.
- #10 — dependents of a failed task are reported
blocked (dependency X did not merge)and never run blind; cascades across waves. - #11 — reports show per-task attempts, a merged/failed/blocked summary with success rate, and token-capture coverage.
- #12 — host scaffolding (
.ultraswarm-plan.json, config,.ultraswarm/,.grok/) no longer leaks into feature commits (mergeWavedrops the redundantgit add -A);.gitignoreupdated. - Silent-task-loss guard — an unknown CLI returns a loud
cli_failedinstead of throwing;binprints a clean error + exit 1 on an invalid plan instead of a stack trace.
Added
- End-to-end-through-
binseam tests (the coverage the v2.4.0 break slipped through), +13 tests overall (96 total).
Verified live: a real task runs worktree → worker → gates → live claude QA review → merge, the report shows the new metrics, and host scaffolding stays out of the commit.