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/cartridgesandcrew/; one distribution, one lock, one CI with the four suites (2d1edd78, 42d9bf7c). install_rootdecides 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.pyandsrc/graphs/harnessescalate, and the rest ofsrc/cartridgesdoes not (a3437099, a1c3e7ce). - Install and upgrade work on the one checkout;
cox installkeeps a checkout already present (209b62d8, 29768d53). cox setup migratemoves a 0.47 machine, under the home or a--rootinstall, to the monorepo, and never leaves the venv behind the checkout's lock (0fde9811, 29768d53, 029f1e08).cox host syncand 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 crewis 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.