Skip to content

Contracts: AcpmuxRequestMeta lists every key acpmux's clients send; --focus=VALUE takes only true or false - #36944

Merged
cmux-bot[bot] merged 4 commits into
feat-cmux-nextfrom
contract/followups-4
Nov 6, 2026
Merged

cmux-bot[bot] merged 4 commits into
feat-cmux-nextfrom
contract/followups-4

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, 2026-11-05: "You guys keep running into these. These are weird issues that I feel like you should be able to just fix beforehand and check on beforehand."

Fixes forward the two findings from #36820's Codex review (receipt: #36820 (comment) and the review at 58414b0).

AcpmuxRequestMeta was missing keys acpmux's own clients send. The closed type now also lists class and topic (acpmux send --class/--thread), effort and tags (run, orchestrate, the hand, the TUI), worktree and disallowedTools (run), and compression (a peer's initialize offer). The new test protocol_request_meta_lists_every_key_acpmux_clients_send scans acpmux's client code (cli/, hand/, tui/, client.rs, peer.rs, prompt_class.rs) for _meta.acpmux writes. It fails on any key the type doesn't list. The IR and the web types.ts are regenerated.

--focus=VALUE accepts only true or false. Before, cmux open-remote --focus=no quietly meant true. Now any other value is a usage error (new flag_bool string, English and Japanese). open_remote_focus_reaches_the_action covers the refusal.

cli-action-requests.json is regenerated against the current catalog. Base added actions after #36820 landed.

After screenshots don't apply: this changes contract checks, a schema and CLI argument validation only, with no UI.

Checks, on fleet Linux:

  • acpmux protocol tests: 12/12, IR blessed.
  • Webviews: acpmux-protocol:codegen and :check.
  • cmux-tui: action_argument_contract.
  • clippy -D warnings and fmt on cmux-tui and acpmux.
  • check-swift-acpmux-protocol.py on the repo.

Changelog

  • CLI: --focus=VALUE on an action with a focus argument now refuses anything but true or false, instead of treating it as true.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Implements the two findings from #36820's code review: acpmux's closed request-meta type now accepts every key its own clients send, and --focus=VALUE on an action with a focus argument only takes exactly true or false.

Changes

  • AcpmuxRequestMeta now lists class, topic, effort, tags, worktree, disallowedTools, and compression; a new test scans the CLI, hand, TUI, peer, and initialize sources and fails on any key not listed.
  • --focus=no and any other value is now a usage error (English and Japanese) instead of being silently treated as true.
  • The cli-action-requests.json fixture and the protocol IR and web types.ts are regenerated against the current catalog, including the actions added by the feat-cmux-next merge.

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

View guided diff Turn on auto-fix

teamleaderleo and others added 3 commits November 5, 2026 16:21
…ry key acpmux's own clients send (class, topic, effort, tags, worktree, disallowedTools, compression) with a test; --focus=VALUE takes only true or false

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

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

Review c1e687d: 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=pr36944 -f ref=contract/followups-4 -f platform=macos -f backend_mode=local

Gallery before/after for c1e687d: 16 states rendered, 3 images differ, 3804 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 42169248711 -R manaflow-ai/cmux -n gallery-advisory-36944-c1e687daf9616f64358b6ca831999a4f11ee76f4 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.live-chat-watch/choice-alone Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.live-chat-watch/choice-alone Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.live-chat-watch/view-only Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.live-chat-watch/view-only Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.live-chat-watch/take-over-refused Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.live-chat-watch/take-over-refused Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/split Apple System Colors Light changed 0.0368% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/split Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/below-reply Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/below-reply Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/below-reply-answered Apple System Colors changed 0.0422% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/below-reply-answered Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/held-in-composer Apple System Colors Light changed 0.0808% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/held-in-composer Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/after-turn Apple System Colors Light unchanged 0% imports types.ts (1 hops)
agent-pane.streaming-reply-whole/after-turn Apple System Colors unchanged 0% imports types.ts (1 hops)
agent-pane.access-offer/turn-no-credits Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.access-offer/turn-no-credits Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.access-offer/turn-low-credits Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.access-offer/turn-low-credits Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.access-offer/turn-no-offer Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.access-offer/turn-no-offer Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/grouped Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/grouped Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single-multiedit Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single-multiedit Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/grouped-multiedit Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/grouped-multiedit Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single-long Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.approval-edits/single-long 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.

Passes: CI passes on c1e687daf9.

CI passes on c1e687daf9 (run 42146432655 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.

web and size checks: green

Shipped in:

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/42176291435 at d3a2541 failed: cmux-next crash ends the app, cmux-next daemon tests.
Those jobs last passed at bd2d060. This pull request is one of 4 merged since: #36974, #36944, #36955, #37014.
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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at e760f89

Reviewer: codex gpt-6-astra high, fast tier.

Follow-ups: 1. They land as checklist items in this PR's one follow-up tracking issue in this repo (Follow-ups: #N ..., label follow-up; add to an open one before filing, never one issue per finding), linking this receipt; the lane that opened the PR fixes them forward.

SHIP at e760f89

Visual verdict: no images; Leo tries the build

  • [P2] [follow-up] [category:tests] [finding:F1] [outcome:pending] cmux-tui/crates/acpmux/src/protocol/tests.rs:165 only scans assignments, .set() calls, and set_path; it misses direct _meta.acpmux JSON literals such as peer.rs:1464 and hand/agent.rs:304-307. Removing compression or promptId from ACPMUX_REQUEST_META would still pass, so the test does not enforce its stated “every key” guarantee.

Follow-ups:

  • F1: Extend the scanner to cover direct _meta.acpmux object literals.

cmux-bot[bot]
cmux-bot Bot previously approved these changes Nov 6, 2026

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

cmux-bot approves e760f89: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@blacksmith-sh

This comment has been minimized.

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 6, 2026
@cmux-bot
cmux-bot Bot dismissed their stale review November 6, 2026 01:55

A newer verdict blocks c1e687d (no independent SHIP at the head).

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at c1e687d

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

SHIP at c1e687d

Visual verdict: no images; Leo tries the build

Checked focus parsing and metadata consistency across Rust, IR, and generated TypeScript. No findings.

Follow-ups: none

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

cmux-bot approves c1e687d: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo
teamleaderleo marked this pull request as draft November 6, 2026 05:34
@teamleaderleo
teamleaderleo marked this pull request as ready for review November 6, 2026 05:34
@cmux-bot
cmux-bot Bot merged commit 51b3d6d into feat-cmux-next Nov 6, 2026
338 of 346 checks passed
@cmux-bot
cmux-bot Bot deleted the contract/followups-4 branch November 6, 2026 06:13

This branch was previously deployed

3 inactive deployments
artifacts — c1e687da Deployed Nov 6, 2026 by teamleaderleo via publish tree-addressed cmux-tui #118108
sentry-dsyms — c1e687da Deployed Nov 6, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #118108
ci-routing-agent — c1e687da Deployed Nov 6, 2026 by teamleaderleo via cmux-tui tree preflight #118108
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