Skip to content

acpmux: omit tools from session summary rows - #27211

Merged
teamleaderleo merged 18 commits into
feat-cmux-nextfrom
lane/hb-summary-tools
Oct 29, 2026
Merged

teamleaderleo merged 18 commits into
feat-cmux-nextfrom
lane/hb-summary-tools

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Default _acpmux/sessions and _acpmux/watch replies omit only tools and toolsMutable. Closed sessions remain in both. _acpmux/info, session attachments, and attached updates retain the complete inventory. Explicit withTools: true preserves inventories for consumers that need a full list; acpmux ls --with-tools --json exposes it in the CLI. Peer daemons opt in so remote per-session wait results keep current inventories, including sessions created after subscription. ACP session/list remains full.

Leo (2026-10-28): "I do a hell of a lot of routing to remote machines, right? ... Are we covering the edge cases for when, you know, something isn't going right, if there's recovery, whatever, stuff like that."

Leo (HQ #4870): "how much RAM, how many CPU cores are we taking with all these things? Are there ways to make things more efficient?"

Based on feat-cmux-next after #27048 merged; rebased onto ba6bbf43e28b3d49f431d9438855650c90089347. This changes neither Home nor sidebar behavior.

Consumer audit

Consumer Inventory read after this change
Webview direct.ts, model.ts, App.tsx, summary/chatTools.ts, SourcesAddMenu.tsx Already read the selected session's _acpmux/attach response and attached updates, then _acpmux/set_tools results. The browser regression now supplies no tools in its initial watch row and verifies the tools menu still works. Census updates merge into selected-session detail without deleting absent fields.
Swift AcpmuxStatusClient, agent pane, census, links, session-folder callers No list/watch tool inventory readers found. The tools integer in HomeEngineTurn is unrelated turn statistics. Audited #27017 at 05d4d47fb256464aa5436d0206b70c5d4244c0fa; its census/dialog/link/folder/harness callers do not read either field and are not edited here.
cmux CLI and MCP topology/agent-session consumers Their lists project identity, status and topology, not inventory. Session reads/attachments remain complete; no inventory reader depended on a census row.
acpmux ls --json (cli/run/standard.rs) Compact by default; use session info SESSION --json for one inventory or explicit ls --with-tools --json for the full list. The daemon-backed CLI regression checks both shapes.
acpmux wait (server/wait.rs) Keeps its existing full per-session summaries. Peer transport explicitly requests withTools for initial state and subsequent updates so its remote cache remains complete and current.
acpmux web (cli/run/extra.rs) Opens the same webview; selected-session attachment supplies inventory.
acpmux_mcp.rs (acpmux_ls, acpmux_info) ls returns compact census rows and displays name/state/title; info already calls _acpmux/info for the complete session, including tools.
cmux-chief/src/acp.rs, TUI list and native agent-session list/notice readers Their typed/projection reads do not consume tool inventories; the summary remains compatible.
Peer replication (peer.rs, hub/peers.rs) and ACP session/list Peers explicitly opt in to withTools to support remote wait/cache reads; default peer queries are compact too. ACP's separate list shape retains its _meta.acpmux inventory.

Validation

Focused regression covers default full and paged lists, initial watch, closed sessions, per-session info/attach, compact census notices, opted-in peer discovery and tool changes, and unchanged ACP metadata. CLI and browser regressions cover explicit list inventory and selected-session UI inventory.

  • Final head 612eac11aa80e23ac7119f5b5fd7ba390b776d67: clippy --all-targets --locked -D warnings, tool_inventory, and ls_selection pass in run 40837507332, lane job b85c280c544c4fbcb0fad35ec9a2d782.
  • Protocol snapshot and formatting passed in 40836924973, lane job 1dec6ac0e9834b12b478f7541af6c70f, at 1ed830fd3d2e23c8a13b7923d272c76d1507d860. The only subsequent change replaces two divisibility expressions in the benchmark to satisfy clippy.
  • Generated web protocol and Chromium tools-menu regression passed in 40836930430, lane job 8608281b57b64193b3b55eda1d07adc9, at the same unchanged web tree.
  • Seeded before/after wire and renderer measurement passed in 40837884220, lane job 1d96c7237b6247d5bfaae336a8f5b574, at final head; baseline ba6bbf43e28b3d49f431d9438855650c90089347.
  • Red regression on base: 40838333761, lane job 57b1a9e796c241f7b8b7acf63eacb038, compiles base ba6bbf43e28b3d49f431d9438855650c90089347 with the head's tool_inventory test and fails on summary carries tools (exit 101). The final-head green counterpart is 40837507332 above.
  • The same base/head comparison confirms the existing SDK failure test_live_raw_v12_layout_and_history_contracts_are_exact / new-pane-right and the identical stale spec/api-compat.surface.json failure on both versions.
  • Additional base/head comparison 40838642460, lane job e16851b4552c42c28deafbc8bb367026, reproduces the same two SwiftUI findings (HomeChatColorsPanel.swift, HomeChatColorsView.swift) and stale phone lane field allowlist on both. The unrelated scripts/whats-new/test_digest.py CI failure does not reproduce: all five tests pass on both base and head.
  • Independent Codex gpt-6-astra review at high effort with fast mode: SHIP at 612eac11aa80e23ac7119f5b5fd7ba390b776d67. The earlier stale-peer-inventory finding was repaired and the exact final head re-reviewed.

Performance

The seeded fixture contains 3,000 sessions (1,000 closed), each with 66 tools; seed 0x5eed3000. The benchmark uses fresh daemon and Chromium renderer processes per endpoint. Browser RSS is a minimal page retaining the raw reply and parsed JSON after GC, not production-app RSS. The pre-fix reply exceeds the normal 15 MiB frame limit; the before/after measurement applies the same temporary 128 MiB cap on both CI trees, without changing the shipped cap. Both runs use the identical fixture on one Linux worker and Chromium 151.0.7922.34. RSS values are one sample, not a statistical estimate.

Metric Before After Delta Harness/run
List wire bytes 31,230,507 B 7,050,531 B -24,179,976 B (-77.42%) 40837884220
List page RSS 153,554,944 B 114,937,856 B -38,617,088 B (-25.15%) 40837884220
List page RSS growth 66,650,112 B 27,299,840 B -39,350,272 B (-59.04%) 40837884220
Watch wire bytes 31,230,507 B 7,050,531 B -24,179,976 B (-77.42%) 40837884220
Watch page RSS 154,374,144 B 115,187,712 B -39,186,432 B (-25.38%) 40837884220
Watch page RSS growth 66,072,576 B 27,103,232 B -38,969,344 B (-58.98%) 40837884220

No new timer or background loop is added. The benchmark terminates its own child daemon and browser and removes its own temporary fixture.

No capture: the product UI is unchanged; this changes wire payloads and generated protocol types. Browser regression coverage exercises the existing tools menu with compact census rows.

Risk: callers that consumed inventories from default census JSON must use a per-session read or the explicit opt-in. Full opted-in lists can still exceed the existing frame limit; per-session reads remain available.

pr-overlap 27211 could not use GraphQL through this VM's broker. A REST file overlap sweep of open acpmux PRs found #26855, #27038, #27017, #27214, #27213, #26466, #27255, #27018, #26987, #27005, #26747, #26998 and #22030; none implements this omission. #22030 is teammate-owned and was left untouched. Open and merged PRs were searched for this fix.

Agent session: agent session

@github-actions github-actions Bot added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 29, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-tpz26q created for this PR by the cmux coordinator.

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 29, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Found 16 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp15hgfudb/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpcm48npkg/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/agent-pane-pending-steer.test.tsx/agent-pane-pending-steer.test.tsx View Logs
test/agent-pane-pending-steer.test.tsx/agent-pane-pending-steer.test.tsx View Logs
test/clickable-cursor.test.ts/clickable-cursor.test View Logs
test/clickable-cursor.test.ts/clickable-cursor.test View Logs

...and 6 more test failures. View all on Blacksmith: run 40837459541, run 40837459155, run 40837459381

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

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 612eac1: 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=pr27211 -f ref=lane/hb-summary-tools -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards.

CI failed on 612eac11aa (run 40837459541 attempt 1): 1 code, 1 unknown.

Job Verdict Why
web / react-apps-base-check (1) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs agent-pane-pending-steer.test.tsx Send now on a waiting steer asks queue_edit send_now for its promptId, and goes once it is read: failed (job)
  • seen on other PRs clickable-cursor.test.ts no stylesheet sets the arrow or auto on a clickable element: failed (job)
  • seen on other PRs motion-scale.test.ts motion scale > no webview CSS, TS or TSX animates off the scale: failed (job)
  • seen on other PRs running-strip.test.ts hover fills the whole line to the tray's edges, its stop button inside, with the hand: failed (job)
Matched log lines
web / react-apps-base-check (1): (fail) Send now on a waiting steer asks queue_edit send_now for its promptId, and goes once it is read [83.21ms]

Not re-run automatically: web / react-apps-base-check (1), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on ba6bbf4 to compare; do not merge until green; see lane-rules
red: web / Web status; base red: the same failure on the base ba6bbf4; does not block
red: web / react-apps-base-check (1); no finished base run on ba6bbf4 to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base ba6bbf4; does not block

Gallery before/after for 612eac1: 16 states rendered, 0 images differ, 2220 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40839046633 -R manaflow-ai/cmux -n gallery-advisory-27211-612eac11aa80e23ac7119f5b5fd7ba390b776d67 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.auth-health/signed-in Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/signed-in Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/signed-out Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/signed-out Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/expired Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/expired Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/unknown Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.auth-health/unknown Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-zero Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-zero Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-one Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-one Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-five Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-five Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-forty Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-forty Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-chips Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-chips Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented-0 Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented-0 Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented-1 Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-inspector/summary-card-segmented-1 Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% imports types.ts (2 hops)

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

@github-actions github-actions Bot added risk:low Risk tier (docs/ci/risk-tiers.md) risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:normal Risk tier (docs/ci/risk-tiers.md) risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 29, 2026
@github-actions github-actions Bot added risk:low Risk tier (docs/ci/risk-tiers.md) and removed risk:normal Risk tier (docs/ci/risk-tiers.md) labels Oct 29, 2026
@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 29, 2026
@teamleaderleo

teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator Author

Review (the owner lane's independent review, at its land request): SHIP at 612eac1

Recorded by lane-gh-broker from this PR's owner lane, which asked to land this exact head after its independent review. next-autoland lands it once every red is the base's; a BLOCK at this head, a HOLD line or a hold label still stops it.

@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-astra, high; independent Codex reviewer): SHIP at 612eac1

  • Rereview of the delta from 4857dad, building on the earlier whole-PR review. The stale peer-inventory finding is fixed: peers opt into full initial inventories and full updates. No new correctness blockers.
  • Focused green: clippy plus tool_inventory and ls_selection (run 40837507332).
  • Red comparison at this head:
    • cmux-next swift test and generated files (shared build): the package build fails at BrowserEntryRetirementTests.swift:43:57 ("returning main actor-isolated '$0.some.chrome.some' as a 'sending' result"). That is the base compile red from #27166, which also fails on base. This PR changes no Swift.
    • acpmux protocol codegen: the protocol spec it does change feeds only the webviews TypeScript codegen. acpmux-protocol:check ran in the passing Web validation (run 40839046828).
    • web react-apps-check: all four head shards pass. Only react-apps-base-check (1) fails, on base's own tests (running-strip, motion-scale, clickable-cursor, agent-pane-pending-steer). accent-glass-invariants passes.
    • SDK inventory, protocol contract, api-compat, No-SwiftUI, release-notary: known base reds. In run 40838642460, test_digest passes on both base and head.

@teamleaderleo
teamleaderleo merged commit 15c62f6 into feat-cmux-next Oct 29, 2026
254 of 267 checks passed
@teamleaderleo
teamleaderleo deleted the lane/hb-summary-tools branch October 29, 2026 10:49
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

3 inactive deployments
artifacts — 612eac11 Deployed Oct 29, 2026 by teamleaderleo via add the Windows daemon to the tree #75629
sentry-dsyms — 612eac11 Deployed Oct 29, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #75629
ci-routing-agent — 612eac11 Deployed Oct 29, 2026 by teamleaderleo via cmux-tui tree preflight #75629
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