Skip to content

CI: stop unnecessary Release builds and gate paid runner - #13629

Merged
teamleaderleo merged 8 commits into
mainfrom
fix-ci-release-routing-admission
Sep 22, 2026
Merged

teamleaderleo merged 8 commits into
mainfrom
fix-ci-release-routing-admission

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

What changed

  • Treat Resources/bin/open and tests/test_open_wrapper.py as Release-build-neutral CI inputs.
    • They still route through macOS validation.
    • They stop queueing the universal xcodebuild -configuration Release lane.
  • Add a cheap Linux release-admission job in the reusable macOS workflow.
    • It waits for the existing top-level linux-preflight verdict.
    • The paid macOS 26 Release runner now requires that admission to pass.
    • A red guard/web/preflight result blocks the Release runner before allocation.
  • Add regression coverage for both the path routing and the Release admission dependency.

Why

Run https://github.com/manaflow-ai/cmux/actions/runs/35689908387 exposed both problems:

  1. PR Fix SIGSEGV in open wrapper on multibyte arguments #13301 only changes the open wrapper plus its regression test, yet CI routed it into macos / release-build.
  2. The guard gate had already failed before the paid Release job started, so CI continued spending macOS build time on a run that was already red.

This keeps the existing macOS compile/test concurrency while preventing the universal Release build from starting unless the cheap routed CI verdict is green.


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

Stops CI from queueing product work that can't catch anything new: open wrapper-only changes skip the universal Release build, the paid macOS Release runner is gated on a green Linux preflight, and routing-policy-only PRs run no product-area CI.

Release builds

  • Resources/bin/open and tests/test_open_wrapper.py changes still route through macOS validation but no longer queue the universal xcodebuild -Configuration Release lane.
  • A Linux release-admission job waits for linux-preflight and blocks the paid macOS 26 Release runner when the guard/web/preflight result is red.

Queued work

  • Mixed PRs that touch routing policy classify product inputs with the trusted base router; policy-only PRs skip product CI entirely, including top-level ci.yml edits that only change macOS jobs.
  • Reusable workflow edits run only workflow-guard-tests; ci-macos.yml edits that only change Release jobs run just the release-related guard groups, and web-complexity workflow edits run only the ci group.
  • macOS-only changes no longer queue the web workflow; the native diff-sidecar inputs it validates are routed there explicitly.
  • The changes job skips macOS compile admission when the app-host build-input fingerprint matches HEAD^1.
  • web-complexity only queues for web/** paths, and web-complexity-trusted scopes pull requests from the GitHub file list before web setup, so it no longer retriggers on PR metadata edits or ready-state flips.
  • Adds regression coverage for all of the above.

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

Review in cubic

Summary by CodeRabbit

  • Bug Fixes

    • Release builds now require successful Linux preflight validation.
    • Unnecessary release builds are skipped for macOS-only open-wrapper changes while focused tests continue to run.
    • CI routing now skips unrelated product checks and reuses unchanged build-input validation where possible.
    • Web complexity checks run only for relevant web changes.
    • macOS status reporting includes release admission results.
  • Tests

    • Expanded coverage for release gating, CI routing, workflow scope detection, and change classification.

@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.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 359f89ca-1d19-4551-9d02-e12f0a563e58

📥 Commits

Reviewing files that changed from the base of the PR and between 5af9103 and d28a4d3.

📒 Files selected for processing (8)
  • .github/workflows/ci.yml
  • .github/workflows/web-complexity.yml
  • scripts/ci/detect_ci_change_areas.py
  • scripts/ci/detect_linux_guard_changes.py
  • scripts/ci/workflow_guard_groups.py
  • tests/test_ci_change_areas.py
  • tests/test_ci_linux_guard_routing.py
  • tests/test_web_complexity_trusted_workflow.py
 __________________________________________________
< Deploying the charm offensive against your bugs. >
 --------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).

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: 0b5ec996-450d-4136-a8ec-5d00a916f4b8

📥 Commits

Reviewing files that changed from the base of the PR and between 38ced03 and 5af9103.

📒 Files selected for processing (3)
  • .github/workflows/ci-macos.yml
  • scripts/ci/detect_ci_change_areas.py
  • tests/test_ci_change_areas.py

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


📝 Walkthrough

Walkthrough

The workflow now admits Release builds only after successful Linux preflight. The CI classifier excludes open-wrapper runtime and test changes from Release builds while retaining macOS coverage. Tests verify both behaviors.

Changes

Release build CI controls

Layer / File(s) Summary
Linux preflight admission for Release builds
.github/workflows/ci-macos.yml, tests/test_ci_change_areas.py
The new release-admission job polls for linux-preflight completion and succeeds only when its conclusion is success. release-build and macos-status now require this admission result.
Release-neutral open-wrapper inputs
scripts/ci/detect_ci_change_areas.py, tests/test_ci_change_areas.py
Resources/bin/open and tests/test_open_wrapper.py no longer trigger Release builds. The classifier and workflow tests cover this routing and admission behavior.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant linux-preflight
  participant release-admission
  participant GitHubActionsAPI
  participant release-build
  linux-preflight->>GitHubActionsAPI: publish job conclusion
  release-admission->>GitHubActionsAPI: poll workflow jobs
  GitHubActionsAPI-->>release-admission: return linux-preflight conclusion
  release-admission->>release-build: admit only when conclusion is success
Loading

Merge Risk: ⚪ Minimal · up to 5af91

This change gates Release builds on Linux preflight and avoids unnecessary builds for open-wrapper-only changes. It is ready to merge.

🚥 Pre-merge checks | ✅ 23 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description clearly explains the CI routing change, the release admission gate, and the reason for the change. However, it omits the required Testing section and repository checklist, including lo… Add the required Testing section with commands and verification results. Add the complete Checklist and mark each item accurately. Include the Review Trigger section or explain its status. Demo Video is not required unless this change is co…
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 9 functions across 2 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 identifies both primary changes: avoiding unnecessary Release builds and gating the paid runner.
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 CI workflow admission, CI path classification, and related tests. The diff does not change Cloud terminal creation, persistent cmux-tui transport, manual renderer s…
Cmux Swift Actor Isolation ✅ Passed PASS: The authoritative PR diff changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. It contains no changed Swift files or Swift …
Cmux Swift Blocking Runtime ✅ Passed The pull request changes only .yml and Python files. The scoped diff contains no production Swift changes. Although the workflow adds polling and time.sleep, this synchronization is Python CI scaf…
Cmux Browser Automation Off-Main ✅ Passed PASS: The PR changes only CI workflow routing and CI path-filter tests. The review-scoped diff contains no changes to browser socket commands, WebKit/AppKit access, socketWorkerMethods, `processV2Co…
Cmux Expensive Synchronous Load ✅ Passed PASS: The pull request changes only one GitHub Actions workflow and two Python files. The authoritative diff contains no Swift files or production Swift changes, and it adds no agent-history load or r…
Cmux Cache Substitution Correctness ✅ Passed PASS: The pull request changes only a GitHub Actions YAML workflow, Python CI routing code, and Python tests. It introduces no production Swift, TypeScript, or JavaScript change, so the cache-substitu…
Cmux No Hacky Sleeps ✅ Passed PASS. The only new fixed delay and polling loop are inside .github/workflows/ci-macos.yml, which the rule explicitly excludes as GitHub Actions orchestration. The changed CI Python script adds routi…
Cmux Algorithmic Complexity ✅ Passed PASS. The pull request changes only CI YAML, Python CI routing code, and Python tests. The routing change adds constant-time frozenset membership to the existing single pass over changed paths. The …
Cmux Swift Concurrency ✅ Passed PASS: The pull request changes only one YAML file and two Python files. The exact PR range contains no changed .swift files, and added lines contain no listed legacy Swift concurrency patterns. The …
Cmux Swift @Concurrent ✅ Passed The pull-request range changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. It contains no Swift files or Swift isolation changes…
Cmux Swift Package Boundaries ✅ Passed The pull request changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. The authoritative diff contains no Swift files or productio…
Cmux Swiftpm Lockfiles ✅ Passed The PR changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. It changes CI routing and admission logic, not Package.swift, `Pack…
Cmux Swift Logging ✅ Passed PASS: The PR changes only a GitHub workflow, Python CI routing code, and Python tests. The authoritative diff contains no changed Swift paths and no added Swift logging statements. The added print c…
Cmux User-Facing Error Privacy ✅ Passed PASS. The diff changes only GitHub Actions CI workflow logic, CI routing code, and tests. The changed workflow is workflow_call infrastructure, and its messages stay in CI logs for operators. No cha…
Cmux Full Internationalization ✅ Passed PASS. The authoritative diff changes only a GitHub Actions workflow, CI routing code, and CI tests. It adds operational job names, comments, polling status messages, and test assertions. It adds no Sw…
Cmux Swiftui State Layout ✅ Passed PASS: The PR changes only GitHub Actions YAML and Python CI classification/tests. The authoritative diff contains no SwiftUI files or new ObservableObject, @Published, GeometryReader, lazy-row store r…
Cmux Architecture Rethink ✅ Passed PASS: The authoritative diff changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. It contains no Swift, SwiftUI, AppKit, or platf…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The pull request changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. The authoritative diff contains no Swift files and no stand…
Cmux Source Artifacts ✅ Passed PASS. The authoritative diff changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. These are intentional CI configuration, source,…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS: The pull request changes only .github/workflows/ci-macos.yml, scripts/ci/detect_ci_change_areas.py, and tests/test_ci_change_areas.py. It changes no Swift file under a production `Sources/…
Full details: Description check

Explanation

The description clearly explains the CI routing change, the release admission gate, and the reason for the change. However, it omits the required Testing section and repository checklist, including local testing, documentation, review, and comment-resolution status.

Resolution

Add the required Testing section with commands and verification results. Add the complete Checklist and mark each item accurately. Include the Review Trigger section or explain its status. Demo Video is not required unless this change is considered a behavior change requiring a demonstration.

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 9 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 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.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 22, 2026 09:39
@teamleaderleo
teamleaderleo force-pushed the fix-ci-release-routing-admission branch from 842875a to 849ff07 Compare September 22, 2026 10:24

Copy link
Copy Markdown
Collaborator Author

@greptileai review

@cursor

cursor Bot commented Sep 22, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo merged commit 0e9803e into main Sep 22, 2026
33 of 37 checks passed
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