Repository navigation
CI: the Swift app's acpmux methods and the agent pane's param keys are checked against acpmux-protocol.json - #36579
Conversation
…e checked against acpmux-protocol.json scripts/ci/check-swift-acpmux-protocol.py fails when a method-shaped literal in the app's Swift sources (_acpmux/, session/, acp., trigger/), a method of the agent pane's frame policy, or a knownParams key of a method with typed params is not in the protocol acpmux emits. Names that are not methods are listed with a reason, and the list only shrinks. A Linux workflow runs it, with its tests, whenever either side changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 8b226da to compare; do not merge until green; see lane-rules Shipped in:
|
|
Owned by an agent session · session |
|
Found 8 test failures on Blacksmith runners: Failures
|
|
Review (codex, router-review): SHIP at cd7e609 Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 3. They land as checklist items in this PR's one follow-up tracking issue in this repo ( SHIP at cd7e609 Visual verdict: no images; Leo tries the build
Follow-ups:
|
…ake extra keys, multiline and raw strings Review follow-ups: AcpmuxPaneMethods.initialize is checked; a typed params schema without additionalProperties: false is open, so its keys are not limited to its properties; a multiline string's // is not a comment, and a raw string's method is seen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review (codex, router-review): SHIP at 361e1ef Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 2. They land as checklist items in this PR's one follow-up tracking issue in this repo ( SHIP at 361e1ef Visual verdict: no images; Leo tries the build
Follow-ups:
|
…ion registry (linux-guard) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
Review (codex, router-review): SHIP at 0384f84 Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 2. They land as checklist items in this PR's one follow-up tracking issue in this repo ( SHIP at 0384f84 Visual verdict: no images; Leo tries the build
Follow-ups:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-11-05, after a Cloud chat failed on a hand-spelled field name: "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."
acpmux's wire contract is
cmux-tui/crates/acpmux/spec/acpmux-protocol.json. It is emitted from acpmux's Rust method registry, Rust'sprotocol_ir_is_currentkeeps it current, and the webviews generate their client from it. The app's Swift side names acpmux methods and the agent pane's allowed param keys by hand, and nothing checked those names against it. Now CI fails when Swift names a method or param the protocol does not define.What changes
scripts/ci/check-swift-acpmux-protocol.pychecks three things against the protocol:Packages/macOS/CmuxNext/Sources(_acpmux/,session/,acp.,trigger/), skipping comments and joined prefixes. Today that is 144 names. Comments are skipped; multiline and raw strings are read as strings.AcpmuxPaneMethodsrequests,notifications,knownParams, and the first frame'sinitialize): 80 methods.knownParamskey of a method whose params the protocol types as a closed object: 14 methods, 42 keys. An open object (noadditionalProperties: false) takes other keys too, so it is not limited.scripts/ci/swift-acpmux-protocol-allowlist.txtwith a reason. Today the only entry isacp.trust.peer-v1, an initialize extension name. A listed name that is no longer used, or that the protocol now defines, fails too, so the list only shrinks..github/workflows/swift-acpmux-protocol.ymlruns the check and its tests on Linux with a sparse checkout, whenever either side changes.tests/test_check_swift_acpmux_protocol.pycovers four cases: a drifted method literal, a drifted pane method, a drifted param key, a drifted first-frame method, method names in multiline and raw strings, and a stale allowlist entry. It is also green on the repository.No drift on today's tree beyond the one extension name.
_meta.acpmuxkeys and the methods with untyped or open params are not checked yet, because the protocol does not close them.Changelog
none
Verification
python3 -I tests/test_check_swift_acpmux_protocol.py: 8 tests OK.python3 -I scripts/ci/check-swift-acpmux-protocol.py: green.Agent session: agent session
🤖 Generated with Claude Code