Skip to content

acpmux: regenerate the protocol IR for _acpmux/mesh_control (base red) - #27556

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/acpmux-protocol-ir-regen
Oct 29, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/acpmux-protocol-ir-regen

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes a base red: acpmux protocol::tests::protocol_ir_is_current (cmux-tui/crates/acpmux/src/protocol/tests.rs:28) fails on feat-cmux-next, so every full acpmux lib run fails it (#27187 and #26984 hit it).

Leo's standing rule: "Fixing a base red is its own PR, and red fixes are never blocked."

What changed

Generated outputs only, from the repo's own generators:

  • cmux-tui/crates/acpmux/spec/acpmux-protocol.json: ACPMUX_PROTOCOL_BLESS=1 cargo test -p acpmux --lib protocol_ir_is_current adds the _acpmux/mesh_control request (untyped).
  • webviews/src/agent-session/acpmux/protocol/generated/methods.ts: bun scripts/acpmux-protocol-codegen.ts adds the same method to AcpmuxRequests and ACPMUX_METHODS.

Both were run on Linux through cmux-ci; nothing was hand-edited.

Cause

#27050 (a95f085, "route lifecycle controls through owner-authorized mesh senders") added untyped(method::MUX_MESH_CONTROL, Request) to the registry in src/protocol/mod.rs and did not re-bless the IR. Later IR updates (#27255, e07b33b) came from branches that did not have it, so the IR has been stale since #27050 landed.

Why CI missed it: no pull-request job runs the acpmux lib tests. protocol_ir_is_current only runs in cmux-tui.yml (the full cross-platform cargo test --workspace), and that workflow is workflow_dispatch only. cmux-next fast tier (cargo) has no acpmux entry. The webviews acpmux-protocol:check compares the generated TS against the committed IR, not the IR against the registry, so it stayed green. #27050's PR checks include no acpmux lib test run.

Other generated outputs checked (not stale)

With the regenerated IR, on Linux (run 40948068785): check-spec-inventory.py, check-sdk-schema.py, bindings/codegen/generate.py --check (python, rust, typescript, zig, pageRouter.ts), check-resource-api-boundary.py and api-compat-check ("protocol surface matches revision 12") all pass. So spec/api-compat.surface.json, the SDK wire layers and the spec inventory are current. They come from cmux-tui's own protocol (sdk-schema.json), not from the acpmux IR.

Generated-files guard

scripts/ci/generated-files.json lists webviews/src/agent-session/acpmux/protocol/generated/* as the output of the acpmux-protocol generator, with inputs cmux-tui/crates/acpmux/spec/**. This PR changes that input (the IR) together with its output, so the inputs rule passes. The IR itself is not a registered output.

Evidence

  • Red at base: cmux-ci run 40934546588 (feat-cmux-next 41aa452): protocol::tests::protocol_ir_is_current ... panicked at crates/acpmux/src/protocol/tests.rs:28:9, 1 failed.
  • Stale at the current base c32c998: cmux-ci run 40946759743 blessed the IR, and the diff was the _acpmux/mesh_control entry above.
  • SDK/inventory/api-compat checks and the full acpmux lib (1924 passed) with the regenerated IR: run 40948068785.
  • Green at this head (tree cd1c8fcae40, head ebfd7a8): cmux-ci run 40948903092, full cargo test -p acpmux --lib, protocol_ir_is_current ... ok, 1924 passed, 0 failed. cmux-ci run 40948907379, bun scripts/acpmux-protocol-codegen.ts --check, "acpmux protocol generated code is current".

Risk

Low. Generated files only, adding one method name to an IR and to a TS method table. No runtime code changes. The daemon already serves _acpmux/mesh_control.

Agent session: agent session

🤖 Generated with Claude Code

#27050 declared _acpmux/mesh_control in the protocol registry without
re-blessing spec/acpmux-protocol.json, so protocol_ir_is_current fails on
feat-cmux-next. Regenerated with ACPMUX_PROTOCOL_BLESS=1 and
`bun scripts/acpmux-protocol-codegen.ts` on Linux; generated outputs only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1288bbb2b5d2f5c6b66a
@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 ebfd7a8: 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=pr27556 -f ref=lane/acpmux-protocol-ir-regen -f platform=macos -f backend_mode=local

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

gh run download 40948948465 -R manaflow-ai/cmux -n gallery-advisory-27556-ebfd7a8dd4dad06b5562adf9ef9ae1818fc353d2 (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 methods.ts (2 hops)
agent-pane.auth-health/signed-in Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/signed-out Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/signed-out Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/expired Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/expired Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/unknown Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.auth-health/unknown Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-edge/short-edge Apple System Colors changed 0.0051% imports methods.ts (2 hops)
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-edge/wide-edge Apple System Colors changed 0.0051% imports methods.ts (2 hops)
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/shipped Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/shipped Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/two-thirds Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/two-thirds Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/half-tucked Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/half-tucked Apple System Colors unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/before Apple System Colors Light unchanged 0% imports methods.ts (2 hops)
agent-pane.continuation-spacing/before Apple System Colors unchanged 0% imports methods.ts (2 hops)

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

red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 34e31e4; does not block

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

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

blacksmith-sh Bot commented Oct 29, 2026

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp_o35hcv3/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpdit5lhdz/summary-fail.json (live):/summary-fail.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

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

@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 (codex gpt-6-astra high fast, independent review): SHIP at ebfd7a8

Reviewer: "All 243 registry entries match the IR in order, kind, ACP flag, and parameter/result slots. Running the TypeScript generator in memory produced exact byte matches for both generated files; the only TS changes are the two expected mesh_control lines. The manifest's input/output rule accepts the change, and the supplied culprit diff confirms the registry addition in #27050."

Reds: one, cmux-next checks -> "No new SwiftUI (macOS UI is AppKit)". It is a base red: base's Packages/macOS/CmuxNext/Sources/CmuxNextHome/ChatColors/HomeChatColors{Panel,View}.swift import SwiftUI (27d2053). #27017 fails it the same way, and #27457 fixes it. This PR touches no Swift.

Green at head (tree cd1c8fcae40): cmux-ci runs 40948903092 (acpmux lib, 1924 passed) and 40948907379 (acpmux-protocol:check).

Overlap: #27017 carries the same _acpmux/mesh_control IR and methods.ts lines, byte-identical, so whichever lands second merges those lines as a no-op.

@teamleaderleo
teamleaderleo merged commit be41ec4 into feat-cmux-next Oct 29, 2026
174 of 184 checks passed
@teamleaderleo
teamleaderleo deleted the lane/acpmux-protocol-ir-regen branch October 29, 2026 21:10
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 29, 2026
…ux (#27599)

* ci(cmux-tui-spec): run acpmux's protocol tests on PRs that touch acpmux

spec/acpmux-protocol.json is generated from acpmux's protocol registry, but
only the dispatch-only cmux-tui.yml ran protocol_ir_is_current, so #27050 and
the machine consent methods left a stale IR on base until #27556 and #27438
regenerated it. A new acpmux-protocol-ir job in cmux-tui-spec.yml (already
path-filtered to cmux-tui/**) runs `cargo test -p acpmux --lib -- protocol::`
when the change touches the acpmux crate, the cmux-tui manifest, lockfile or
toolchain, and skips the build otherwise. Lib target only, on Blacksmith 32
vCPU, with its own cargo cache saved from feat-cmux-next pushes.

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

* ci(cmux-tui-spec): quote the acpmux test step's name (a trailing :: is YAML)

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

* ci(cmux-tui-spec): the acpmux scope diff lists both sides of a rename

Moving the IR out of the crate reported only the new path, which the scope
missed, so the job skipped while protocol_ir_is_current would fail.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — ebfd7a8d Deployed Oct 29, 2026 by teamleaderleo via cmux-tui tree preflight #78074
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