Skip to content

2026.10.1

Cut on 2026-10-19. Status: beta. The first update to the monorepo, built by the lanes in the new repository. It fixes what moving four real machines to 2026.10.0 turned up, runs every test suite in parallel, and trims the largest test files.

The move from 0.47 works on real machines. cox setup migrate copies a team provider profile kept inside the old cartridges checkout into the home and points provider_profile at the copy; writes repo_map back as one-line JSON the profile reader accepts; releases its checkout leases when it ends and says so when a release fails; and fetches the release tag into a shallow checkout and syncs the venv before anything runs the checkout's interpreter. cox install clones the checkout at its own release tag when the home has none, so a first install needs no clone by hand. Syncing the checkout's venv keeps packages installed into it by hand, so plugins survive cox upgrade.

Faster checks. Every test suite runs with pytest-xdist, in CI and in the lanes' checks: the four suites finish in about a minute and a quarter instead of five and a half. The extras job stays serial, because its Postgres store tests back the test database up with pg_dump. Lanes check every component suite through a root .agent-checks file. The largest test files are consolidated to one literal-input test per rule. On pull requests CI no longer runs the Python 3.15 job, which takes about twenty minutes; it runs on every push to main.

Smaller fixes. The five-hour spend estimate counts from the meter's window against the profile's window ceiling, and towpath marks an estimated fraction as one. A decomposed intake's row turns decomposed and links its initiative, so the empty-queue notice fires again. A release commits its releases-index rewrite even when the version needs no bump.

coxswain

  • setup migrate keeps an untracked provider profile (#351), writes repo_map as JSON (#365), releases its leases (#342, #354) and fetches the tag into a shallow checkout before syncing (#353, #359).
  • cox install clones the checkout itself (#341, #362); venv syncs keep hand-installed packages (#357).
  • Every suite runs in parallel (#340, #352); lanes check every suite (#337); py315 runs on main only (#344).
  • Test consolidation: test_route (#348, #366), test_land (#347, #364, #367), test_chair_exec (#346, #356, #358), test_claude_code_runner (#360, #363), test_epic_driver (#349, #361).
  • The five-hour estimate follows the meter window (#339, #350).
  • A decomposed intake links its initiative (#345); the release commits its index rewrite (#343, #355).
  • Docs match the code at 2026.10.0 (#338).

coxswain-dash

  • towpath marks an estimated five-hour fraction and caps its text at >100% (coxswain-dash #140).

Known gaps

cox setup migrate leaves a machine's checkout on the release tag, while cox host sync and a lane launch update a checkout only on main; the fleet runs main, so its checkouts were moved to main by hand. The chair relaunches an epic whose work graph is invalid without raising a hold. The empty-decompose hold can fire before the decompose's tasks are imported. Runtime state still lives in the workspace's runs folder.

The gate for 2026.10.1 was the hosted rehearsal of the release commit, whose fresh, upgrade and migrate jobs passed, and a clean-machine rehearsal in a throwaway container running the same scenarios.

Migrations: none

Components

coxswain is released at 2026.10.1. coxswain-dash changes and is released with it.

Upgrading from 2026.10.0. The store schema is unchanged. Update cox itself (brew upgrade cox or uv tool upgrade coxswain), then run cox upgrade.