Skip to content

0.24.0

Cut on 2026-09-28. coxswain-graphs and coxswain-tools are tagged v0.24.0. coxswain-cartridges stays pinned at v0.23.1 and coxswain-crew at v0.12.0. coxswain-tools is published to PyPI from its tag. Status: beta. This release makes builds watch their cost, gives the console the fleet's picture, teaches the loop to get itself unstuck, and moves the dashboards onto the store and the lake. It carries four headlines.

Builds watch their cost, and the failsafe caps the whole build. A build's checkpoints now weigh richer go/no-go signals, with their positions taken from the measured bounds and every decision written to a ledger. The $6 runaway ceiling from 0.23.1 capped each call rather than the session, so a build that resumed could spend it again on every call; it now caps the session's cumulative spend and refuses a call once the ceiling is spent. The per-task budget estimator lands here too, and is wired into launches in 0.24.1.

The console shows the fleet. cox console shows each lane's run with its stage and cost, each machine with its lanes in use against capacity (the local machine included), the chair's liveness, and the 5-hour and weekly spend, with every time in the viewer's local timezone. cox runs top names each run's machine in a column of its own.

The loop gets itself unstuck. A re-grounded ticket is retried after harness failures, counting attempts on its current body only. An approved task waiting for the rest of its phase no longer holds back its siblings' relaunch. A phase land finds each task's record in the run that approved it and takes the run's own initiative, so a phase name shared across initiatives lands. A remote launch brings the lane host's checkout up to date before the lane builds, and in store mode a fetched remote run's approvals come from the store. A runaway-ceiling stop reaches the chair as its own runaway cause, and the ticket lint refuses a needs edge inside one phase.

The dashboards read the store and the lake. The Fleet and Chair datasets read the store's real columns, the probes ask with WHERE false, the history datasets read the Iceberg lake on the object store through the store's catalog, and landed tasks come from the store's task records, so the Superset deploy runs on any machine that reaches the store and the object store, with no runs directory.

Upgrading from 0.23.1. Restart the chair loop after upgrading cox: a running loop keeps the planner it started with. To share the lake's catalog across machines, set lake_catalog_url in the provider profile to the store's Postgres URL. A Superset deploy adds COXSWAIN_S3_ENDPOINT (host and port, no scheme), COXSWAIN_S3_KEY_ID, COXSWAIN_S3_SECRET and COXSWAIN_S3_REGION to its .env, drops COXSWAIN_RUNS_DIR, and needs the object store reachable from its containers; run the dashboards bootstrap twice on a new server, since the store and lake are probed once the database exists. Ten of the twenty-five charts still name dataset columns that changed, and are fixed in 0.24.1.

coxswain-tools

  • cox console shows runs with their stages and cost, machines with lanes in use, a live chair and the spend header, in local time (tools #1165, #1175, #1178); cox runs top has a MACHINE column (tools c92c62f).
  • The routing profile reads a chair: block (tools #1163).
  • A re-grounded ticket is retried after harness failures (tools #1169); a stranded approved task no longer blocks its initiative's relaunch (tools #1170); a phase land finds each task's record in the run that approved it (tools #1172) and takes the run's own initiative before searching by phase name (tools 2cb0402).
  • A remote launch fast-forwards the lane host's checkout before the lane builds (tools #1173, #1176); in store mode a fetched remote run's approvals come from the store's task records (tools #1185).
  • A runaway-ceiling stop is its own runaway cause, first on the loop's status line (tools #1179, #1180); the lint refuses a needs edge inside one phase (tools #1181); housekeeping runs the trace prune with the harness interpreter (tools #1182).
  • The plan meter the status line records is read, with its implied ceilings (tools #1184, #1186); pacing moves to it in 0.24.1.

coxswain-graphs

  • Build checkpoints weigh richer signals, take their positions from the bounds, and ledger each decision (graphs #603, #604, #605, #606).
  • The runaway ceiling caps a session's cumulative spend and refuses a call once it is spent (graphs 771835b).
  • A per-task build budget estimated from landed history (graphs #609).

coxswain

  • The Fleet and Chair dashboards read the store's real columns, the lake through the store's catalog, and landed tasks from the store; their docs page matches (coxswain #188, #190, #191, #192, #193, #194); the lake views create their schema first (coxswain eff9065).
  • The docs catch up with 0.21 to 0.23.1: the chair, several machines, the lake (coxswain #189).
  • The umbrella installs cox with the postgres extra (coxswain e355378).

Components

coxswain-tools carries the console and the loop's fixes, coxswain-graphs the cost checkpoints and the failsafe, and the umbrella the dashboards and the docs. coxswain-cartridges and coxswain-crew are unchanged.