Use live fleet or declared hosted Linux for light nightly controls
NEXT nightly controls can wait indefinitely on an unregistered fleet label when admission is unavailable. Require verified fleet reservations or freshly observed mini capacity, then route declared lightweight jobs to hosted Ubuntu on their first attempt and the existing measured Blacksmith set on retries. Keep the 180-second admission window and record elapsed client observations without fabricating a controller receipt.
Leo, 2026-11-01: “you can run it. you can also run it on linux github if these are light jobs or we can just run it on our fleet” and “just do whatevre it takes to fix these odd-ass situations i thought github hosted had more linux things”.
The central .github/runners.json declaration governs hosted-light eligibility. This PR wires the TUI resolver, Ghostty resolver, recovery discovery and build picker. decide bootstraps on hosted Ubuntu because no earlier job can supply a live runner receipt; its retries use the measured Blacksmith set. Its environment, credentials and permissions stay unchanged. The build picker preserves its three-minute wait and now requires observed live mini capacity. Build-input compilation remains outside the lightweight declaration and uses measured Blacksmith overflow after fleet admission. The eligible tail controls are declared here for the separate tail-routing change.
The central exception refuses undeclared same-organization hosted routes, release/signing eligibility and hosted macOS; existing separate exceptions remain unchanged. Existing fork routing remains scoped to forks. Every nightly job is checked against reintroducing the unregistered generic fleet label. The admission artifact distinguishes local elapsed observation from an authoritative controller receipt.
Validation: admission (25 tests), nightly routing (19), portable placement (29), trusted routing (33), and fork routing (23) pass. Central routing policy (27 tests), its live-tree check, shell syntax, and the exact check_no_github_hosted_runners check also pass. git diff --check is clean. Regression coverage includes missing/quota-failed admission, missing/stale placement outputs, reruns, live fleet/mini priority, the bounded wait, central eligibility, and excluded release/signing routes.
Existing base warning: check_no_self_hosted_fleet_runners fails on eight unchanged runner expressions. The same check executed against base 4510f25e2ef4559db7e17743c29a32af9409b799 reports the identical eight expressions; the guard continues through all other checks.
Risk and limits: hosted Ubuntu can still queue; this PR does not add automatic hosted-queue cancellation or claim a three-minute hosted rescue. A later retry uses measured paid overflow. It changes no started run and adds no timer or cancellation path. The admission wait and capacity-read deadline remain bounded and cleared. No compile job is added; existing warm caches and job sizes remain unchanged.
| Performance | Before | After | Delta | Evidence |
|---|---|---|---|---|
| Routing without live fleet evidence | Unregistered generic fleet label | Declared light jobs: hosted Ubuntu; measured paid retries | Removes phantom fleet selection | Admission and workflow routing regression tests |
| Fleet admission window | 180 seconds | 180 seconds with elapsed client observation on transport failure | Preserved | Bounded-wait regression test |
| Blacksmith minutes/day | Not measured for this failure mode | Not measured for this failure mode | Initial light overflow moves to hosted Ubuntu | Existing paid size selection retained; no new capacity assumption |
Agent session: agent session