ci: build the app target without the compilation cache on every Xcode (no bead)

Merged
TE
19d ago
+17-19

Summary

Main's macOS compile admission now builds the cmux app target without the Xcode compilation cache on every Xcode version. Before this change it did so only before 26.6.

On Xcode 26.6 (17F113), admission restores a DerivedData seed but still recompiles every app file, whatever the distance to the seed:

RunSeed tierChanged inputsCache hitsSwiftCompile tasks
38232844046near561 of 2,7352,731 (4,112 CPU s)
38318336606far5,5711 of 2,7132,711 (3,924 CPU s)
38201033789rebuild1,47876 of 2,8562,844 (4,178 CPU s)

This is the defect #14351 fixed for 26.3: under the cache the bridging header and PCH are rewritten on every build, so the restored state never counts. With the cache off for cmux on 26.3, a one-file edit compiled 2 tasks in 41 s. cmuxTests already builds without the cache. All other targets keep it.

Part of the incrementality work in cmuxterm-hq#1915. The target there is a PR compile p50 under 3 min; compile admission's compile step is 9.4 min p50 today.

Verification

  • Red, then green: bash tests/test_ci_test_compilation_cache_seed.sh. The red commit fails with FAIL: on Xcode 26.6 the app target must build without the compilation cache. After the fix, every check passes.
  • python3 scripts/verify-local.py --affected origin/main: 16 of 16 checks passed.
  • Not verified locally: a real Xcode build, since there are no local builds on this host. The before/after receipt is this PR's own macOS compile admission step time and its SwiftCompile (N tasks) line, compared with the table above. The DerivedData seeds are rebuilt by the same script, so the full effect shows after the next seed refresh.
  • The default verify-local.py run fails swift-syntax on this Linux host. This PR changes no Swift files.

Changelog

none

๐Ÿค– Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Builds the cmux app target without the Xcode compilation cache on every Xcode version, instead of only before 26.6.

Xcode 26.6 keeps the cache for the app after one incremental run, but admission recompiles every app file from a restored DerivedData regardless of seed distance: 2,711โ€“2,844 SwiftCompile tasks per run with only 1โ€“76 cache hits. With the cache off, a one-file edit compiles 2 tasks in 41 s. cmuxTests already builds without the cache; all other targets keep it.

Summary by CodeRabbit

  • Chores
    • Build validation now uses consistent compilation-cache settings across Xcode versions for both the app and its tests, improving consistency in automated build checks. No changes to app features or behavior are included in this update.