Repository navigation
ci: build_class.py says which changes need only a blaze build - #36567
Conversation
Leo, 2026-11-05: "Can't we deterministically say 'these types of changes only need a blaze compile/build'". Each changed file is no-compile (docs), blaze (a cmux-tui crate no Swift compile or app build phase reads) or app, from the router's own readers of the Cargo manifests and cmux.xcodeproj. Leo-Ask-Trace: ask-bb7a20ec18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-7bfe879f63f99aaeee1f
|
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 Shipped in:
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/42045816653 at 446a051 failed: cmux-next fleet Release compile. |
|
Found 7 test failures on Blacksmith runners: Failures
|
|
Review (codex gpt-6-astra high, router-review): BLOCK at ffbf5bf Leo-Ask-Trace: ask-bb7a20ec18 BLOCK at ffbf5bf Visual verdict: no images; Leo tries the build
Follow-ups: none |
Review F1 on #36567: an app resource image under Packages/ is a build input, and a crate can include_str! its README. no-compile is now docs/ and design/ docs and top-level Markdown; any other doc is placed like any other file. Leo-Ask-Trace: ask-bb7a20ec18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-7bfe879f63f99aaeee1f
Review on #36567: docs/remote-agents-and-cloud.md is a cmux-tui tree input that Rust embeds with include_str!. A doc is no-compile only when the router's consumed() (tree key, generated checks, job scripts) and the test-target reads leave it out. Leo-Ask-Trace: ask-bb7a20ec18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-7bfe879f63f99aaeee1f
Review on #36567: crates outside the cmux-tui workspace (cmux-rd-host), docs and images that generators or include_str! read, and crates other builds link. blaze now needs a cmux-tui crate outside the Cargo closure of every staticlib, cdylib, *-ffi or Package.swift-named crate, and names every Rust workspace that builds it. Everything outside cmux-tui crates is app. Leo-Ask-Trace: ask-bb7a20ec18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-7bfe879f63f99aaeee1f
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (gpt-6.1-sol): SHIP at 57be79a
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
Leo, 2026-11-05: "Can't we deterministically say 'these types of changes only need a blaze compile/build'"
scripts/ci/build_class.pyputs each changed file in one class. The change takes the heavier one:blaze: files inside cmux-tui crates that only Cargo builds read. The blaze (or cargo) builds of the Rust workspaces it names are the whole build. The Xcode build, the Swift compiles and the app build can all be skipped. The output names each workspace to build: the crate's own, plus every workspace outside cmux-tui with a path dependency on it.app: anything else. That includes any file it cannot place and every file outside cmux-tui crates (docs too: a crate caninclude_str!one, and a generator can read an image).Why
blazeis provable: a crate isappwhen it is in the Cargo dependency closure of something another language links:staticlib,cdylibor*-fficrate in the repo (CCmuxAppFFI, the iOS link FFI, cmux-rd-ffi, wasm);Package.swiftnames (the cmux-terminal-client xcframework);cmux_next_route.py): the CCmuxAppFFI sources, and the files the app scheme's build phases name, read fromcmux.xcodeproj. The cmux-tuiCargo.tomlandCargo.lockare among them.Every list is read from the Cargo manifests,
Package.swiftandcmux.xcodeproj, so it cannot drift from the code. Any crate outside those closures is read only by Cargo.The class covers builds only. A daemon change still runs the daemon tier's live-daemon suites.
How often it applies:
feat-cmux-nextcommits, 43 wereblaze. That is 39% of the 109 commits that touched cmux-tui.appbecause the cmux-terminal-client xcframework reaches 56 of them.Documented in
docs/ci/cmux-next-tiers.md. The test is registeredmanual, because there are no new CI tests.Review fixes so far:
docs/remote-agents-and-cloud.mdis embedded withinclude_str!.cmux-rd-hostis its own workspace.include_str!.All of these are now
app, or name their own workspace.Testing
python3 tests/test_ci_build_class.py: 7 tests OK on the real tree. They cover a daemon crate, the FFI crates and their path dependencies, the scheme-phase inputs, cmux-rd-host's own workspace, optchat-chief named as a Rust user of cmux-chief, docs and SVGs outside crates, and how classes combine.Observed / Not run
prepush-gate.pywith no new violations.Changelog
none
Leo-ask: ask-bb7a20ec18
Leo-Ask-Trace: ask-bb7a20ec18
🤖 Generated with Claude Code
Agent session: agent session