Repository navigation
ci(shim-cpp): run the CEF shim C++ tests on Blacksmith Linux - #23712
Conversation
Red on base: the scripts call xcrun themselves and the job runs on a Mac pool. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16
The ten scripts/cmux-next/test-*-cpp.sh compile header-only rules with no CEF and no Apple SDK, yet the job took a Mac (light/side pool, Blacksmith macOS fallback) and selected Xcode only to find clang++. scripts/cmux-next/lib/cxx.sh now picks the compiler (CXX, else xcrun clang++ on a Mac, else clang++) and the job runs on blacksmith-4vcpu-ubuntu-2404 under the same name. cmux_page_path_test.cpp relied on macOS's /tmp being a symlink to give the root through one; it now makes its own symlink, so Linux tests that case too. The owned-pool sources guard now only warns, on feat-cmux-next, about a stale entry in main's rescue list: main's list cannot change in the commit that moves a feat-cmux-next workflow off the minis. A pull request to main removes cmux-next-shim-cpp.yml from SIDE_WORKFLOW_PATHS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 2f1920a; does not block |
|
Owned by ci-linux-move on cmux16 · session |
|
Found 10 test failures on Blacksmith runners: Failures
|
…n does not have Narrower than warning on all of feat-cmux-next: a feat-cmux-next-only workflow moved off the minis cannot drop its entry from main's list in the same commit, on either branch's run; an entry for a workflow main has still fails, since a pull request to main can fix it. Main gets the same test change first, so neither branch goes red when this lands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16
|
Bead |
|
Independent review (claude subagent) of the owned-pool guard change, read together with #23719.
Review (claude subagent): SHIP at a0048a6 |
…n does not have (#23719) A feat-cmux-next-only workflow that moves off the minis (cmux-next-shim-cpp.yml in #23712) cannot drop its entry from main's owned_pool_rescue list in the same commit, and the entry cannot go first: main's run would find the workflow owned and unwatched. Such an entry now warns; an entry for a workflow main has still fails. Same change as feat-cmux-next's copy in #23712, so the two copies stay identical. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…n the guard on PRs The fork-routing guard wants a fork pull request's label chosen before vars.LINUX_RUNNER, the routing table refuses an entry for a job that no longer runs on macOS, and the registry needs a pull-request job to run tests/test_cmux_next_shim_cpp_linux.py (now a ci-guards.yml step). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16
|
Independent review of 208993d (the guard-fix commit), by a claude subagent:
Review (claude subagent): SHIP at 208993d |
|
base-red-watch: |
) cmux-next-shim-cpp.yml runs on Blacksmith Linux since #23712, and macos-matrix-fuzz.yml was retired in #23725, so neither takes an owned mini any more. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16020-82b9-7501-8b24-24eafedababb&host=cmux16 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
…egistered-tests Conflicts: .github/runners.json takes the base's removal of the shim-cpp Mac entry (#23712 moved it to Linux) and keeps this branch's two macOS jobs. tests/test_swift_testing_suite_timeout.py takes the base's no-network fixture, which already keeps the web-bundles case off files.cmux.com. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Merged (1355c9c): the first PR of the ci-linux-move lane, which moves CI jobs that don't need macOS off the Mac runners. This PR moves
cmux-next-shim-cpp.yml; later workflows get their own PRs.Summary
CEF shim download state (C++)now runs onblacksmith-4vcpu-ubuntu-2404(vars.LINUX_RUNNERwhen set;ubuntu-24.04on forks). It used to take a light or side mini, or Blacksmith macOS as the fallback. The job keeps its name, so required checks and the stall and merge-audit tools still match it.scripts/cmux-next/test-*-cpp.shcompile header-only rules that need no CEF and no Apple SDK. The job selected Xcode only to findclang++. The newscripts/cmux-next/lib/cxx.shpicks the compiler:CXXwhen set;xcrun clang++on a Mac, so local runs are unchanged;clang++.cmux_page_path_test.cppused macOS's/tmpsymlink to pass the root through a symlink. The test now makes its own symlink, so that case is tested on Linux as well.tests/test_cmux_next_shim_cpp_linux.pyis a newlinux-guardtest, committed red first. It checks that:xcrunitself;tests/test_ci_owned_pool_sources.py: on feat-cmux-next, a stale entry in main's rescue list is now a warning instead of a failure.cmux-next-shim-cpp.ymlfromSIDE_WORKFLOW_PATHSonce this one lands.runs-ontakes the fork-safe Linux expression the guard jobs use, the job's.github/runners.jsonmacOS entry is gone, and aci-guards.ymlstep runstests/test_cmux_next_shim_cpp_linux.pyon every PR.Testing
python3 tests/test_cmux_next_shim_cpp_linux.pyfailed: 11 failures in 4 tests.python3 tests/test_ci_owned_pool_sources.pypasses (7 tests, stale-entry warning printed), and so doespython3 tests/test_ci_owned_pool_rescue.py.xcrun clang++(the default) andCXX=/usr/bin/clang++. The case counts match: 62, 18, 101, 20, 28, 42, 7, 18, 50 and 10. No/tmp/cmux-page-path.*directory is left behind.Before and after (job
CEF shim download state (C++), from the Actions jobs API)The test time is the same (about 20 to 25 s). What changes is the wait: on the Mac pool the job waited up to 3 h behind the side lane, and on Linux it starts in seconds. The Mac time saved is small, about 1.8 owned-mini hours a week (ci-dash), plus the queue slot.
Observed / Not run
actionlintandshellcheckaren't installed on cmux16, so the post-edit hooks and CI check those.Inventory: Mac-runner jobs and what they need
I read these from origin/main and origin/feat-cmux-next and ran nothing. The hours are owned-mini job hours over 7 days, from ci-dash (
jobs-group.json?since=7d, about 2,142 h in total).The linux-swift lane (cosmic-gray) took every Swift/SwiftPM job. This lane keeps lint, Rust, web/bun, Python, C++/script tests, generators and diff checks.
/bin/bash3.2 only (CMUX_PARSE_BASHcan point elsewhere)CMUX_FLEET_CONTROLLERxcrun llvm-dwarfdump; macOS fetch listsstat -f,/bin/zshspool pathcfg(target_os="macos")code, launchd, PTYsecurityswift build/swift test(AppKit, macOS 14 platform)The Mac side-lane queue before the first merge (ci-dash, 2026-10-21 about 20:24Z):
Changelog
none
Risk: low. CI-only change: one test job's runner, its test scripts, and a CI guard's warning.
Agent session: cmux16
🤖 Generated with Claude Code