Skip to content

ci: classify mux/ as macOS-neutral so mux-only PRs pass the routing guard - #7622

Merged
lawrencecchen merged 1 commit into
mainfrom
fix-ci-mux-macos-neutral
Jul 8, 2026
Merged

lawrencecchen merged 1 commit into
mainfrom
fix-ci-mux-macos-neutral

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 8, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Every mux-only PR fails the tests and ci-status routing checks (e.g. #7609), while the mux workflow itself passes. The guard reports app-host unit tests were required but did not pass: skipped.

Root cause: scripts/ci/detect_ci_change_areas.py's is_macos_change is a catch-all — any path not explicitly in is_macos_neutral counts as a macOS change. mux/ isn't listed, so mux-only PRs resolve macos=true. After #7583 staged the macOS app-host shards behind the linux preflight, those shards report skipped while changes.macos=true, and the aggregator guard (if macos == "true" and tests["result"] != "success") fails.

Fix

cmux-mux is a standalone Rust project gated by its own mux workflow; it never affects the macOS app build or app-host tests. Add mux/ to is_macos_neutral so mux-only PRs resolve macos=false, the app-host job skips legitimately, and the guard's macos != "true" branch accepts the skip.

Verified: Resolved areas: macos=false for a mux-only file set; all 36 detector tests pass including the new test_mux_only_skips_macos.

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Note

Low Risk
CI routing-only change with a focused unit test; no runtime app or mux build behavior changes.

Overview
Fixes mux-only PRs failing tests / ci-status when macOS app-host shards are legitimately skipped. Paths under mux/ were treated as macOS changes because they were not in the neutral prefix list, so changes.macos=true conflicted with skipped app-host jobs after the linux preflight gate.

is_macos_neutral in detect_ci_change_areas.py now includes mux/, matching the standalone cmux-mux Rust tree covered by the separate mux workflow. Mux-only diffs resolve macos=false (and not web/go) so guards accept skipped macOS jobs.

Adds test_mux_only_skips_macos to lock in classification for typical mux paths.

Reviewed by Cursor Bugbot for commit ce33f77. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Classify mux/ as macOS-neutral in the CI change detector so mux-only PRs correctly skip macOS app-host tests and pass the routing guard.

  • Bug Fixes
    • Include mux/ in is_macos_neutral() to avoid false macos=true.
    • Add test_mux_only_skips_macos to lock the behavior.
    • Result: mux-only changes run only the mux workflow; tests/ci-status no longer fail due to skipped app-host shards.

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

Review in cubic

The change-area detector treats any path not explicitly macos-neutral as
a macOS change, so mux-only PRs resolved macos=true. Combined with the
new linux-preflight staging (#7583), that made the required app-host
Swift tests skip while the routing guard required them, failing 'tests'
and 'ci-status' on every mux-only PR (e.g. #7609).

cmux-mux is a standalone Rust project gated by its own 'mux' workflow and
never affects the macOS app build or app-host tests, so 'mux/' belongs in
is_macos_neutral. Adds test_mux_only_skips_macos.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Building Building Preview, Comment Jul 8, 2026 8:59am
cmux-staging Building Building Preview, Comment Jul 8, 2026 8:59am

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@lawrencecchen, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 4700938c-70f3-4d76-ace0-d4f0dcbdf2b9

📥 Commits

Reviewing files that changed from the base of the PR and between b51ee74 and ce33f77.

📒 Files selected for processing (2)
  • scripts/ci/detect_ci_change_areas.py
  • tests/test_ci_change_areas.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-ci-mux-macos-neutral

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.

@greptile-apps

greptile-apps Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates CI routing for mux-only changes. The main changes are:

  • mux/ is now treated as macOS-neutral in the CI area detector.
  • The detector comment documents mux/ as a standalone Rust project.
  • A regression test covers mux-only source, README, and docs paths.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
scripts/ci/detect_ci_change_areas.py Adds mux/ to the macOS-neutral path list so mux-only changes do not require macOS app-host jobs.
tests/test_ci_change_areas.py Adds coverage for mux-only changes resolving without macOS, web, or Go areas.

Reviews (1): Last reviewed commit: "ci: classify mux/ as macOS-neutral so mu..." | Re-trigger Greptile

@lawrencecchen
lawrencecchen merged commit 0b365eb into main Jul 8, 2026
28 of 30 checks passed

This branch was successfully deployed

1 active deployment
Preview – cmux — ce33f774 Deployed Jul 8, 2026 by vercel[bot]
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