Skip to content

test-ios: rerun CmuxiOS unit tests once when the runner's precompiled modules are stale - #24600

Merged
azooz2003-bit merged 1 commit into
feat-cmux-nextfrom
ci-ios-stale-pcm-retry
Oct 23, 2026
Merged

azooz2003-bit merged 1 commit into
feat-cmux-nextfrom
ci-ios-stale-pcm-retry

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

ios-simulator-build failed twice on #24572 (cmux9s-mac-mini-glaeda-4, cmuxs-mac-mini-5-glaeda-2) with:

error: file '…/cmuxios-unit-tests/<runner>/Build/Products/Debug-iphonesimulator/include/ghostty.h' has been modified since the module file '…/SwiftExplicitPrecompiledModules/GhosttyNextKit-*.pcm' was built

The owned runners keep this DerivedData per runner, so a push rebuilds only what changed. But each run copies ghostty.h again with a new mtime, which leaves the explicit PCMs from the previous run stale. Base pushes skip this lane, which is why only PRs that touch Packages/iOS or ios/ see it.

On exactly that error, the step now clears the three module caches and runs once more. Any other failure fails as before.

Changelog

none

Tests

Observed / Not run

🤖 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

Retries the CmuxiOS unit test step once when a runner's cached precompiled modules are stale, so the lane stops failing on the "has been modified since the module file" error.

  • The per-runner DerivedData keeps explicit precompiled modules; each run copies ghostty.h again with a new mtime, leaving them stale.
  • On that exact error, clears SwiftExplicitPrecompiledModules, ExplicitPrecompiledModules, and ModuleCache.noindex, then runs the tests once more.
  • Any other failure still fails the job as before.

Written for commit 59e8907. Summary will update on new commits.

View guided diff Turn on auto-fix

…iled modules are stale

The owned-runner DerivedData (cmuxios-unit-tests/<runner>) keeps explicit precompiled
modules. The build copies ghostty.h again on each run, and the next run stops with
"ghostty.h has been modified since the module file GhosttyNextKit-*.pcm was built" (seen on
#24572 on cmux9s and cmuxs-mac-mini-5). On exactly that error, clear the module caches and run
once more; any other failure stands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@azooz2003-bit azooz2003-bit added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 23, 2026
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 59e8907: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr24600 -f ref=ci-ios-stale-pcm-retry -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 79c784a to compare; do not merge until green; see lane-rules

@azooz2003-bit

Copy link
Copy Markdown
Collaborator Author

Review (fresh correctness subagent): SHIP. Under set -euo pipefail, if ! run_tests passes the exit status through, and any non-matching failure exits 1. The watchdog reopens its log with wb, so the grep reads the run it is checking. The three cleared paths are the explicit-module caches under -derivedDataPath, and the SPM cache is left alone. Nothing is masked: a retry needs that exact compile error, and no tests ran before it. Nit: a retry can double the step's time. That's resolved: the stale-module failure stops in the first minute of compiling (42 s on #24572), so a second run fits in the 20-minute limit.

@azooz2003-bit azooz2003-bit added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 23, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator

Bead cx-f6j98 created for this PR by the cmux coordinator.

@blacksmith-sh

blacksmith-sh Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Found 10 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpk7cl7asz/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpvzuqiclf/summary-missing.json (live):/summary-missing.json (live): View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs
test_base_passes (main.NoticesPairTests.test_base_passes)/
test_base_passes (main.NoticesPairTests.test_base_passes)
View Logs
test_targets_outside_the_app_go_to_the_mac_canary (main.SwiftCanaryFleetCoverage.te
st_targets_outside_the_app_go_to_the_mac_canary)/
test_targets_outside_the_app_go_to_the_mac_canary (main.SwiftCanaryFleetCoverage.te
st_targets_outside_the_app_go_to_the_mac_canary)
View Logs
the committed export failed: check-daemon-capabilities-fresh: plans/cmux-next/
daemon-capabilities.json is stale:
View Logs

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

@azooz2003-bit

Copy link
Copy Markdown
Collaborator Author

Verified on this PR's own ios-simulator-build, rerun on cmuxs-mac-mini-5-glaeda-2:

  • The first run stopped on ghostty.h has been modified since the module file …GhosttyNextKit-*.pcm was built.
  • The step logged stale precompiled modules … clearing them and running again.
  • The retry passed ("Test run with 19 tests in 4 suites passed"), and the job ended success.

Remaining reds are base findings: cmux-next checks (the ThinScroller files in CmuxNextDesign) and nightly-guards (no xcodebuild on that runner).

@azooz2003-bit
azooz2003-bit merged commit b5e9793 into feat-cmux-next Oct 23, 2026
172 of 185 checks passed
@azooz2003-bit
azooz2003-bit deleted the ci-ios-stale-pcm-retry branch October 23, 2026 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants