Repository navigation
ci: stop restoring the test compilation cache in compile admission - #14161
Merged
Merged
Conversation
The guard now fails while ci-macos.yml compile admission restores the xcode-compilation-test seed. Sampled admission logs on 2026-09-24 show the app target missing on every file (581/581, 566/566) even though the restore key, canonical paths and Xcode 26.6 (17F113) match the nightly seeder exactly (fingerprint bac5277611926ed6b40291f1640fed47 on both sides). Admission must still compute the fingerprint, which keys the DerivedData seed it adopts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
Swift keys each compile job on its whole module, so the one-module cmux app target and cmuxUITests miss on every file whenever any file in the module differs from the six-hourly nightly seed, which is every pull request. Only modules unchanged since the seed hit, and those are the ones the adopted DerivedData seed already leaves built. The restore cost 13-43 s and a 932 MB R2 download per admission run. Cold admission builds with the cache restored (816-957 s) were no faster than the nightly's cold builds with an empty cache (774-1153 s). The fingerprint step stays: it keys the DerivedData seed. nightly.yml still writes the cache; nothing on main reads it now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
teamleaderleo
enabled auto-merge (squash)
September 24, 2026 06:03
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
|
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 |
rustybret
pushed a commit
to rustybret/bmux
that referenced
this pull request
Sep 24, 2026
82543c5 ci: stop restoring the test compilation cache in compile admission (manaflow-ai#14161) 5da27d6 ci: route the persistent compile fleet command as control plane only (manaflow-ai#14157) b2ec91b ci: bring a Mac mini onto the compile fleet with one command (manaflow-ai#14148) 1f39b14 ci: cancel orphaned runs from the queue janitor (manaflow-ai#14156) 455179c ci: register new Python tests automatically at commit time (manaflow-ai#14153) e6ca0a2 fix(ios): mirror the signed-in account so pushes decrypt after launch (manaflow-ai#14110) fd028fe ci: run forks' own macOS CI on GitHub-hosted macos-26 (manaflow-ai#14151) f70a62b ci: cancel stale pull request runs on every janitor sweep (manaflow-ai#14144) e2fd37e ci: default the seed adoption kill switch to on (manaflow-ai#14150) 4926f0f fix: split the SSH session-list merge so it type-checks on slow runners (manaflow-ai#14142) 34d33d2 ci: run R2 cache writers in a main-only ci-cache-writer environment (manaflow-ai#14147) 4b7f66a ci: skip the Mac wrapper and remote-daemon lanes for ci.yml routing edits (manaflow-ai#14145) 4ca24a2 ci: give the DerivedData seeder the R2 public URL (manaflow-ai#14146) # Conflicts: # .github/workflows/app-host-test-rerun.yml # .github/workflows/auth-refresh-tests.yml # .github/workflows/ci-guards.yml # .github/workflows/ci-macos.yml # .github/workflows/ci-queue-janitor.yml # .github/workflows/ci.yml # .github/workflows/cli-pipe-regressions.yml # .github/workflows/cloud-command-deadlines.yml # .github/workflows/cloud-machine-tests.yml # .github/workflows/cloud-task-local-tests.yml # .github/workflows/iroh-v2.yml # .github/workflows/nightly.yml # .github/workflows/relay-tls.yml # .github/workflows/remote-daemon.yml # .github/workflows/seed-derived-data.yml # .github/workflows/terminal-hang-diagnostics.yml # .github/workflows/test-ios.yml
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.
Compile admission downloaded the nightly Debug compilation cache (932 MB, 13–43 s) on every pull request, but the app target never hit it. Sampled admission logs from 2026-09-24 show
cmuxat 581 misses / 0 hits and 566 / 0, withcmuxUITestsalso all misses. The key, canonical paths, runner pool and Xcode (26.6, 17F113) match the nightly seeder exactly: fingerprintbac5277611926ed6b40291f1640fed47on both sides.The cause is structural, not a key mismatch. Any change to the one-module app target invalidated every one of its cached compile jobs in these samples, and every PR changes it. Only modules unchanged since the six-hourly cache save hit (C targets, untouched packages), and the adopted DerivedData seed already leaves those built. Cold admission builds with the cache (816–957 s, n=4) were no faster than the nightly's cold builds with an empty cache (774–1153 s, n=5).
This removes the restore step from compile admission. The fingerprint step stays because it keys the DerivedData seed.
nightly.ymlstill writes the cache, since the same job writes the cold DerivedData seed and SPM cache that admission reads; nothing on main reads the compilation cache now. #14015 proposes E2E as a reader.The first commit changes
tests/test_ci_test_compilation_cache_seed.shto require that admission does not restore the cache and still carries the fingerprint (red). The second commit removes the step (green).Validation:
tests/test_ci_test_compilation_cache_seed.sh,tests/test_ci_pull_request_caches_are_read_only.py, all 46 tests that parseci-macos.yml/nightly.yml, andactionlint.Not verified: hit counts are 5,000-line window samples (the job-log API returns only the tail of finished jobs), not per-build totals, and timings are small-sample. Expected saving: 13–43 s and one 932 MB download per admission run.
🤖 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
Stops compile admission from restoring the nightly Debug compilation cache, which the app target never hits.
Swift keys every compile job on its whole module, so any change to
cmuxor cmuxUITests misses all cached jobs: sampled admission logs show 581/581 and 566/566 misses even with the key, paths, and Xcode matching the nightly seed exactly. Cold admission builds with the cache (816–957 s) were no faster than the nightly's cold builds with an empty cache (774–1153 s).nightly.ymlstill writes the cache, but nothing on main reads it now.Written for commit cc57adf. Summary will update on new commits.