Skip to content

Warn about machine load in the composer Computer menu - #27102

Merged
teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/p0-machines-composer-load
Oct 30, 2026
Merged

teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/p0-machines-composer-load

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

The chat and New Tab composers’ Computer menus now warn before dispatching to a connected machine at its CPU or free-memory budget. It shows a quiet warning tint and a precise detail such as “High load: 14/10 cores busy” or “Low memory: 1.2 GB free”. Healthy machines keep their existing rows. Settings > General > Agent Chat includes Show Machine Load Warnings, on by default.

The existing status refresh uses the daemon's cached minute reading, the same source used by the native machine sidebar. Budget overrides are respected; there is no added poller. Disconnected machines keep their readiness message. Placement roles are not present on these rows, so this change adds no build-role plumbing.

Leo's request (ask-5e97611b66):

"Likewise, look, when you are dispatching or sending off to different machines, I think it should optionally show you if a machine is potentially under high load and just warn. Okay? Because if it's, like, sometimes really high load, it becomes nigh unrecoverable because, well, you know, the thing crashes, right? So, I mean, only in extreme circumstances is this absolutely necessary, but even then it's like, well, I don't know. After a certain point, do you really want to be adding too many agent sessions running at once, right? Likewise, you know, that split between, okay, this is a build mach[ine]..."

Validation:

  • Focused web tests passed at ce088c2a4c17de89fd96864e1bc0f2c06a456e32: cmux-ci run 40998609115, 64 parser/menu tests and 18 New Tab tests. The later generated-export-only commits do not alter web behavior.
  • Before/after and gallery alternatives were rendered and inspected: capture run 41002149690. The selected design is tint plus detail; icon plus detail and detail-only remain in the gallery. Before/after capture.
  • Independent Codex gpt-6-astra review returned SHIP at 6f3ed62dd8d0e0a514270e3487b56346cbdd3e58 after the generated exports were applied. The fleet app compile-check passed at that exact head: job fb5599b3c560bcb5523fc0d4, kind cmux-next-swift-check, command cmux-next-swift-check.sh 6f3ed62dd8d0e0a514270e3487b56346cbdd3e58 --app, on the Linux-pool worker (190 second build, artifact uploaded).

Risk: the native relay carries a bounded subset of cached health into the composer. Each local connection permits one read at a time, with a two-second deadline; replies use the existing bounded inbound queue and request-ID filter. Closed connections discard late replies. Daemon access rules remain unchanged. Native compilation passed at the exact head as recorded above.

Capture tour-agent-pane at a813e4d64a0b (fleet build, capture mini, text checked for private data)

Light Dark
light dark

Capture scene-settings at a813e4d64a0b (fleet build, capture mini, text checked for private data)

Light Dark
light dark

These fleet captures satisfy the real-capture guard but do not reach the changed Computer-menu warning or Settings toggle; the existing before/after gallery image above shows the Computer-menu warning variants. The Settings toggle is not shown in these captures.

Validation at a813e4d64a0be74dac863d4857a1b39d14526a1b: independent Astra delta review returned SHIP; fleet app compile-check fd3556966cd8560320bdd36c passed in 88 seconds. L10n run 41054084252 used the exact head tree and confirms both added keys have all 21 locales; 112 unrelated base omissions remain. CI run 41052652253 passed its web shards and aggregate.

Agent session: agent session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra): SHIP at b3e13e0

Independent full-file review, high reasoning and fast mode. All earlier findings are resolved. Static review only; native compilation remains unverified, and the Swift HOLD remains in force.

@teamleaderleo
teamleaderleo marked this pull request as ready for review October 28, 2026 22:58
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 6f3ed62: 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=pr27102 -f ref=lane/p0-machines-composer-load -f platform=macos -f backend_mode=local

Passes: CI passes on a813e4d64a.

CI passes on a813e4d64a (run 41052927576 attempt 1).

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 bb383a7 to compare; do not merge until green; see lane-rules

Gallery before/after for 6f3ed62: the capture produced no images (run).

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Default changes

This pull request changes 6 defaults at 6f3ed62dd8d0 (what everyone gets without configuring anything):

  • setting.agentPane.showMachineLoadWarnings: (none) -> true
  • setting.tabs.nativeNewTabPage: (none) -> false (a new setting, off by default: passes on its own)
  • tunable-source.CmuxNextAgentPane/AcpmuxPaneMethods+ReplyShapes.swift:replyShapes: "f5d370fa79ee61c3399b1fa44053174a9d47bacb50ea9fd0fd742e14b2407c7d" -> "26b9b7cd6584a7628355be27d4708454d28a0e1fdc114e11f2b38a3e0d83aeef"
  • tunable-source.CmuxNextSettings/AgentPaneComposerSetting.swift:descriptors: "7598da32766cf0071c98b164baec84d2eafbd0076778b4ae73af822abe78f0e5" -> "d515b180aadca119344359f8441fe2a7878518797bc3a5ac729be0915ec61b54"
  • tunable-source.CmuxNextSettings/AgentPaneComposerSetting.swift:parse: "0e34b1e6f802e0df019967e1d38cbbd25040bfc899dbff85953cc0c374f7041f" -> "7bed96e3840a99799322b59d824ade1bd69aa8fb78bb81241a09a326df1f2a17"
  • tunable-source.CmuxNextSettings/AgentPaneComposerSetting.swift:showMachineLoadWarningsPath: (none) -> "798133063712541c2168b9df5a7ac175dea6ae2695e9c4d6113b92d047c49b3f"

Needs a review. It passes with an independent review receipt on this commit: a comment or review whose first line is Review (<reviewer>): SHIP at 6f3ed62dd8d0e0a514270e3487b56346cbdd3e58, from a member, not a self-review (the newest verdict naming the head decides; a later BLOCK beats an earlier SHIP), or with an approving review on this commit from @lawrencecchen or @austinywang (the call owners in .github/defaults-call-owners.json, never the author). A receipt posted as a review re-runs this check; after a plain comment, re-run it. The needs a call label alone does not pass, and a new push needs a new receipt.

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

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

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 10 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpin3s_a0d/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpkzlsbq2d/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
main.DeveloperIdAppTests.test_download_prints_the_active_profile_only/
test_download_prints_the_active_profile_only
View Logs
stubs: /System/Library/Frameworks/Security.framework/Versions/A/Security has no stub/
Security has no stub
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_CFRetain']/
CoreFoundation, missing 1: ['_CFRetain']
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_log2']/
CoreFoundation, missing 1: ['_log2']
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

Orphaned: no activity for 15 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged feat-cmux-next in at cd8425e. A later pass queues it for the merge hub if it is reviewed, small and red only on base reds.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: only the sweep's base merge since, and no lane holds a lease on it. The orphan sweep could not merge feat-cmux-next in: conflicts in Packages/macOS/CmuxNext/Tests/CmuxNextAgentPaneTests/AgentPaneStatusReplyShapeTests.swift. Listed for a lane to resolve.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra): SHIP at 6f3ed62

Exact-head review after the generated settings exports were applied. The prior stale-export finding is resolved; no actionable wrong-state, security, crash, or compile integration findings remain.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra): SHIP at 6f3ed62

Exact-head review after applying the generated settings exports. No actionable wrong-state, security, crash, or compile integration findings remain.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra): SHIP at a813e4d

Delta review of the one catalog-only commit: both machine-load-warning keys now have all 21 locales, valid stringUnit shapes/states, semantically faithful text, and no placeholder or line-break mismatches. No actionable wrong-state, security, crash, or compile integration findings.

@teamleaderleo
teamleaderleo merged commit 9328d55 into feat-cmux-next Oct 30, 2026
251 of 267 checks passed
@teamleaderleo
teamleaderleo deleted the lane/p0-machines-composer-load branch October 30, 2026 13:13
@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

cmux-bot Bot added a commit that referenced this pull request Oct 31, 2026
…s, not on _acpmux/status (#28492) (#28529)

pendingTrustNeverMovesFromDaemonAToDaemonB (#26130) used the page's
_acpmux/status as its barrier: it waited until the stand-in daemon saw
that frame, then checked that no acp.trust.set had reached daemon B.
Since #27102 (9328d55) the pane answers a page's _acpmux/status from
its daemon's socket and never relays it (AgentPaneTransport+Check.swift
:99, covered by AgentPaneTransportStatusTests), so the barrier never
came and both cases failed at :336, at feat-cmux-next df9b52b
(fleet job f44e8e745193fb4ba92d2646) and with #28495
(b2ffa8a35039b75baf009b9e). The crash fixed by #28495 hid it in CI.

The local answer is the intended behavior, so the test changes: its
barrier is _acpmux/harnesses, a read-only request the pane relays
unchanged. What the test checks is the same.

Co-authored-by: cmux-bot[bot] <348531757+cmux-bot[bot]@users.noreply.github.com>

This branch had an error being deployed

1 failed and 2 inactive deployments
artifacts — a813e4d6 Deployed Oct 30, 2026 by teamleaderleo via publish to R2 #82915
sentry-dsyms — a813e4d6 Deployed Oct 30, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #82915
ci-routing-agent — a813e4d6 Deployed Oct 30, 2026 by teamleaderleo via cmux-tui tree preflight #82915
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant