ci(nightly): prefer dedicated M4 Pro fleet for early jobs and builds

Merged
TE
5d ago
+225-18

Early NEXT nightly jobs can leave owned machines unused when the routing App cannot read capacity. Prefer the explicitly reserved all-nightly M4 Pro label on the first attempt for bootstrap, the four portable controls, and the build picker. The app and helper also use that reservation without waiting for quota-limited capacity reads. The exact repository variable enables the route only after managed runners are registered; unset or invalid values preserve the existing routes.

Leo: “ok just dedicate at least one m4 pro mini just completely to the nightly situation idgaf anymore”. Earlier: “FOR OUR NIGHTLIES ARE THEY END TO END ON OUR FLEET? WE CAN'T BE RELYING ON BLACKSMITH THAT CUTS OUT”.

The shared label does not name a host or assume one runner. It is the explicit reservation exception; retries retain the existing fallback. The policy accepts only the exact repository, NEXT track, first attempt and declared label, and CI tests exercise missing, stale and foreign inputs. Existing signing environments, credentials and permissions stay intact. The signer compiler retains Linux so its artifact stays ELF. This change adds no cancellation or timer.

Prior art: preserves #30085's Linux admission fallback and #30173's declared light overflow when the reservation is disabled. #30221's dependency receipts and #30201's cache fallback are separate; #30200 owns advisory publication. The reservation reuses existing persistent build caches and source-keyed web bundles; it adds no compile. External shared-cache configuration remains with fleet enrollment.

Validation: python3 tests/test_nightly_dedicated_mini.py </dev/null reproduces the missing priority on base and passes all seven tests after the fix. Picker, admission, trusted/fork routing, label policy, hosted-Mac, nightly routing and central table suites pass (242 focused Python tests total). The live-tree routing-table check, git diff --check and pre-push static checks pass.

Existing base warning: the fleet-label shell guard reports the same eight expressions on base f3bfbe9fca25 and this head; normalized findings are identical. The hosted-runner shell guard passes.

Observed / Not run

Observed: Python policy and picker tests pass, including quota-independent app/helper selection and preserving retry/other-track routes. Not run: a nightly on the new reservation. Activation remains disabled until registration and admission are verified by fleet enrollment; this PR does not claim end-to-end publication proof.

PerformanceBeforeAfterDeltaEvidence
Early fleet-admission wait with the reservation enabledUp to 180 secondsSkippedRemoves up to 180 secondsWorkflow condition regression
Blacksmith minutes/dayNot measuredNot measuredPortable first attempts prefer the dedicated fleetPolicy tests; live measurement pending activation

Changelog

  • Prefer the dedicated nightly fleet for early NEXT jobs and app/helper builds.

Agent session: agent session
🤖 Generated with Claude Code