ultraswarm v2.4.2 — High-Risk Path Hardening (closes #13, #14)
The high-risk competition/escalation path now works under the documented config shape and fails cleanly. Verified with two live end-to-end runs.
Fixed
- #13 — high-risk tasks no longer crash with "CLI name must be a non-empty string" when a worker fails early with no alternate, and retries no longer die with "a branch named … already exists". The competition/fallback paths gate on cli usability (a known worker resolvable via
DEFAULT_REGISTRY/overrides, or an explicitregistryentry) instead ofcfg.registryalone — so high-risk tasks actually run under the documentedenabled/overridesconfig (they previously always tombstoned). A missing/self alternate tombstones cleanly; stale worktree branches are pruned before re-creation. - #14 — a dependent of a failed high-risk task is blocked across waves and every task appears in the final report.
Added
- High-risk integration tests + two live runs through
bin(this path never ran live before): a failing high-risk task with a blocked dependent (no crash, complete report), and the full happy path —competing on codex vs grok→ live Sonnet judge → 3-lens Opus adversarial QA →merged ✓. 99 tests.