v4.0.1
What's Changed
Bug Fixes
- Council abort now cascades to all sub-waves: Previously,
amicus abortonly targeted the primary wave per stage, leaving retry chains, lens solos, critic legs, and repair re-prompts to be killed only by process-tree fallback. Stages now record every sub-wave in awaveIdsarray at launch time, and the abort cascade marks all of them for accurate per-leg audit trails andlegsAbortedcounts. Lens mode no longer advertises a phantom-s1wave that never launches. - Council status now counts legs across all sub-waves: The status command was undercounting legs by only reading the primary
waveIdper stage, reportinglegsTotal: nullfor lens runs and omitting critic legs. It now rolls up all sub-waves, giving accurate leg counts that may rise mid-stage when bounded repair re-prompts launch. - MCP-spawned council runs are now recoverable if they die early: A council run spawned via
amicus_council_runthat crashed before its first checkpoint left a pid-lessrunningrecord invisible to crash detection and unrecoverable to the process fallback. The MCP handler now captures and writes the spawned child's pid to a separatespawn.pidfile immediately, letting bothamicus statusandamicus abortfind it even ifrun.jsonhasn't been checkpointed yet. - Malformed wave metadata no longer crashes status or abort: Both commands assumed
metadata.json'slegsfield was an array if present, raisingTypeErroron half-written or corrupted records. They now treat non-arraylegsas no legs and guard the wave-level abort mark so a failure there cannot discard already-counted legs.
Documentation
- Council run directory layout documented: Added guide to the MCP-only files (
briefing.md,spawn.pid) and clarified whyspawn.pidis a separate file rather than a field inrun.json(to avoid cross-process checkpoint races). - Release roadmap updated: Established that each version from v4.1 onward includes a README and docs update line item, ensuring release documentation ships with the feature rather than deferring it.
Full Changelog: v4.0.0...v4.0.1