Skip to content

coxswain 0.37.0

Choose a tag to compare

@ppfenning ppfenning released this 12 Oct 03:37
· 2042 commits to main since this release

0.37.0

Cut on 2026-10-11. Status: beta. The first release after the feature freeze: it fixes the defects the
2026-10-07 bug scan found and hardens the chair loop, so a stuck land, a hung call or a dead feed no longer
stalls the queue.

A loop that does not hang. Calls on the chair's tick path and its store connections carry timeouts, a refused
land retries on a bounded back-off, and the repository land lease is renewed for as long as the land runs. The
red-main revert reruns a flaky check before it reverts and never leaves the checkout on its branch. A land's
wait for checks sees a startup failure and bounds a required check that never appears.

Runs. Store writes during a run are retried, and network calls in a run time out and kill their process group.
A test failure outside a ticket's surfaces is a ticket cause that names the files. Decompose sizes an intake first,
so a one-ticket intake becomes one task.

Deferred to 0.38.0. Two quarantined tasks of the login check (host-doctor-local-branch and
login-check-evidence-and-two-strikes); the release fetching before it tags; the chair service unit's doctor PATH
row; the runs STATUS chip's remaining task; the release notes' cheap opener; and the claude runner's process-group
kill.

Upgrading from 0.36.0. Nothing migrates and the store schema is unchanged. Restart the chair loop. A cartridge
may list repositories under epic_threshold.inline.repos to let the chair work a change of at most
epic_threshold.inline.files_max files inline; the list is empty by default, so nothing changes until you opt in.

coxswain-cartridges

  • The chair can work a small change inline in an opted-in repository (cartridges #199).
  • route-work tells the chair to hand most work to subagents and background jobs (cartridges #201).

coxswain-dash

  • The chair panel's terminal follows its pane size, including after a resize (dash #114, dash #118, dash #119).
  • The runs STATUS chip shows whole at 80 columns (dash #115).
  • A landed task without a pull-request number no longer freezes the board (dash #117).
  • A dead or unparseable feed shows its error in the status line (dash #120, dash #121).

coxswain-graphs

  • Every quarantine records its cause, including a merge conflict (graphs #728).
  • A test failure outside the ticket's surfaces is a ticket cause that names the files, and the refix may touch them
    (graphs #732, graphs #734, graphs #737).
  • The test suite sends no real courier notes (graphs #730); each CI job gets 15 minutes (graphs #731).
  • Store writes during a run are retried, and the store connection has a timeout (graphs #740, graphs #742).
  • Decompose sizes an intake first and turns a one-ticket intake into one task (graphs #743, graphs #744,
    graphs #745).
  • Network calls in a run time out, and a timed-out check kills its process group (graphs #746, graphs #747).

coxswain-tools

  • Subprocess and store calls on the tick path have timeouts, and the loop's store calls cannot hang a tick
    (tools #1485, tools #1503).
  • The land back-off caps its exponent (tools #1487); a refused land retries on its back-off with bounded attempts
    (tools #1489, tools #1492).
  • A fetch refused because the run is still live is a skip (tools #1486).
  • The red-main revert reruns a flake first and never leaves the checkout on its branch (tools #1490, tools #1499,
    tools #1500).
  • The repository land lease is renewed for the length of the land (tools #1491).
  • wait_checks sees a startup failure and bounds a missing required check (tools #1496, tools #1498).
  • Route priority reaches the store, decomposed tasks inherit it, and ties go to the oldest ready task (tools #1493,
    tools #1494).
  • The login check keeps its evidence, and one unreadable reply blocks nothing (tools #1495, tools #1517).
  • cox setup doctor warns on a stale model tier (tools #1501).
  • A run that exits awaiting_land shows as idle, not crashed (tools #1502).
  • The dashboard feed reads the store's meter for the weekly window (tools #1506, tools #1513).
  • cox stats ingests the store again and counts lands (tools #1507, tools #1510).
  • The CLI startup ceiling tests measure against a baseline and a stable load check (tools #1488, tools #1497,
    tools #1505, tools #1508); a second load-check change was reverted (tools #1515, tools #1516).
  • The chair service unit renders a PATH that reaches cox (tools #1518).

coxswain (umbrella)

  • The install proof judges cox setup doctor by its rows and accepts rows that only await setup (coxswain #264,
    coxswain #265), and its negative control proves the checks run (coxswain #266).
  • CI pins uv to Python 3.14 (coxswain #267).
  • The docs name real commands and describe changed-only versioning (coxswain #268).
  • The groundwork for a release that drafts its own notes: the PR window, blank markers, index and nav lines, and
    the notes blocks (coxswain #269, coxswain #270, coxswain #271, coxswain #272).