Skip to content

ci: route test-only macOS lanes through MACOS_RUNNER_TESTS - #14135

Merged
teamleaderleo merged 2 commits into
mainfrom
claude/test-lanes-follow-tests-runner
Sep 24, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
claude/test-lanes-follow-tests-runner

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

At about 04:30Z on 2026-09-24, Blacksmith macOS 26 had 50 jobs queued and every other pool had none. Once the stale PR runs and E2E dispatches were cleared, most of what remained came from lanes that fall back to that pool:

  • test-ios.yml simulator dispatches
  • auth-refresh-tests.yml
  • iroh-v2.yml

These lanes route through MACOS_RUNNER_IOS and MACOS_RUNNER_26, which are unset. Those same two variables also route release.yml, nightly.yml, ios-testflight.yml and the App Store upload, so setting them to move test traffic would also move signing.

This PR changes three things:

  • test-ios.yml (with runner: auto), auth-refresh-tests.yml and the iroh-v2.yml client now read MACOS_RUNNER_TESTS first, then fall back to their old variable and label. If MACOS_RUNNER_TESTS is unset, routing is unchanged. MACOS_RUNNER_TESTS already routes test-e2e.yml and test-macos-suite.yml, and it is now set to macos-26.
  • Every job that reads MACOS_RUNNER_TESTS now starts with a Verify GitHub-hosted route step, the same check the PR app-host shards run since ci: run macOS jobs on GitHub-hosted runners alongside Blacksmith #14097. The self-hosted fleet also carries a macos-26 label, so a macos-* request that lands anywhere other than runner.environment == github-hosted fails before checkout. runner_label_policy.py flags macos-26 for the same reason.
  • app-host-test-rerun.yml no longer follows MACOS_RUNNER_TESTS. A rerun builds the test bundle with the exact Xcode path recorded in the products receipt, and select-ci-xcode.sh fails if that path is missing. Setting the variable to macos-26 would have sent reruns to an image that may not carry that Xcode, so the rerun stays on Blacksmith macOS 15, where it ran before.

docs/ci-runners.md describes the new scope of the variable. The self-hosted guard's pinned test-ios.yml expressions are updated to match.

Testing

  • actionlint is clean on all six workflows.
  • tests/test_ci_self_hosted_guard.sh passes (exit 0).
  • These also pass:
    • test_run_e2e.py
    • test_app_host_test_rerun.py
    • test_runner_label_policy.py
    • test_ci_fork_runner_routing.py
    • test_ci_change_areas.py
    • test_ci_actionlint_covers_every_workflow.py
    • test_ci_reusable_workflow_permissions.py
    • the E2E, iOS and app-host workflow tests that read these files
  • Not yet exercised: an actual iOS simulator run on hosted macos-26. A dispatch that asks for an exact simulator runtime the hosted image doesn't carry will fail at simulator selection. runner: blacksmith-6vcpu-macos-26 still forces the old pool.

Checklist

  • I added or updated tests for behavior changes
  • I updated docs/changelog if needed

🤖 Generated with Claude Code

https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE


Generated by 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

Relieves the Blacksmith macOS 26 pool backlog by routing test-only macOS lanes through MACOS_RUNNER_TESTS instead of MACOS_RUNNER_IOS and MACOS_RUNNER_26.

  • test-ios.yml (auto) and the iroh-v2.yml client now read MACOS_RUNNER_TESTS first and fall back to their previous variable or label; if unset, routing is unchanged. auth-refresh-tests.yml stays on main's dual-Xcode runner and doesn't follow the variable.
  • MACOS_RUNNER_IOS and MACOS_RUNNER_26 also route release, nightly, TestFlight, and App Store signing, so they can't be flipped to move test traffic.
  • Every job reading MACOS_RUNNER_TESTS now fails before checkout if a macos-* request lands on anything other than GitHub-hosted capacity, since the self-hosted fleet also carries a macos-26 label. In test-e2e.yml the check validates the label chosen by its separate runner-selection job.
  • app-host-test-rerun.yml no longer follows MACOS_RUNNER_TESTS: reruns must build with the exact Xcode recorded in the products receipt, so they stay on the Blacksmith macOS 15 pool.

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

Review in cubic

iOS simulator tests, the auth refresh and Iroh v2 package tests, and
dispatched E2E runs all defaulted to Blacksmith macOS 26, the one pool
with a backlog, through MACOS_RUNNER_IOS and MACOS_RUNNER_26. Those two
variables also route release, nightly, TestFlight and App Store signing,
so they cannot be flipped to move test traffic.

test-ios.yml (auto), auth-refresh-tests.yml and the iroh-v2.yml client
now read MACOS_RUNNER_TESTS first and fall back to their old variable.
Every job that reads it verifies, before checkout, that a macos-* label
landed on GitHub-hosted capacity, since the self-hosted fleet also
carries a macos-26 label. app-host-test-rerun.yml no longer follows it:
a rerun must build with the products' exact Xcode, so it stays on
Blacksmith macOS 15.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 6347863b-35fe-45c1-bef2-18a22b4d206b

📥 Commits

Reviewing files that changed from the base of the PR and between 832f621 and c4aa4ec.

📒 Files selected for processing (7)
  • .github/workflows/app-host-test-rerun.yml
  • .github/workflows/iroh-v2.yml
  • .github/workflows/test-e2e.yml
  • .github/workflows/test-ios.yml
  • .github/workflows/test-macos-suite.yml
  • docs/ci-runners.md
  • tests/test_ci_self_hosted_guard.sh

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.

@github-actions

Copy link
Copy Markdown
Contributor

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

auth-refresh-tests.yml now runs on the dual-Xcode runner on main, so it
keeps main's routing and leaves MACOS_RUNNER_TESTS. test-e2e.yml picks
its runner in a separate job since #14132, so its hosted-route checks
read that job's output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
@cursor

cursor Bot commented Sep 24, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo merged commit e431dd2 into main Sep 24, 2026
51 checks passed
teamleaderleo added a commit that referenced this pull request Sep 24, 2026
Keeps both runner rows in docs/ci-runners.md: MACOS_RUNNER_PR_COMPILE
from this branch and the broadened MACOS_RUNNER_TESTS from #14135.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
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