ci(nightly): place early controls on fleet before overflow
The newest NEXT nightly spent 4m37s waiting on Blacksmith before its input resolver started, despite decide starting promptly on the owned fleet. Each later control hop repeated that queue.
Place the six early jobs in decide: configured fleet Linux first, then available owned minis for the five portable jobs, then the existing Blacksmith Linux set. The signer compiler stays Linux-only because its artifact executes on Linux. Reuse the existing portable placement helper, with a three-minute capacity wait before overflow, a four-minute operation deadline, and alarm cleanup in finally. No run is cancelled. Stale attempt outputs cannot place reruns on an outdated mini selection.
Leo: “why are changes to these not in my current nightly”; “FOR OUR NIGHTLIES ARE THEY END TO END ON OUR FLEET? WE CAN'T BE RELYING ON BLACKSMITH THAT CUTS OUT”.
Prior art: #29130 provides portable placement; #29436 places later nightly control jobs. This applies that same mechanism before compilation. It preserves the signer-policy restore in #29821 and the cache fixes in #29842. App compiles keep warm DerivedData and the existing shared cache; these portable control jobs do no app compilation. The signer compiler retains its existing artifact cache. The external SSD compile-cache backend is a separate follow-up.
The GCP Actions label is declared by HQ's ephemeral runner reconciler. This change reads the configured fleet Linux variable rather than inventing a label or changing runner trust. Where that variable still names Blacksmith, the five portable jobs use owned minis; signer-build retains Linux overflow. No release signing job moves.
Performance
No perf numbers: post-change queue and paid-runner usage measurements need the next published nightly; the observed pre-change delay is recorded below, with no claimed speedup.
| metric | before | after | delta | harness or run link |
|---|---|---|---|---|
| Input resolver queue | 4m37s | pending next nightly | pending | 41257151740 |
| Blacksmith minutes/day for these jobs | not measured | pending post-merge sample | pending | controller job timing |
Validation: 118 focused routing, placement, supply-chain, workflow-size and signing tests passed in 41260606202; its sole failure was the coverage entry corrected in the final commit. All five coverage tests pass at final head 7635a73087a6f457b405ddf595c82c92c9b0587c in 41261049196. The CI guard group reports zero new red steps (15 also red on base, one fixed). Existing base compile and What's New failures are unrelated to these changes.
Agent session: agent session
🤖 Generated with Claude Code