Skip to content

ci: start guards and web beside Fast static checks - #14176

Merged
teamleaderleo merged 2 commits into
mainfrom
claude/guards-start-beside-static
Sep 24, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
claude/guards-start-beside-static

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

macOS compile admission starts only after macos-admission-gate, and the gate waits for every fast Linux-only job. On every sampled pull-request run, the guards finished last. The gate opened 117–133 s after changes started:

Step on the critical path Time
changes ~18 s
Fast static checks (static-preflight) ~23 s
slowest guard leg ~75–85 s
Guard status ~6–14 s

Both guards and web needed static-preflight, so they waited for it before starting. They now start alongside it. On web PRs, web finishes after the guards (+133 s in one sample), so it moves too.

This does not change what is admitted. The gate and the macos call still require needs.static-preflight.result == 'success', so macOS never starts on a diff that the static checks reject. The cost is guard and web runner time on such diffs, which are rare.

Expected: the gate opens about 25 s sooner, which saves about 25 s on every PR that reaches macOS and on Linux-only PRs where guards are the slowest check.

Testing

  • The first commit rewrites the two tests that pinned needs: [changes, static-preflight] for guards and web. The guards test also asserts the gate still needs static-preflight. Both fail on main.
  • With the fix: tests/test_ci_change_areas.py and tests/test_ci_linux_guard_routing.py pass, including test_macos_admission_gate_needs_every_fast_linux_only_job, which derives the gate's needs. actionlint is clean.

Related: #14169 (sidebar-layout leg) and #14170 (profiling leg) shorten two of the slow guard legs.

🤖 Generated with Claude Code


Summary by cubic

Starts guards and web runs beside the fast static checks instead of waiting for them, opening the macOS admission gate about 25 s sooner. The gate still requires static-preflight to succeed, so macOS still never starts on a diff the static checks reject—the only cost is runner time on such diffs, which are rare. Updates the tests that pinned the old needs: [changes, static-preflight] ordering and asserts the gate keeps its requirement.

Written for commit 4f8a219. Summary will update on new commits.

Review in cubic

teamleaderleo and others added 2 commits September 24, 2026 00:31
Fails on main: both calls need static-preflight, so the gate that admits
macOS waits ~25 s longer than the checks themselves take.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
macos-admission-gate waits for every fast Linux job, and the guards
finish last on every sampled PR run (the gate opened 117-133 s after
changes). Both guards and web waited for static-preflight (~23 s) before
starting. They now start with it. The gate and the macos call still
require static-preflight to succeed, so macOS never starts on a diff the
static checks reject; the cost is guard and web runner time on such diffs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 17 minutes.

Check out review usage here.

View limit details

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

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: f1447c53-0e64-43d4-9b9a-d45b7ffb534f

📥 Commits

Reviewing files that changed from the base of the PR and between c0325cd and 4f8a219.

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

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

Copy link
Copy Markdown
Collaborator Author

An independent review at 4f8a219 found no problems.

  • What guards and web used to wait for: every job that needs guards or web also lists static-preflight directly. That covers macos-admission-gate, tests, linux-preflight and ci-status, so a static failure still turns ci-status red and still keeps macOS from starting.
  • Side effects: ci-guards.yml and ci-web.yml have contents: read only, no secrets and no deploys. The only new cost is guard and web runner time on diffs that fail static checks.
  • Gate needs: the derived set is unchanged.

Auto-merge (squash) is on. I'll measure the gate's opening time on a few PRs after this lands.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 24, 2026 08:12
@teamleaderleo
teamleaderleo merged commit 51d486b into main Sep 24, 2026
38 checks passed
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 24, 2026
ff6c6dc ci: stop restoring an iOS GhosttyKit cache nothing saves (manaflow-ai#14189)
2827231 ci: seed DerivedData on the 12 vCPU macOS 26 pool (manaflow-ai#14188)
ae46aa9 Let Computer Use toggles save past unrelated cmux.json issues (manaflow-ai#14183)
a785270 test: fail loudly when portal rendering authority denies a fixture's tab id (manaflow-ai#13937)
9a1dea0 test: pin which terminal tabs get an agent mark after manaflow-ai#14062 (manaflow-ai#14177)
91bcb28 test: run the change-area tests in parallel workers (manaflow-ai#14193)
6d203e8 test: await the geometry publish in the equalize-splits shortcut case (manaflow-ai#13916)
48f1adf ci: balance the guard legs the macOS gate waits on (manaflow-ai#14186)
38117cd test: settle the split's reparent-focus suppression before focus feedback (manaflow-ai#14049)
a12a0b8 ci: neutralize Swift sources without a per-character loop (manaflow-ai#14169)
2b6ca4c ci: stop counting queue time on cancelled jobs as runner minutes (manaflow-ai#14187)
2837f22 test: stop gating terminal focus on key status the app host cannot grant (manaflow-ai#13948)
23c0ce2 test: give each detect-step run its own cmux-ci scratch files (manaflow-ai#14185)
a13ea28 ci: skip Mac lanes that bundled scripts and guard-only lints cannot fail (manaflow-ai#14179)
b59f34f ci: restore Swift packages and a compilation cache for iOS uploads (manaflow-ai#14180)
bcca243 profiling: poll child processes every 0.1 s instead of every second (manaflow-ai#14170)
76d6176 refactor: move 45 leaf browser files into CmuxBrowser (manaflow-ai#14092)
bf13034 test: fail the Desktop drop fast instead of restarting the app host (manaflow-ai#14076)
51d486b ci: start guards and web beside Fast static checks (manaflow-ai#14176)

# Conflicts:
#	.github/workflows/ci-guards.yml
#	.github/workflows/ci.yml
#	.github/workflows/ios-appstore-upload.yml
#	.github/workflows/ios-testflight.yml
#	.github/workflows/nightly.yml
#	.github/workflows/seed-derived-data.yml
#	.github/workflows/test-ios.yml
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