base red: cmux-actions fixture RUNNER_POOLS holds every declared pool

Merged
TE
3d ago
+25-12

Base-red-job: cmux-actions / Tests (expressions, matrix, every workflow fixture)

#32457 (bbb2b89006) moved the iOS kit picker's fallback in .github/workflows/cmux-next-ios-kit.yml to fromJSON(vars.RUNNER_POOLS).linux_8. That pool is declared in .github/runners.json and set live, so the workflow is right. The cmux-actions fixture, though, had RUNNER_POOLS = {"linux":"fleet-linux"} only, so the picker's runs-on came out null and 4 "iOS kit picker fallback" cases failed on feat-cmux-next.

Fix, test-only (the workflow is unchanged and nothing is pinned):

  • The fixture RUNNER_POOLS now holds every pool declared in .github/runners.json at its first member, which is what scripts/ci/runner_pools.py keeps it at. linux stays fleet-linux, so trigger planning still sees a fleet candidate.
  • The iOS kit cases now test the pool reads: the eight vCPU pool, a moved pool being followed, the bounded LINUX_RUNNER 4/8/16 sizes, a fleet or invalid LINUX_RUNNER being rejected for the pool, and saved overflow reading linux_16. I dropped the unset and empty variable cases: RUNNER_POOLS is required, and an unset one fails the run at fromJSON() (tests/runs_on_labels.py).

Checks: vitest run test/ passes 1032/1032 (4 failed before), tsc --noEmit passes, and tests/test_ci_no_single_size_pins.py is OK.

Agent session: agent session

๐Ÿค– Generated with Claude Code


Autofix with [code]smith
Open in [code]smith ยท Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes the cmux-actions fixture so the iOS kit picker fallback tests pass on feat-cmux-next.

#32457 moved the picker's fallback to fromJSON(vars.RUNNER_POOLS).linux_8, but the fixture variable held only linux, so the picker resolved to a null runs-on and four cases failed. The fixture now holds every pool declared in .github/runners.json at its first member โ€” what scripts/ci/runner_pools.py keeps them at โ€” and the iOS kit cases test the pool reads: the eight vCPU pool, a moved pool, the bounded LINUX_RUNNER 4/8/16 sizes, and saved overflow reading linux_16. The unset and empty variable cases are gone; RUNNER_POOLS is required and an unset one fails the run at fromJSON().

Test-only: the workflow is unchanged and nothing is pinned.