Skip to content

ci: drop warp-macos-15-arm64-6x from manual runner dropdowns - #13650

Merged
teamleaderleo merged 1 commit into
mainfrom
ci/drop-warp-macos-dropdown-options
Sep 22, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
ci/drop-warp-macos-dropdown-options

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

What

Removes warp-macos-15-arm64-6x from the two workflow_dispatch runner dropdowns that still offer it:

  • .github/workflows/test-e2e.yml
  • .github/workflows/perf-activation.yml

No runs-on: expression changes, so no job changes runner as a result of this PR.

Why

These two dropdown entries are the only hardcoded Warp labels anywhere in .github/workflows. Every runs-on: already resolves through a vars.MACOS_RUNNER_* repository variable whose baked-in fallback is a Blacksmith label — tests/test_ci_self_hosted_guard.sh already asserts "no workflow falls back to a Warp runner", and that test passes on this branch.

That makes these dropdowns the remaining way to put a job on the paid Warp overflow without touching a repository variable. Removing the option leaves auto (which follows MACOS_RUNNER_15) plus the Blacksmith and Tart choices.

Context: this is the guard-rail half of a larger revert

A 24h sample of CI (618 runs → 1,973 jobs, weighted to full run volume) puts ~11,600 macOS runner-minutes/day on Warp, against 5,100/day already on Blacksmith. Warp macOS is the only paid runner line item in this repo — Linux is on Blacksmith, and GitHub-hosted minutes are free for a public repo.

All of that Warp usage comes from repository variables that drifted away from what docs/ci-runners.md documents as their active values, between 2026-09-19 and 2026-09-20:

Variable docs/ci-runners.md Currently set to
MACOS_RUNNER_15 tart-macos-15 warp-macos-15-arm64-6x
MACOS_RUNNER_DUAL_XCODE blacksmith-6vcpu-macos-15 warp-macos-15-arm64-6x
MACOS_RUNNER_26_NIGHTLY_BUILD blacksmith-12vcpu-macos-26 warp-macos-26-arm64-12x
MACOS_RUNNER_26_RELEASE blacksmith-6vcpu-macos-26 warp-macos-26-arm64-12x
MACOS_RUNNER_DISPLAY tart-gui warp-macos-15-arm64-6x

Reverting those variables is the part that actually moves the minutes, and it needs repo-admin access. This PR just makes sure the revert sticks — once the variables are back on Blacksmith, a manual E2E or perf-activation dispatch can no longer silently re-introduce paid runner minutes.

Test

./tests/test_ci_self_hosted_guard.sh passes locally, including the test-e2e.yml dropdown assertions (tart-canary / tart-dual / tart-small each exactly once) and no workflow falls back to a Warp runner.

🤖 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

Removes warp-macos-15-arm64-6x from the workflow_dispatch runner dropdowns in test-e2e.yml and perf-activation.yml.

These dropdowns were the only way to dispatch a job onto the paid Warp overflow runner without changing a repository variable. Once the MACOS_RUNNER_* variables are reverted to Blacksmith, manual runs can no longer silently re-introduce paid macOS minutes. No runs-on: expressions change, so existing jobs keep their runner. tests/test_ci_self_hosted_guard.sh continues to pass.

Written for commit 6f917d2. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Removed the warp-macos-15-arm64-6x option from the available manual runner choices for performance activation and end-to-end test workflows.

`warp-macos-15-arm64-6x` is the paid Warp overflow runner. It is the only
Warp label hardcoded anywhere in .github/workflows: every `runs-on:` already
resolves through a `vars.MACOS_RUNNER_*` repository variable whose baked-in
fallback is a Blacksmith label, and `tests/test_ci_self_hosted_guard.sh`
already asserts "no workflow falls back to a Warp runner".

These two `workflow_dispatch` dropdowns are the remaining way to put a job on
Warp without touching a repository variable. Removing the option leaves
`auto` (which follows `MACOS_RUNNER_15`) plus the Blacksmith and Tart choices,
so manual E2E and perf-activation dispatches cannot silently re-introduce paid
runner minutes once the repository variables are moved back to Blacksmith.

No `runs-on:` expression changes, so no job changes runner as a result of this
commit. `tests/test_ci_self_hosted_guard.sh` passes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

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

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 8c6be374-9372-4fa7-a23b-ef8cc5ae5c4c

📥 Commits

Reviewing files that changed from the base of the PR and between ea17450 and 6f917d2.

📒 Files selected for processing (2)
  • .github/workflows/perf-activation.yml
  • .github/workflows/test-e2e.yml
💤 Files with no reviewable changes (2)
  • .github/workflows/test-e2e.yml
  • .github/workflows/perf-activation.yml

Included review availability: Your plan provides up to 10 included reviews per hour; 3 remain after this review.


📝 Walkthrough

Walkthrough

The performance activation and E2E test workflows remove warp-macos-15-arm64-6x from their manual runner selection choices. Other runner choices remain unchanged.

Changes

Runner option cleanup

Layer / File(s) Summary
Update workflow runner choices
.github/workflows/perf-activation.yml, .github/workflows/test-e2e.yml
The manual runner inputs no longer list warp-macos-15-arm64-6x.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 6f917

Manual workflow dispatches no longer offer the paid Warp runner, while the remaining runner choices and job runner expressions are unchanged. The change is mergeable.

🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: removing the Warp runner from the manual CI runner dropdowns.
Description check ✅ Passed The description explains what changed, why it changed, affected files, runner behavior, and testing. It uses headings different from the template and does not include the full checklist or review-trig…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS. The pull request changes only two GitHub Actions workflow_dispatch option lists and removes one Warp runner label from each. It does not change Cloud terminal creation, transport, cmux-tui cli…
Cmux Swift Actor Isolation ✅ Passed The pull request changes only two GitHub Actions YAML files. The diff removes one runner option from each workflow and contains no Swift files or Swift code. Therefore, it does not introduce or worsen…
Cmux Swift Blocking Runtime ✅ Passed PASS: The reviewed range changes only two GitHub Actions YAML files and removes one runner option from each. It contains no Swift changes and introduces no blocking or timing-based Swift synchronizati…
Cmux Browser Automation Off-Main ✅ Passed PASS: The PR changes only two GitHub Actions workflow dropdowns. It removes one runner option from .github/workflows/perf-activation.yml and .github/workflows/test-e2e.yml. The diff contains no `b…
Cmux Expensive Synchronous Load ✅ Passed PASS. The pull request changes only two GitHub Actions YAML files and removes one manual runner option from each. The authoritative diff contains no Swift changes and no agent-history, transcript, JSO…
Cmux Cache Substitution Correctness ✅ Passed PASS: The pull request changes only two GitHub Actions YAML files. It removes one manual runner choice from each workflow and does not change Swift, TypeScript, or JavaScript code, persistence, histor…
Cmux No Hacky Sleeps ✅ Passed The PR only removes one runner option from each of two GitHub Actions workflow YAML files. The rule explicitly excludes workflow and action YAML, and the diff adds no lines or sleep/timer logic. Exist…
Cmux Algorithmic Complexity ✅ Passed The PR changes only two GitHub Actions workflow input lists. Each file removes one warp-macos-15-arm64-6x option, with 0 additions and 1 deletion. No production Swift, TypeScript, JavaScript, shell,…
Cmux Swift Concurrency ✅ Passed PASS: The pull request changes only two GitHub Actions YAML files. It removes one manual runner option from each workflow and introduces no Swift code, Dispatch queues, Combine state, completion-handl…
Cmux Swift @Concurrent ✅ Passed PASS: The reviewed diff changes only two GitHub Actions workflow files and deletes two runner dropdown options. It contains no Swift changes, so the Swift @concurrent criteria do not apply.
Cmux Swift Package Boundaries ✅ Passed The pull request changes only .github/workflows/perf-activation.yml and .github/workflows/test-e2e.yml. The authoritative diff contains no Swift files or production Swift changes. The Swift packag…
Cmux Swiftpm Lockfiles ✅ Passed PASS. The PR changes only two workflow files, with one deleted Warp runner choice in each. The authoritative diff contains no .gitignore, Package.swift, Package.resolved, or Xcode project packag…
Cmux Swift Logging ✅ Passed PASS: The pull request changes only two GitHub Actions YAML files. It removes one runner option from each manual input and changes no Swift code or logging statements. The Swift logging check is there…
Cmux User-Facing Error Privacy ✅ Passed PASS. The PR only deletes the warp-macos-15-arm64-6x choice from two workflow_dispatch inputs. It adds no user-facing error, alert, command output, API body, or recovery copy. These are internal C…
Cmux Full Internationalization ✅ Passed PASS. The PR only removes the literal warp-macos-15-arm64-6x choice from two GitHub Actions workflow_dispatch configurations. It adds no Swift text, string-catalog entry, web UI copy, API response…
Cmux Swiftui State Layout ✅ Passed The pull request changes only two GitHub Actions workflow files and removes one runner choice from each. The diff introduces no SwiftUI code or state/layout patterns covered by the rule. The SwiftUI s…
Cmux Architecture Rethink ✅ Passed PASS: The check targets Swift architecture changes, but this PR only removes one manual runner choice from each of two GitHub Actions YAML workflows. The diff contains no Swift or UI lifecycle changes…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The pull request changes only .github/workflows/perf-activation.yml and .github/workflows/test-e2e.yml. The diff removes two runner dropdown entries and contains no Swift or auxiliary-window…
Cmux Source Artifacts ✅ Passed The pull request changes only two existing GitHub Actions workflow configuration files. Both diffs remove one manual runner choice and add no local output, generated logs, caches, build artifacts, scr…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS: The authoritative PR diff changes only .github/workflows/perf-activation.yml and .github/workflows/test-e2e.yml. It changes no Swift file under a production Sources/ path, so it cannot int…
✨ 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 a1dec45 into main Sep 22, 2026
44 of 46 checks passed
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
… runner (#13662)

`test-e2e.yml` and `test-depot.yml` are the two dispatch-driven lanes people
use to re-run a single test while chasing a flake. Measured over 24h they are
2,731 macOS runner-min/day on the paid overflow provider -- 23.6% of all paid
macOS minutes -- and essentially all of it is `workflow_dispatch`, not
required CI.

Both followed `MACOS_RUNNER_15`, so they inherited the overflow provider
whenever that variable pointed at it. Nothing about re-running one test needs
the elastic paid pool: these runs are interactive debugging, they are already
`cancel-in-progress`, and no merge or release waits on them.

Point both at a dedicated `MACOS_RUNNER_TESTS` variable instead. It is unset,
so both lanes default to `blacksmith-6vcpu-macos-15` and stop following
`MACOS_RUNNER_15` entirely. Setting it restores a provider override for these
lanes alone, without touching required CI.

`test-e2e.yml`'s concurrency group keys off the same expression, so it moves
with the runner to keep one group per resolved runner.

Explicit `inputs.runner` choices are untouched: `auto` now resolves to
Blacksmith, and the Blacksmith and Tart options still work. `#13650` already
removed the overflow label from that dropdown.

Scope: `test-depot.yml` is dispatch-only (ci.yml's `tests` job is a separate
Linux aggregator), and `test-e2e.yml` is dispatch/workflow_call only. Neither
is on the required PR path, so no required check changes runner here.

Tests: test_ci_self_hosted_guard.sh, test_ci_workload_profiles.py,
test_ci_persistent_mac_compile.py, test_ci_merge_queue_required_checks.py and
test_ci_reusable_workflow_permissions.py pass. test_ci_change_areas.py fails
identically before and after this change on a shallow clone (it needs HEAD^1)
and is unrelated.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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