Repository navigation
ci(nightly-next): prepare the nightly variant off the Macs, byte-identical - #25885
Conversation
|
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)
web and size checks: green |
|
Found 1 test failure on Blacksmith runners: Failure
|
|
Bead |
9fc8665 to
e859c1a
Compare
|
Review (Codex gpt-6-astra xhigh, independent): SHIP at e859c1a No blocking findings: the anchors are defined in the primary before the fallback aliases them; the client install runs on fresh and reused apps before Archive; both prepare jobs hold only Linux-safe work and the lipo shim covers every remaining call; the theme test uses CHANNEL_APP_PATH; routing tests and step coverage match. |
build-nightly-app now installs the cmux-tui client, strips it, writes its version and checks its capabilities. The helper job strips the Ghostty CLI helper. prepare-nightly-variant (primary and fallback) runs on Linux with llvm-lipo for thinning and the arch checks, plus the license and libintl checks and packaging. The theme-picker regression moves to verify-signed-nightly, where the signed sidecar check already runs. The prepared app is byte-identical to the old path for the same sha. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5
…uild-nightly-app Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5
0bc4235 to
ebcab89
Compare
|
Review (Codex gpt-6-astra xhigh, independent): SHIP at ebcab89 No findings. The universal-nightly guard keeps the resolver, commit, dependency and ordering checks, now as build-nightly-app install → re-strip → archive and prepare require → thin; the runner-label and tar-restore updates do not weaken the restore check. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40458486909 at 67f70f2 failed: cmux-next generated files. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40458763715 at 9a52a3c failed: cmux-next generated files. |
…rip (#26000) #25885 moved the helper strip into build-nightly-ghostty-cli-helper. On a #25930 reuse hit nothing is built, so the strip failed on a missing file, and helpers reused from before #25885 are unstripped. Agent-Session: https://cmux.com/deeplink/agent?id=aid-85ca59f74f02d81734c3 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ient moved (fix-forward #25885) (#26089) * ci(nightly-next): the browser-data proof keeps its scope after the client moved #25885 moved the cmux-tui client install into build-nightly-app, so the copy prepare's browser-data proof scans now carries bin/cmux, which the proof never scanned before (it ran ahead of the install). Every nightly-next prepare failed on it. Drop what install-cmux-tui-client.sh writes from the copy, so the proof covers exactly the files it covered before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5 * ci(nightly-next): keep the installer's name out of prepare's proof comment The contract test refuses install-cmux-tui-client.sh anywhere in prepare. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
…h Linux is down (#26355) decide, the resolve/pick jobs, prepare-nightly-variant (primary, fallback, gate) and find-nightly-next-recovery hold no release secrets. While the overflow record CI_CLOUD_OVERFLOW_SAVED is set they run on blacksmith-6vcpu-macos-26, which kept moving through the 2026-10-27 Blacksmith Linux outage while hosted Ubuntu sat at its concurrency limit. On a Mac, prepare skips the llvm-lipo shim (Apple's lipo gives the bytes llvm-lipo copies) and restores with the Mac's tar, as the job did before #25885. An unset record is falsy, so healthy routing is unchanged. Agent-Session: https://cmux.com/deeplink/agent?id=aid-85ca59f74f02d81734c3 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo: "Why are the minis tied up?" / on byte identity: "and we proved that it's all byte identical?"
What changes
prepare-nightly-variant(primary and fallback) now runs off the Macs. Primary usesblacksmith-4vcpu-ubuntu-2404(ubuntu-24.04outside manaflow-ai). Fallback usesubuntu-24.04: it does nothing after a successful primary and runs the full preparation after a failed one. There, prepare does only work that is proven byte-identical:llvm-lipo(llvm-18) aslipo, for the thin and the arch checks. A small shim trims the trailing spacellvm-lipo -archsprints.cmux-prepared-app.tar.gz. The artifact name and the tar layout are unchanged.Everything that runs or rewrites Mach-O moves to Mac jobs that already run:
install-cmux-tui-client.sh(including theremote-probe --jsonandacpmux --versionprobes),strip-release-bundle.sh,write-cmux-tui-version.shandcheck-daemon-capabilities.sh --static-only. This adds about 30–40 s to a job that is on a Mac anyway.strip -S -x), the strip prepare used to apply to the injected helper.llvm-stripdoes not give Apple strip's bytes, so it stays on the Mac.verify-diff-sidecar-artifact.sh --require-signed) on the signed app, so prepare's unsigned copy of the check is dropped.prepare now starts with "Require the cmux-tui client build-nightly-app bundled". It refuses an unsigned app whose
cmux-tui.versionis missing or doesn't match the resolved commit.This frees 3–6 min of owned minis per nightly. Recent primary prepare times on owned minis were 4.6, 2.9, 3.0, 5.9 and 5.5 min, with outliers of 12.8 and 21.4 min under queue pressure. After this change prepare uses 0 Mac minutes, and build-nightly-app gains about 30–40 s.
Byte identity
Test sha:
8b3b1891681798cabadc45b37a9d1d5192b437b7, from nightly run 40380339203 (arm64).cmux-nightly-prepared-app-arm64-8b3b189artifact that run uploaded.lipo, I ran the prepare half: inject the helper, inject licenses, drop CEF, thin, run the libintl check and tar.Apple
strip -S -xgives the same helper bytes with Xcode 26.6 and 27.1. The Mac-stripped helper (6ffdf502…) is byte-equal tobin/ghosttyin the old prepared app.Tests
test_ci_nightly_off_blacksmith.pychecks several things:select-ci-xcode,ditto,otoolorcodesignstep;test_nightly_trusted_routing.py: the prepare-routing test now expects the same runner on every attempt..github/nightly-step-coverage.jsonhas entries for the moved and new steps.cmux-ci test. The failures left are the 6 that fail the same way on base:test_ci_change_areas(react-apps aggregate),test_ci_fork_runner_routingx2,test_ci_workflow_path_filter_parity,test_ci_workflow_run_sourcesandtest_runner_label_policy(every runner variable reported).Risk
ubuntu-24.04, and its only job is preparation.runs-on(its Mac fallback label). Once prepare is off the Macs, that hunk no longer applies to prepare. Whichever PR lands second rebases.Agent session: agent session
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.