Painting by Salvatore Colacicco - Pair of marine paintings of Royal Navy warships
This release consolidates everything shipped since v2.2.1, including the work that was version-bumped as v2.2.2 in source but never tagged on GitHub.
Features
- Phase-aware recovery after
/compact— Nelson is now resumable at every phase boundary. The recovery briefing also surfaces fleet-status staleness so a relieving admiral can spot a stale handoff. - Estimate phase split into subagents (#111, #114) — Q2–Q3 and Q4–Q7 now run as separate Estimate subagents in SKILL.md Step 2, with split-dispatch and
pulling-the-oarwiring. Model-selection guidance carves the Estimate phase out from generic cost-savings advice. pulling-the-oarstanding order (#111) — codifies the anti-pattern where the admiral does work that should be delegated.- GitHub star prompt at Stand Down (#117) — one-time prompt asking users to star the repo, with hardened preflight checks.
- Restored TaskCreate captain-misuse enforcement via an admiral session marker (#119), replacing the mode-check hook removed in #112. The session marker uses a fail-open posture so a missing or unreadable marker never blocks legitimate work.
- Fleet-status freshness — new event constants and a staleness threshold;
cmd_eventnow updates fleet-status for state-changing events (#114).
Fixes
- Squadron shape validation in
form— the compositeformcommand used to crash with aTypeErrorwhenadmiral,red_cell, or a captain entry inplan-input.jsonwas a bare string instead of an object, after tasks had already been registered._validate_plan_jsonnow checks the squadron sub-document fully and emits a clear error with an example of the expected shape. - Mission lookup picks the most recent active mission (#114) — older active markers no longer shadow a newer mission.
- Dedupe active-mission markers by resolved path — symlink and trailing-slash variants of the same path no longer produce duplicate markers.
- Removed contradictory TaskCreate mode-check hook (#112) — the hook fought against the documented admiral-uses-TaskCreate exception.
Refactors & Docs
- Threaded the event index from
_append_eventand deduped progress arithmetic. - README refreshed for accuracy; redundancy trimmed.
- Documented fleet-status freshness fields and the staleness warning.
Commits since v2.2.1
634f445fix: mission lookup picks the most recent active mission (#114)9df7000feat: add fleet-status event constants and staleness threshold651b38dfeat: cmd_event updates fleet-status for state-changing events (#114)78bc3f2feat: recovery briefing surfaces fleet-status staleness (#114)562eb79feat: add pulling-the-oar standing order (#111)d15260fdocs: model-selection — Estimate phase carved out from cost-savings (#111)de2b2ebfeat: split Q2-Q3 and Q4-Q7 into Estimate subagents (#111, #114)cc5f759feat: SKILL.md Step 2 split-dispatch + pulling-the-oar wiring (#111, #114)e05566edocs: document fleet-status freshness fields and staleness warningc449ef3fix: dedupe active-mission markers by resolved path62ba0c6refactor: thread event index from _append_event, dedupe progress arithmetic7fb028bfix: remove TaskCreate mode-check hook that contradicts admiral exception (#112)2317485docs: refresh README accuracy and trim redundancy208cfc0feat: make nelson resumable after /compact at every phase boundaryd7a61abrefactor: address self-review fixes for phase-aware recovery26ae592feat: restore TaskCreate captain-misuse enforcement via admiral session marker7a1117cfix: tighten admiral session marker fail-open postureb992488feat: add one-time GitHub star prompt at Stand Downb68cdd4fix: harden star prompt preflight and reposition README notee41ec0efix: validate squadron shape in plan JSON before forming