Skip to content

ci(runner pools): tests resolve RUNNER_POOLS reads to the declared pool members - #32417

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/runner-pools-resolve
Nov 2, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/runner-pools-resolve

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Leo-ask: ask-973a915bea

Leo, 2026-10-28: "Where the f***ing are the generalized solution to all these problems that these incessant pins?"

This is step 1 of 4 on feat-cmux-next. It is groundwork and changes no workflow. 475 runs-on lines end in a literal single-size Blacksmith label, and a re-run cannot move a literal. The next PRs point each of those at its size's pool, fromJSON(vars.RUNNER_POOLS).<pool>. main declares those pools (#32393), and runner_pools.py keeps them on a live member. The last PR adds a guard test that refuses a new literal.

What this PR changes:

  • .github/runners.json gets a copy of main's pools declaration. tests/test_ci_runner_pools_copy.py keeps the copy equal to main's wherever origin/main is in the checkout. It also refuses a workflow that reads an undeclared pool, which would read '' and queue forever.
  • tests/runs_on_labels.py now parses fromJSON(vars.RUNNER_POOLS).<pool> and resolves it to that pool's members (never ''). Every guard built on it keeps resolving labels after a literal becomes a pool read. Before this change, the tokenizer stopped at .<pool>.
  • docs/ci-runners.md gets a Runner pools section.

Observed / Not run

  • Ran python3 tests/X.py for every test that imports runs_on_labels, plus test_ci_runner_pools_copy, test_ci_runner_set, test_ci_repo_variable_defaults, test_ci_fork_runner_routing and test_ios_internal_builder. All pass.
  • Not run: the whole tooling-tests lane.

Performance

metric before after delta harness
Blacksmith minutes per day unchanged unchanged 0 tests and docs only; no runs-on changes here

Changelog

none

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Makes CI tests resolve fromJSON(vars.RUNNER_POOLS).<pool> reads to the declared pool members, so label guards keep working when a literal runs-on label becomes a pool read. Workflows themselves are unchanged.

  • Copies main's pools declaration into .github/runners.json; a new hand-run test keeps the copy equal to main's across the full pool set and refuses reads of an undeclared pool (which would resolve to '' and queue forever).
  • Extends tests/runs_on_labels.py's parser with property access (.pool) and resolves it to that pool's members.
  • Adds a Runner pools section to docs/ci-runners.md.

Written for commit d570ad0. Summary will update on new commits.

View guided diff Turn on auto-fix

… the pool's members

Groundwork for routing every runs-on through the declared pools instead of a
literal single-size Blacksmith label (Leo, 2026-10-28: "Where the f***ing are
the generalized solution to all these problems that these incessant pins?").

- .github/runners.json gets a copy of main's `pools` declaration (the one
  scripts/ci/runner_pools.py reads); tests/test_ci_runner_pools_copy.py keeps
  it equal to main's and refuses a pool read that names no declared pool.
- tests/runs_on_labels.py parses `.<pool>` after fromJSON(vars.RUNNER_POOLS)
  and resolves it to that pool's members, so guards that resolve labels keep
  working when a literal last resort becomes a pool read.
- docs/ci-runners.md: the Runner pools section.

Leo-ask: ask-973a915bea

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-04cad32e0d917ebc8a49
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review d570ad0: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr32417 -f ref=lane/runner-pools-resolve -f platform=macos -f backend_mode=local

Shipped in:

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026

Copy link
Copy Markdown

Found 4 test failures on Blacksmith runners:

Failures

Test View Logs
main.DeveloperIdAppTests.test_download_prints_the_active_profile_only/
test_download_prints_the_active_profile_only
View Logs
stubs: /System/Library/Frameworks/Security.framework/Versions/A/Security has no stub/
Security has no stub
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_CFRetain']/
CoreFoundation, missing 1: ['_CFRetain']
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_log2']/
CoreFoundation, missing 1: ['_log2']
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

…ool set with main

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-04cad32e0d917ebc8a49
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at d570ad0

The earlier blocker is fixed: the pools copy test is a manual test with a reason and is listed in UNWIRED, and the wiring test passes. The tokenizer was checked over all 2,854 workflow expressions: none tokenize differently, and the 17 that newly parse are all fromJSON(...).x reads. The pools copy now equals main's 15 pools. The registry test's git-fixture error is environmental and fails the same way on base.

Follow-ups: the fromJSON(vars.RUNNER_POOLS || '{}').x form stays unresolved; no unit test for the prop node yet; $comment indentation in runners.json.

@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@teamleaderleo
teamleaderleo merged commit bcb370d into feat-cmux-next Nov 2, 2026
123 of 126 checks passed
@teamleaderleo
teamleaderleo deleted the lane/runner-pools-resolve branch November 2, 2026 15:36
@github-actions github-actions Bot removed the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 9508b70 to this head): SHIP at cf950a4

No P1/P2 findings.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — d570ad0d Deployed Nov 2, 2026 by teamleaderleo via cmux-tui tree preflight #101869
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant