Skip to content

Route CI control-plane changes to owning checks - #13436

Merged
teamleaderleo merged 10 commits into
mainfrom
codex/ci-route-control-plane-narrowly
Sep 21, 2026
Merged

teamleaderleo merged 10 commits into
mainfrom
codex/ci-route-control-plane-narrowly

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Stop known CI control-plane edits from fanning out into unrelated product and guard lanes.

  • keep the actual product-area router and Linux-guard router fail-open against self-edits;
  • stop treating every direct scripts/ci/*.py edit as a web/product-router edit;
  • classify the persistent-Mac route implementation and its focused tests as control-plane-only;
  • route those files to workflow-guard-tests without also paying history, CLI, source-lint, GhosttyKit, web, or macOS product lanes.

This is the routing/ownership slice from #13095. It intentionally does not change the guard suite shape or web test parallelism; those are separate follow-ups so each performance change has one failure mode.

Measured motivation from #13431: a five-file CI-control-plane diff launched ~390 Linux runner-seconds of web validation and ~558 runner-seconds across four guard lanes.

Related: #13095, #13325, #13431.


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

Narrows CI control-plane routing so known control-plane edits no longer fan out into unrelated product and guard lanes.

  • Keeps the product-area router and Linux-guard router fail-open against their own changes; unknown direct scripts/ci/*.py edits still force all areas.
  • Treats the web validation script as a web-owned change so it runs web lanes but skips macOS product lanes.
  • Routes the persistent-Mac route implementation and its focused tests to workflow-guard-tests without triggering history, CLI, source-lint, GhosttyKit, web, or macOS product lanes.
  • Preserves the Ghostty provenance self-test shortcut so provenance-only CI changes skip unrelated product lanes.

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

Review in cubic

Summary by CodeRabbit

  • Bug Fixes

    • Improved CI change detection so updates trigger only the relevant validation areas.
    • Refined Linux guard routing for persistent macOS control-plane changes.
    • Web validation changes now run web checks without unrelated product-area checks.
    • Updated release-build and guard workflow routing to avoid unnecessary jobs.
  • Tests

    • Added coverage for targeted CI routing, persistent macOS guard handling, and web-only validation changes.

@coderabbitai

coderabbitai Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Understand this PR’s impact

Explore downstream dependencies and potential security impact with Blast Radius.

View 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: d6c76e91-dc74-45c5-a0ff-15660d9cd10d

📥 Commits

Reviewing files that changed from the base of the PR and between fe83b00 and f37831f.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • tests/test_ci_change_areas.py

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


📝 Walkthrough

Walkthrough

CI routing now separates detector changes from other CI scripts, classifies web validation and persistent macOS control-plane files more precisely, and narrows Linux guard self-test triggers. Tests verify the updated area and guard-suite mappings.

Changes

CI routing classification

Layer / File(s) Summary
CI area classification
scripts/ci/detect_ci_change_areas.py, tests/test_ci_change_areas.py, .github/workflows/ci.yml
Full-area triggers exclude persistent macOS control-plane files. Web validation is classified as web-only. Persistent macOS control-plane files are macOS-neutral. Tests cover these classifications and workflow routing.
Linux guard routing
scripts/ci/detect_linux_guard_changes.py, tests/test_ci_linux_guard_routing.py, .github/workflows/ci.yml
Linux guard self-tests trigger for the workflow and the two detector scripts instead of all scripts/ci/* files. Persistent macOS control-plane files route only to linux_guard_tests.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Bug fix

🚥 Pre-merge checks | ✅ 23 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides a detailed Summary and explains the motivation, scope, and related issues. It omits the required Testing, Demo Video, Review Trigger, and Checklist sections, including test re… Add the required Testing, Demo Video, Review Trigger, and Checklist sections. Document the tests run and verification performed. Include a demo video or explain why it is not applicable, paste or reference the bot-review trigger, and comple…
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 16 functions across 4 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (23 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: routing CI control-plane changes to their owning checks.
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 PR changes only CI routing detectors, workflow routing, and routing tests. It does not change Cloud terminal creation, cmux-tui transport, manual pane admission, input ownership, or runtime …
Cmux Swift Actor Isolation ✅ Passed The pull request changes only one YAML workflow, three Python files, and two Python test files. The authoritative diff contains no Swift paths, Swift code, or actor-isolation tokens. Therefore, it int…
Cmux Swift Blocking Runtime ✅ Passed PASS: The reviewed range changes only GitHub Actions YAML, Python CI routing code, and Python tests. It contains no production Swift changes and no introduced Swift blocking or timing synchronization.
Cmux Browser Automation Off-Main ✅ Passed PASS. The pull request changes only CI workflow routing, CI change-area detectors, Linux guard routing, and their tests. It does not modify Sources/TerminalController.swift, `ControlCommandExecution…
Cmux Expensive Synchronous Load ✅ Passed The authoritative pull-request diff changes only one YAML workflow, three Python files, and two test files. It contains no Swift production changes and no additions or moves of synchronous agent-histo…
Cmux Cache Substitution Correctness ✅ Passed PASS: The authoritative pull-request diff changes only .github/workflows/ci.yml, Python files under scripts/ci/, and Python test files. It contains no production Swift, TypeScript, or JavaScript c…
Cmux No Hacky Sleeps ✅ Passed PASS. The diff adds no sleep, timer, polling, fixed-delay, or wall-clock wait logic. The changed Python scripts only classify paths and routes. The added tests only assert routing results. The workflo…
Cmux Algorithmic Complexity ✅ Passed No algorithmic-complexity violation is introduced. The production changes add constant-size frozenset membership checks and path classification. The existing classifiers make one pass over changed p…
Cmux Swift Concurrency ✅ Passed PASS: The pull request changes only Python, YAML, and Python test files. The authoritative diff contains no changed Swift files and no added Swift concurrency patterns. Therefore, the Swift concurrenc…
Cmux Swift @Concurrent ✅ Passed The pull-request diff changes only CI YAML, Python scripts, and Python tests. It contains no Swift files or Swift isolation annotations, so .github/review-bot-rules/swift-concurrent-annotation.md is…
Cmux Swift Package Boundaries ✅ Passed PASS: The authoritative pull-request diff changes only one YAML file and four Python files. It contains no Swift or SwiftPM source changes, and the Swift package-boundaries rule file is unchanged. The…
Cmux Swiftpm Lockfiles ✅ Passed PASS: The PR changes only CI workflow/router scripts and routing tests. It does not change any Package.swift, Package.resolved, .gitignore, or Xcode project file, and the diff contains no SwiftP…
Cmux Swift Logging ✅ Passed The pull request changes only one YAML file, three Python files, and two Python test files. It introduces no production Swift changes and no changed Swift logging statements. The cmux Swift logging ch…
Cmux User-Facing Error Privacy ✅ Passed PASS: The pull request changes only CI workflow routing, CI detector helpers, and tests. The added text is internal CI comments, routing values, and test assertions. The changed files do not add or ma…
Cmux Full Internationalization ✅ Passed PASS. The authoritative PR diff changes only .github/workflows/ci.yml, CI routing Python helpers, and CI routing tests. It adds routing classifications, comments, and test assertions. It does not ad…
Cmux Swiftui State Layout ✅ Passed The pull request changes only one YAML file and four Python files. The authoritative diff contains no Swift or SwiftUI changes, and its added lines contain none of the checked state, layout, row-store…
Cmux Architecture Rethink ✅ Passed PASS. The authoritative PR diff changes only one YAML workflow and four Python test/router files. It contains no Swift source or SwiftUI/AppKit bridge changes. The added lines do not introduce the pro…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The pull request changes only CI workflow, Python routing code, and Python tests. The authoritative diff contains no Swift, storyboard, XIB, or Xcode project changes. Therefore, the Swift auxiliary-wi…
Cmux Source Artifacts ✅ Passed All five changed paths are existing workflow, Python source, or test files. The diff contains ordinary text edits only, with no artifact-like paths, generated logs, screenshots, caches, build output, …
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS: The review-range diff changes only one YAML file, three Python files, and two test files. It contains no Swift file under a production Sources/ path, so the specified production test/debug sea…
Full details: Description check

Explanation

The description provides a detailed Summary and explains the motivation, scope, and related issues. It omits the required Testing, Demo Video, Review Trigger, and Checklist sections, including test results and review status.

Resolution

Add the required Testing, Demo Video, Review Trigger, and Checklist sections. Document the tests run and verification performed. Include a demo video or explain why it is not applicable, paste or reference the bot-review trigger, and complete each checklist item.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 16 functions across 4 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 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.

@github-actions

Copy link
Copy Markdown
Contributor

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

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 21, 2026 20:17
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