Repository navigation
ci: route ci-macos.yml edits job by job so shard edits skip the Release build - #14141
Merged
Merged
Conversation
An edit to ci-macos.yml selects the macOS area and the Release build no matter which job it touches, so a change confined to the app-host unit-test shards pays for the Release check under full-ci. Add failing tests for job-by-job comparison of both workflows: a shard edit selects macOS without release_build (through the normal and the trusted base router), a Release job or a job feeding it through outputs still selects Release, and a ci.yml caller job selects only the area of the workflow it calls. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
A ci-macos.yml edit selected macOS and the Release build whatever job it touched. The changes job now passes the base ci-macos.yml to the detector (--macos-workflow-base, to the trusted base router too when it knows the flag), which compares the two job by job. Every edit still selects macOS; the Release build is selected only when a changed job names release_build (release-admission, release-build, swift-package-tests, macos-status) or feeds a job gated on inputs.release_build through its outputs. The preamble, an unreadable file, or a missing base keeps the old behaviour. The ci.yml comparison now returns areas instead of a Linux-only flag: a plainly Linux job selects nothing as before, a job calling ci-macos.yml, ci-web.yml or the CLI lane selects that area alone, and anything else still runs every area. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
|
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 configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
teamleaderleo
added a commit
that referenced
this pull request
Sep 24, 2026
…dits (#14145) * ci: test that routing-policy edits skip the Mac standalone lanes PR #14141 edited only the change-area detector, its tests, and the detect step of ci.yml's `changes` job, yet run 35956687867 queued `Claude wrapper regressions` and `remote-daemon-macos-tests` on the Mac pool: the standalone route selects claude_wrapper, remote_daemon and remote_daemon_native for every ci.yml edit. Add tests that run the real detect and standalone steps on that diff shape and expect those lanes and the CLI lane off, while an edit to a lane's own caller job, the preamble, or a lane input still selects it, and an unreadable base fails open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP * ci: select the Mac standalone lanes only when their ci.yml job changes The standalone route set claude_wrapper, remote_daemon and remote_daemon_native for any ci.yml edit, so a change confined to the `changes` job (PR #14141) queued `Claude wrapper regressions` and `remote-daemon-macos-tests` on the Mac pool and held ci-status on them. The detect step now saves the base ci.yml, and the standalone route compares it with the head job by job. The wrapper lane is selected when the `claude-wrapper` job differs, the remote-daemon lanes when the `remote-daemon` caller differs (its native_tests input lives there), and both when the preamble differs, the base is missing or unreadable, a job name repeats, or the lane's job uses a YAML alias. Edits to the routing, status and Linux jobs only decide whether a lane runs; the Linux guard tests cover them. The Linux browser lane still runs for every ci.yml edit, and every path rule for the lanes' own inputs is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An edit to
.github/workflows/ci-macos.ymlselected the macOS area andrelease_buildwhichever job it touched. Underfull-ci, a PR that only changed the app-host unit-test shards paid for the Release build.The
changesjob now passes the base ci-macos.yml todetect_ci_change_areas.py(--macos-workflow-base), which compares it with the PR's version job by job:release_buildis selected only when a changed job mentionsrelease_build(release-admission, release-build, swift-package-tests, macos-status) or feeds a job gated oninputs.release_buildthroughneeds.X.outputs.jobs:, an unreadable file, a missing base, or a trusted base router that lacks the flag keeps the previous behaviour.The ci.yml comparison in the detector now returns areas instead of a Linux-only flag. A caller job selects only the area of the workflow it calls (
macos→ macOS + Release,web→ web,cli→ CLI). Plainly Linux jobs still select nothing, and every other job still runs all areas. In CI this path only matters if ci.yml edits are ever sent through the detector: thechangesstep still removes ci.yml from the file list before routing.Context: most unlabeled CI-only PRs already skip the compile through "Skip compile when build inputs are unchanged" (build fingerprint equal to the base's). The saving here is the Release build on
full-ciPRs that edit ci-macos.yml, plus fewer jobs gated onmacos.Validation
tests/test_ci_change_areas.py: 229 passed. The 7 new tests (job edits on the real ci.yml and ci-macos.yml, a synthetic outputs-feeder workflow,classify_fileswiring, and the realchangesstep run in a temp repo on both router paths) fail at the first commit.tests/test_ci_*.py: same 6 failures as origin/main (test_ci_canonical_build_root.py, environment), 836 passed.tests/test_ci_self_hosted_guard.shpasses.🤖 Generated with Claude Code
https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
Generated by Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Routes CI workflow edits job by job so a
ci-macos.ymlchange confined to the app-host unit-test shards no longer triggers the Release build.ci-macos.ymlagainst the base revision per job; an edit selects macOS always, butrelease_buildonly when a Release job or a job whose outputs feed one changed.Written for commit ecefaac. Summary will update on new commits.
Summary by CodeRabbit