Skip to content

fix(ci): keep swift-package-tests off the owned minis under a Release helper - #16110

Merged
teamleaderleo merged 2 commits into
mainfrom
fix/package-lane-owned-pool
Sep 30, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
fix/package-lane-owned-pool

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

What is wrong

swift-package-tests is red on every pull request carrying full-ci, and no Swift package test runs before it goes red.

On #15229 the job took glaeda-std-xcode-26.6 and failed at step 10, Select helper Xcode. Steps 11 through 23 then skipped, including Run Swift package tests:

 8  success  Select package tests
 9  success  Resolve Release check architectures
10  failure  Select helper Xcode
11  skipped  Install zig
...
22  skipped  Run Swift package tests
23  skipped  Run Swift package tests on the build fleet

Why

Under a full suite that also checks the Release build, the job first builds the Release Ghostty CLI helper against an SDK 15 Xcode. Only the Blacksmith macOS 15 image carries that SDK. The owned minis have Xcode 26.6 alone, and scripts/select-ci-xcode.sh exits non-zero rather than falling back, which is what ci-macos.yml documents for this job:

select-ci-xcode.sh exits non-zero rather than falling back when it cannot find one. The macos-26 image has no SDK 15.

The same comment states the rule that keeps the lane off those machines:

The picker places it only when this run builds no helper (pr_runner_pool.package_lane_owned(): not full suite plus release_build), so those steps never run there.

pr_runner_pool.package_lane_owned() still implements that rule, but it is no longer what production reads. #15988 moved pool selection to scripts/ci/simple_pool_picker.py, which builds owned_jobs from the routing flags alone:

for key, lane in (("RUN_CLAUDE_WRAPPER", "claude-wrapper"),
                  ("RUN_REMOTE_DAEMON", "remote-daemon"),
                  ("RUN_SWIFT_PACKAGES", "swift-package"),
                  ("RUN_RELEASE_BUILD", "release-build")):
    if env.get(key) == "true":
        owned_jobs.append(lane)

So swift-package enters owned_jobs whenever the router attributed a change to a Swift package, whether or not the run builds the helper. The pull request pull of ci.yml before #15988 carried the rule as a comment on RUN_SWIFT_PACKAGES itself, and the simplification kept the input while dropping the condition.

The change

Skip the lane's owned placement when the run builds the helper, and say why next to the code. The routed case, a package change without a full suite, keeps the owned Mac exactly as before.

Tests

tests/test_ci_simple_pool_picker.py gains a case for both halves: a full suite with release_build keeps swift-package out of owned_jobs while release-build stays in it, and a package change on its own still takes the pool. The first commit adds that test against the current picker and it fails there.

Also green locally: test_ci_pr_runner_pool (230 tests), test_ci_fork_runner_routing, test_ci_macos_xcode_selection, test_ci_change_areas, test_ci_release_helper_archs.

Effect on merges

A person's re-run of the failed job does not route around this. runs-on keeps the owned pool while github.run_attempt <= 2 || github.triggering_actor != 'github-actions[bot]', so a manual re-run at any attempt lands on the same machine and fails the same way. Until this lands, a full-ci pull request cannot make swift-package-tests green, and ci-status is required.

🤖 Generated with Claude Code


Summary by cubic

Fixes swift-package-tests red on every full-ci pull request by keeping the lane off the owned minis when the run builds the Release helper. The pool picker now skips the swift-package lane when RUN_FULL_SUITE and RUN_RELEASE_BUILD are both true; routed package-only changes still take the owned pool. Adds test coverage for both cases.

Written for commit 782adbd. Summary will update on new commits.

Review in cubic

teamleaderleo and others added 2 commits September 30, 2026 10:06
swift-package-tests builds the SDK 15 Release Ghostty helper when the run
is a full suite with release_build, and the owned minis carry Xcode 26.6
alone, so "Select helper Xcode" hard-fails there. The live picker places
the lane on RUN_SWIFT_PACKAGES alone, so the test fails for now.

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

The live picker placed the lane on RUN_SWIFT_PACKAGES alone, so a pull
request carrying full-ci took an owned mini and failed "Select helper
Xcode" at step 10, skipping steps 11 through 23 including "Run Swift
package tests". The check went red without a package test having run.

Restore the rule the previous picker read from
pr_runner_pool.package_lane_owned(): the lane takes an owned Mac only
when the run builds no SDK 15 Release helper.

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

coderabbitai Bot commented Sep 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

Next included review available in 4 minutes.

Check out review usage here.

View limit details

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: fdfe1830-4735-4b61-9f76-fb3dcb834210

📥 Commits

Reviewing files that changed from the base of the PR and between a302b3a and 782adbd.

📒 Files selected for processing (2)
  • scripts/ci/simple_pool_picker.py
  • tests/test_ci_simple_pool_picker.py
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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.

@teamleaderleo
teamleaderleo merged commit cc30253 into main Sep 30, 2026
54 checks passed
@teamleaderleo
teamleaderleo deleted the fix/package-lane-owned-pool branch September 30, 2026 17:21
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 782adbd2f7: every check was green at merge (13 verified; 19 skipped by policy). Full suite runs on main after merge.

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