Skip to content

ci: make the aggregate app-host product the default, layers opt-in - #14975

Merged
teamleaderleo merged 2 commits into
mainfrom
ci/aggregate-product-default
Sep 27, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
ci/aggregate-product-default

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

What

ci-macos.yml's product_artifacts input now defaults to aggregate. Compile admission stops packaging and uploading the four app-host layer artifacts and their index. App-host shards and tests-build-and-lag then skip "Restore selective app-host product layers" and read the aggregate product: node-local cache, trusted peer, R2 when configured, then parallel range requests. product_artifacts: layered still turns the layers on for a canary, as docs/ci/app-host-layer-transport.md describes.

Why

Layers are slower on both ends. Measured on five full-suite PR runs on the owned minis (runs 36287456496, 36288708517, 36311480979, 36271916361, 36274774841):

layered aggregate
compile admission, after the aggregate upload +100 to 255 s (package, 4 uploads, index upload) 0
shard product fetch 68 to 231 s, median ~115 s (n=17) 34 to 90 s, median ~70 s (n=18, parallel transport)

Every shard needs compile admission, so the layer uploads sit on the critical path of every full-suite run. Each shard also holds its mini's gui token for the whole job. Over the last 24 h, gui-pool shards queued 362 minutes. During those waits the fleet held a median of 10 gui tokens with fewer than half its capacity units in use, so the gui token was the binding constraint. With this change each full-suite run should finish about 2 to 4 minutes sooner, and each shard should hold the gui token about 45 s less.

Layers became the default in #13567, a large squash whose stated purpose was peer transport. The parallel aggregate transport (74b94e3) landed after it.

Tests

python3 tests/test_ci_selective_layer_wiring.py passes. The default assertion is updated, and the other wiring checks are unchanged.

🤖 Generated with Claude Code


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


Summary by cubic

Makes the aggregate app-host product the default in ci-macos.yml, with the layered transport now opt-in via product_artifacts: layered, as docs/ci/app-host-layer-transport.md describes.

  • Measured on owned minis: layers added 100–255 s to compile admission and 68–231 s to shard restores, versus 34–90 s for the aggregate over parallel range requests.
  • Shards now skip "Restore selective app-host product layers" and read the aggregate product from node-local cache, trusted peer, R2, then parallel range requests; a canary can re-enable layers by passing product_artifacts: layered from ci.yml's macos call.
  • Updates the default assertion in tests/test_ci_selective_layer_wiring.py; other wiring checks are unchanged.

Written for commit 6829244. Summary will update on new commits.

Review in cubic

The layered product transport (four layer artifacts plus an index) is slower
than the aggregate product over parallel range requests, and its uploads sit
on compile admission, which every app-host shard waits on. Measured on five
full-suite PR runs on the owned minis, 2026-09-26/27:

- compile admission: the layer package + four uploads + index upload added
  100 to 255 s after the aggregate upload finished.
- app-host shards: "Restore selective app-host product layers" took 68 to
  231 s (median about 115 s, n=17); "Try parallel GitHub artifact transport"
  of the aggregate took 34 to 90 s (median about 70 s, n=18).

Each shard holds its mini's gui token for the whole job, and gui-pool shards
queued 362 minutes in the last 24 h while the gui tokens were the fleet's
binding constraint (median 10 held, units under half used). Dropping layers
cuts about 2 to 4 minutes from each full-suite run's critical path and about
45 s of gui-token hold per shard.

docs/ci/app-host-layer-transport.md already describes layers as an opt-in
canary; product_artifacts: layered still turns them on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: ed7a905d-29b8-426a-9c63-6f3e1438e12a

📥 Commits

Reviewing files that changed from the base of the PR and between 52dce98 and 6829244.

📒 Files selected for processing (2)
  • .github/workflows/ci-macos.yml
  • tests/test_ci_selective_layer_wiring.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo merged commit f0e964c into main Sep 27, 2026
49 checks passed
@teamleaderleo
teamleaderleo deleted the ci/aggregate-product-default branch September 27, 2026 11:46
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 68292448b3, merged 2026-09-27 11:46:19 UTC

  • Not verified at merge: ci-status (not reported), macOS compile admission (in progress), CI fast guards (in progress), guards (15) (in progress)
  • Verified: Web complexity, web-validation, Fast static checks, receipt-contract, Testbox broker trust boundary, transport
  • Skipped by policy: admission-placement, browser, Claude wrapper regressions, GhosttyKit release check, remote-daemon, suite-coverage, swift-package-tests, web, web-build, web-database-tests, web-tests
  • Full suite: runs on main after merge.

Labeled merged-unverified: if main breaks near this merge, look here first.

@github-actions github-actions Bot added the merged-unverified A judging check was not green at merge; see the merge receipt comment label Sep 27, 2026
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 27, 2026
f5c179f iOS: fix the test failures that keep iOS CI red on main (manaflow-ai#14803)
8685bf5 Hold update relaunch while agents are mid-turn (manaflow-ai#14969)
dc90332 Keep CLI socket-discovery tests off the host's real cmux (manaflow-ai#14919)
dd3c91b docs: shorten root agent instructions and link existing procedures (manaflow-ai#14998)
8c744df Rename edits inline or in the palette, never in an alert (manaflow-ai#14986)
9ae4383 Calmer chrome motion: appear instantly, fade out only, no overshoot (manaflow-ai#14984)
6510f56 Write opencode config JSON without escaping slashes (cmux 7140) (manaflow-ai#14805)
ab5e7da ci: stop catch-up merges from failing the CLA check (manaflow-ai#14913)
52c8f41 Add cmux session move for Claude sessions (manaflow-ai#14959)
36785b1 Hide decorative Settings sidebar icons from VoiceOver (manaflow-ai#14989)
4c7158c Label the sound preview button and fix mistranslated action verbs (manaflow-ai#14983)
e704a77 Bound untracked paths stored in last-turn diff baselines (manaflow-ai#14980)
f073df1 Fix remote Files sidebar for names that change under NFD (manaflow-ai#14978)
5c68499 Bump bonsplit: mouse wheel scrolls the overflowed tab strip (manaflow-ai#14985)
9466dcb Keep agent resume bindings through the update-relaunch save (manaflow-ai#14971)
ef8b037 docs: take release notes from a Changelog section in each PR instead of CHANGELOG.md edits (manaflow-ai#14934)
6eddfd7 ci: skip the delta diff when main moved further than the pull request (manaflow-ai#14987)
fefcec7 ci: attribute red PR runs to the machine or the code, re-run machine failures once (manaflow-ai#14977)
c185deb Accept file drops on remote tmux mirror panes (manaflow-ai#14981)
90773c7 test: make CmuxSidebarGit probe waits event-driven (manaflow-ai#14973)
1f2dbfe ci: skip the scheduled Blacksmith cache warmers while owned pools serve PRs (manaflow-ai#14827)
2850651 docs: add a guide to customizing cmux's look (manaflow-ai#14850)
b66e365 Resolve a separate sidebar's content against its own backdrop (manaflow-ai#14841)
88a9360 UI tests: one labelled frame per action, built in CI; scripts/ui-test (manaflow-ai#14966)
20cfa78 fix(omo): resolve relative file refs in the shadow config without double-loading OpenCode config (manaflow-ai#14935)
f0e964c ci: make the aggregate app-host product the default, layers opt-in (manaflow-ai#14975)
52dce98 ci: run and register the machine-failure test (manaflow-ai#14972)
7bf48bc ci: route compile admission by kept-build distance across minis (manaflow-ai#14949)
44fa3f5 Offer cmux in Open With for Markdown, source, and text files (manaflow-ai#14968)
45c2d66 Replay the Claude session id of agents in cmux ssh (cmux-tui) panes (manaflow-ai#14906)
b4c1b31 Label icon-only chrome buttons and localize project panel text (manaflow-ai#14926)
14a6909 seed prefetch: keep the seed adopt would pick, of any seeded width (manaflow-ai#14944)
19e73d2 ci: self-calibrating warm-distance compile estimates (manaflow-ai#14932)
fa98d86 ci: redispatch focused runs the Mac failed before any test started (manaflow-ai#14963)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-unverified A judging check was not green at merge; see the merge receipt comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant