Skip to content

2026.10.0

Cut on 2026-10-19. Status: beta. The first monorepo release, and the first with a CalVer number. Coxswain is now one repository, ppfenning/coxswain, and one package, coxswain, with one command, cox. The tools, the harness and graphs, the cartridges and the crew live under src/tools, src/graphs, src/cartridges and crew/, each with its full git history. coxswain-dash (towpath) stays its own repository and an optional --with dash. Nothing new for users beyond the move: 0.47.0's behaviour is carried over, plus the fixes below.

One checkout, one venv. A machine now holds one checkout at ~/.local/share/coxswain/installs/coxswain with one venv, and cox is that checkout installed as a uv tool. Every harness launch, the chair unit's PATH, the store CLI and the doctor take their interpreter from one rule: the checkout's .venv, or on a machine that has not moved yet, the harness checkout's own. A chair on the new layout can still route to a lane host on the old one until that host migrates.

Moving from 0.47. Update cox first: brew upgrade cox, or uv tool uninstall coxswain-tools && uv tool install coxswain. Then cox setup migrate shows the plan and cox setup migrate --apply carries it out: it checks out the release in the umbrella checkout (which becomes the monorepo), syncs its venv, rewrites the profile's harness_dir, skills_roots, umbrella_dir and the default provider_profile, repoints the workspace cartridge links, re-registers the plugin marketplace, swaps the coxswain-tools and agent-cartridges uv tools for coxswain with the same extras, refreshes the chair unit, and moves the old component checkouts to installs/.retired-<date>/. Nothing is deleted. A second run plans nothing. See From 0.47 to the monorepo.

Versions. YYYY.M.N, tagged vYYYY.M.N: the year, the month without a leading zero, and the count of releases cut that month. Every 0.x tag sorts below every CalVer tag, so cox upgrade moves forward from 0.47.0. Compatibility is carried by the store and workspace schema and by cox setup migrate, not by the number.

One release. A release is one version bump, one tag, one PyPI publish of coxswain, one GitHub release and one Homebrew formula PR. The rehearsal takes one commit: a fresh install, and an upgrade from a real 0.47.0 install followed by cox setup migrate.

coxswain

  • Histories imported under src/tools, src/graphs, src/cartridges and crew/; one distribution, one lock, one CI with the four suites (2d1edd78, 42d9bf7c).
  • install_root decides the checkout and the harness interpreter; every launch, the chair unit and the store CLI use it (25d1840f, 6ec133c2).
  • The governance gate keeps each component's own scope: src/cartridges/cartridges, skills-plugins, core/policy.py, core/ledger.py and src/graphs/harness escalate, and the rest of src/cartridges does not (a3437099, a1c3e7ce).
  • Install and upgrade work on the one checkout; cox install keeps a checkout already present (209b62d8, 29768d53).
  • cox setup migrate moves a 0.47 machine, under the home or a --root install, to the monorepo, and never leaves the venv behind the checkout's lock (0fde9811, 29768d53, 029f1e08).
  • cox host sync and a resident chair's install bring a lane host to the commit the chair runs, a release tag included (f76965d3, 731e1777).
  • The doctor checks the one checkout; its core probe imports in-process, its plugins row asks the harness interpreter (acbe35d8, 6a90a3b4, 3af167ca, 07a6ea37).
  • CalVer tags sort above every 0.x tag; the release planner, publish guard and rehearsal take one repository (d9883d08, dcdd701a, 8efddd5f).
  • Steward proposals and install hints name coxswain (5457cfd8, 8ec9419d).
  • --with crew is accepted as a no-op for one release; crew always installs (a2bcc71b).

Known gaps

cox install still needs the checkout cloned first, as 0.47 did. Plugins installed into the checkout's venv by hand are removed by the uv sync in cox upgrade and must be installed again. Runtime state still lives in the workspace's runs folder. An intake row is not linked to its initiative when it decomposes, so it stays queued after its work lands. The test suite is unchanged; 2026.10.1 runs it in parallel and consolidates its largest files.

The gate for 2026.10.0 was the hosted rehearsal of the release commit, whose fresh, upgrade and migrate jobs passed, and a clean-machine rehearsal in a throwaway Proxmox container running the same scenarios, with dash pinned at v0.42.0.

Migrations: none

Components

coxswain is released at 2026.10.0. coxswain-dash has no commits since v0.42.0 and stays pinned there.

Upgrading from 0.47.0. See Moving from 0.47 above. The store schema is unchanged.