fleet labels: an xl nightly slot also carries the std nightly label
Leo-ask: ask-e9c646101f
Leo: "but can you help out with the ultras tho? that's most of what i was wanting"
What changes. An xl (M5 Ultra Studio) nightly slot now carries glaeda-nightly-std-xcode-<v> as well as glaeda-nightly-xl-xcode-<v>. Today a nightly slot carries only its own class's label, and no cmux job asks for the xl one: the nightly-next build picker (vars.CI_NIGHTLY_NEXT_BUILD_RUNNER) and every nightly retry queue on the std label. So the Ultras' nightly slot, added in the companion cmuxterm-hq PR, would sit idle while nightly jobs waited on the M4 Pro slots.
nightly_classes() widens the slot the way side_classes() already widens a side runner (a 96 GB Ultra builds what a 48 GB M4 Pro builds), down to std and never to light: a 16 GB M4 cannot build the nightly app. A std or light slot's labels are unchanged, so no existing runner is relabelled; only the Ultras' slot gains a label.
The dedicated NEXT nightly M4 Pros (glaeda-nightly-only-m4pro*) are untouched: they stay first on attempt 1. The Ultras are added overflow capacity behind them.
Tests. FleetLabelsModuleTest (new test_an_xl_nightly_slot_also_answers_the_std_nightly_label_and_never_light) and RunnerTest.test_the_nightly_slot_takes_the_side_instance_after_the_freshness_slot pass locally. Checked against the companion mini-fleet.json: the two xl members resolve to 10 runners, nightly instance 2, nightlyPools [glaeda-nightly-xl-xcode-26.6, glaeda-nightly-std-xcode-26.6]; a std member keeps [glaeda-nightly-std-xcode-26.6].
Performance
| metric | before | after | delta | harness or run link |
|---|---|---|---|---|
runners that answer a glaeda-nightly-std job | std M4 Pro nightly slots only | the same plus 1 slot per Ultra (2) | +2 slots | member_labels over cmuxterm-hq mini-fleet.json |
| cmux NEXT DEV Release compile, p50 | 16.4 min (M4 Pro, n=27) | 9.0 min (xl member, n=1) | -45% | runner Worker logs, same job, 2026-11-01..03 |
| cmux-next Release compile (Xcode 26), p50 | 11.0 min (M4 Pro, n=4) | 7.8 min (xl member, n=1) | -29% | runner Worker logs, same job |
| build-nightly-app on the dedicated M4 Pros, p50 | 14.5 min (n=6) | an Ultra slot run is measured once one lands | n/a | the dedicated nightly members' Worker logs |
Companion: manaflow-ai/cmuxterm-hq (ultras-xl-capacity), which sizes the two xl members and turns their nightly slot on.
Agent session: agent session
š¤ Generated with Claude Code