Skip to content

0.6.0

Cut on 2026-09-15. Every component is tagged v0.6.0 in lockstep; coxswain-tools is published to PyPI from that tag. Status: beta; nothing here breaks a 0.5.0 install. This release closes two of the seven intake groups planned on 2026-09-08 — G1, the observed record, and G2, the landing model — across all three code components, plus the tools half of G3, work shape. Two things change what you see: work items can read state: approved or dropped, and a run's record carries what the harness observed rather than what the seat reported.

coxswain-graphs

  • Every call appends to runs/<run>.calls.jsonl as it completes, so a run that dies mid-flight still has a ledger (graphs #65, #68); files_touched and commands_run are derived from the runner's own trace, never from the model's summary (graphs #71).
  • A quarantine has a kind — refused, unverified (patch kept), infra (patch kept, attempt not counted), dropped — on the record and on the work item's attempt history (graphs #67).
  • A stale phase branch is recreated from the default branch instead of blocking the run; done + dropped completes a phase (graphs #69); collected_ids and coverage_floor_holds gate the trim (graphs #70); one style_pass trim runs per phase and is refused when it drops a collected test id or fails a check (graphs #77).
  • lint_tickets' coupling rule is clean for a pair ordered by needs, transitively (graphs #74); the worktree library (prune_registrations, remove_worktree, keep_worktree) lands ahead of the exit-path wiring (graphs #72); the four static ticket rules exist as a pure function (graphs #76).
  • Design specs committed under docs/design/: observed record (graphs #62), landing model (graphs #63), work shape (graphs #66), validator reach, cost bounds, triage (graphs #75). ruff is a dev dependency (graphs #64).

coxswain-tools

  • cox runs recover <run> <task> --repo PATH merges an approved, escalated commit into its phase branch — the remedy every escalated run had named since 0.5.0 (tools #132).
  • cox runs land plans from the run's own paths (tools #124), lands a whole phase off its epic branch (tools #125), runs the repository's configured checks in a fresh worktree and names the failing check and its tail (tools #130); route treats dropped as terminal and never ready (tools #131).
  • cox route launch sweep (tools #126), cox route lint with the four static rules (tools #127) and cox route groups (tools #129).
  • cox stats ingest reads calls.jsonl and trace-recovered figures (tools #116), anchors events to their run (tools #120), classifies outcomes by kind (tools #117), rolls call cost up to tasks so cost_per_landed is real (tools #115); cox stats coverage reports known/total provenance rows (tools #121).
  • release-check gains the pages and readmes checks (tools #114, #118). ruff is a dev dependency (tools #122).

coxswain-cartridges

  • record_attempt takes kind and patch_kept (cartridges #56); dropped is a work-store state (cartridges #58); landing_areas.checks is what a build worktree and a land both run, and a project layer may declare its own list (cartridges #59, #68); approved is a work-store state for built, reviewed work whose merge awaits a person (cartridges #67).
  • The dispatch schema's shape discipline, the consolidate write kind and the sweep ceilings (cartridges #62, #63, #64); the three arms carry the reviewers' ceiling so a bookkeeping step cannot kill an approved task (cartridges #65). Specs: landing model (cartridges #57), work shape (cartridges #61), cost bounds and triage (cartridges #66).

Known gaps

release-check reported 48 drifts on a clean tree, all false; this release was cut with --allow-doc-drift. G6 fixes the checks. The fix loop can spend a third build it never reviews; filed.

Components

coxswain-graphs, coxswain-tools and coxswain-cartridges carry the changes above; coxswain carries the manifest and these notes (#39). coxswain-crew is unchanged since v0.4.0 and is tagged in lockstep.