Skip to content

ci: build_class.py says which changes need only a blaze build - #36567

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
lane/blaze-only-classes
Nov 5, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
lane/blaze-only-classes

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Leo, 2026-11-05: "Can't we deterministically say 'these types of changes only need a blaze compile/build'"

scripts/ci/build_class.py puts 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 can include_str! one, and a generator can read an image).

Why blaze is provable: a crate is app when it is in the Cargo dependency closure of something another language links:

  • any staticlib, cdylib or *-ffi crate in the repo (CCmuxAppFFI, the iOS link FFI, cmux-rd-ffi, wasm);
  • a crate a Package.swift names (the cmux-terminal-client xcframework);
  • the router's own lists (cmux_next_route.py): the CCmuxAppFFI sources, and the files the app scheme's build phases name, read from cmux.xcodeproj. The cmux-tui Cargo.toml and Cargo.lock are among them.

Every list is read from the Cargo manifests, Package.swift and cmux.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:

  • Today, 17 of the 93 cmux-tui workspace crates are blaze-only, including acpmux and the cmux-tui daemon/CLI crate.
  • Of the last 500 feat-cmux-next commits, 43 were blaze. That is 39% of the 109 commits that touched cmux-tui.
  • Most other crates are app because the cmux-terminal-client xcframework reaches 56 of them.
$ scripts/ci/build_class.py --changed-files files.txt
blaze
  blaze      cmux-tui/crates/cmux-tui/src/main.rs: crate cmux-tui/crates/cmux-tui: only Cargo builds read it (blaze build cmux-tui)

Documented in docs/ci/cmux-next-tiers.md. The test is registered manual, because there are no new CI tests.

Review fixes so far:

  • An app resource image is a build input.
  • docs/remote-agents-and-cloud.md is embedded with include_str!.
  • cmux-rd-host is its own workspace.
  • Agent-icon SVGs feed a generator.
  • CLI docs are embedded with 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.
  • The router run on this PR's own files picks no Mac tier.

Observed / Not run

  • Observed: the tests above, the 500-commit count, and prepush-gate.py with no new violations.
  • Not run: nothing calls the classifier yet (gate-plan, cmux-ci compile-check). That wiring is a follow-up.

Changelog

none

Leo-ask: ask-bb7a20ec18
Leo-Ask-Trace: ask-bb7a20ec18

🤖 Generated with Claude Code

Agent session: agent session

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
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 57be79a: 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=pr36567 -f ref=lane/blaze-only-classes -f platform=macos -f backend_mode=local

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.
Those jobs last passed at bb2ff7a. This pull request is one of 5 merged since: #36564, #36567, #36547, #36518, #36503.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 5, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Found 7 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp7i8_rqav/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpvvm1pc51/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames 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
test_every_routed_input_triggers_the_workflow (main.PullRequestTiers.test_every_rou
ted_input_triggers_the_workflow) (path='skills/cmux-live/SKILL.md')
View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

  • [P1] [blocking] [category:correctness] [finding:F1] [outcome:pending] classify_path marks every DOC_SUFFIXES path as no-compile before considering package inputs (build_class.py:55). This misclassifies app resources such as Packages/macOS/CmuxNext/Sources/CmuxNextApps/Resources/.../icon.svg; CmuxNext processes that entire Resources directory in its package manifest, so changing the image changes the app build output. The classifier would skip the app build for such a change. Restrict the suffix shortcut to files outside Packages/ or otherwise honor the package/resource build inputs.

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 teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (gpt-6.1-sol): SHIP at 57be79a

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 57be79ad Deployed Nov 5, 2026 by teamleaderleo via cmux-tui tree preflight #116469
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant