Skip to content

ci: route hardcoded Blacksmith labels through the runner variables - #15592

Merged
teamleaderleo merged 1 commit into
mainfrom
ci/linux-runner-no-hardcoded-blacksmith
Sep 29, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
ci/linux-runner-no-hardcoded-blacksmith

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Several jobs hardcoded a Blacksmith label with no variable. During the 2026-09-29 Blacksmith stall, pointing LINUX_RUNNER / MACOS_RUNNER_* at GitHub-hosted runners or the owned minis couldn't move them, and reruns stayed queued on the dead pool. Affected: iOS E2E's route job and 10 other Linux jobs across cmux-tui, cmux-cloud-cli and ios-e2e, plus two iOS E2E macOS lanes.

These jobs now read the same variables as every other job. Each one checks the standard fork-PR branch first, so fork code never follows a variable onto a self-hosted runner (test_ci_fork_runner_routing). When the variables are unset, behaviour is unchanged. This PR is needed before a single overflow switch can move every job.

Testing: scripts/verify-local.py --all passes 15/15. These pass: test_ci_fork_runner_routing, test_ci_linux_guard_routing, test_runner_label_policy, test_ci_workflow_guards_are_wired.

🤖 Generated with Claude Code


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


Summary by cubic

Routes the hardcoded Blacksmith runner labels through LINUX_RUNNER and MACOS_RUNNER_* so those jobs can switch pools during a Blacksmith outage.

Bug Fixes

  • 13 jobs across cmux-tui, cmux-cloud-cli, and ios-e2e hardcoded a Blacksmith label, so pointing the runner variables at alternatives couldn't move them when the pool stalled on 2026-09-29.
  • Reruns on those jobs stayed queued on the dead pool instead of following the variables.
  • Each job now checks the fork-PR branch first, so fork code never follows a variable onto a self-hosted runner.
  • When the variables are unset, behavior is unchanged.

Written for commit 28e2875. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Updated automated validation workflows to select runners based on repository and pull request context, using configured runners when available and fallback runners otherwise. Non-owned repositories continue to use GitHub-hosted runners. These updates apply across command-line, terminal interface, and iOS end-to-end checks.

Eleven Linux jobs (cmux-tui, cmux-cloud-cli, ios-e2e route/backend) and two
iOS E2E macOS lanes named a Blacksmith label with no variable, so pointing
LINUX_RUNNER / MACOS_RUNNER_* elsewhere during a Blacksmith outage could not
move them. They now read the same variables as every other job, with the
standard fork pull-request branch first.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 29, 2026 12:27
@coderabbitai

coderabbitai Bot commented Sep 29, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 938aba0e-9067-4e06-a891-a43f2f9edfd8

📥 Commits

Reviewing files that changed from the base of the PR and between f5b715c and 28e2875.

📒 Files selected for processing (3)
  • .github/workflows/cmux-cloud-cli.yml
  • .github/workflows/cmux-tui.yml
  • .github/workflows/ios-e2e.yml
 ________________________________________
< C*deR*bb*t: The uncensored bug hunter. >
 ----------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@teamleaderleo
teamleaderleo merged commit 1516426 into main Sep 29, 2026
68 of 69 checks passed
@teamleaderleo
teamleaderleo deleted the ci/linux-runner-no-hardcoded-blacksmith branch September 29, 2026 12:32
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 28e287505d, merged 2026-09-29 12:32:43 UTC

  • Not verified at merge: seven-language live conformance (in progress)
  • Verified: ci-status, Web complexity, web-validation, CI fast guards, CI timing, Fast static checks, GhosttyKit release check, guards (18), ios-e2e-status, protocol contract, route, test, and 2 more
  • Skipped by policy: ${{ matrix.language }} consumer, ${{ matrix.language }} package, backend, browser, Claude wrapper regressions, Dogfood build #​${{ github.event.pull_request.number }}, ios-e2e, linux-preflight, mac-host, macos, macOS admission gate, remote-daemon, and 7 more
  • Full suite: runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 29, 2026
6093e59 test(cloud-vm): cover missing attach address
b639b65 fix(iroh-v2): omit bearer device attribution
c9a74d6 ci: E2E picker routes owned labels by the online runners, not CI_OWNED_POOL_SLOTS (manaflow-ai#15582)
194ae87 fix(tests): compile cmuxTests again after manaflow-ai#15116 and manaflow-ai#15550 (manaflow-ai#15561)
8bfc872 ci: live runners decide root, gui and side routing; CI_OWNED_POOL_SLOTS is the fallback only (manaflow-ai#15572)
1516426 ci: route hardcoded Blacksmith labels through the runner variables (manaflow-ai#15592)

# Conflicts:
#	.github/workflows/cmux-cloud-cli.yml
#	.github/workflows/cmux-tui.yml
#	.github/workflows/ios-e2e.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant