Repository navigation
cmux-tui: CLI surface commands use the public resource API (boundary base red) - #28349
Conversation
The table from #28248 maps them already; cover them before the table moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-6e8862342491849a3c15
…dary base red) #28248 added classic_command to cli.rs, whose string literals the resource-v2 boundary check scans as public CLI text. Its five classic *-surface verbs (list-surfaces, list-pane-surfaces, new-surface, rename-surface, close-surface) failed boundary.surface on feat-cmux-next. They are legacy input matched only to name the tab command that replaces them, never printed as cmux vocabulary, so the table now lives in cli/internal/classic_verbs.rs, the path the checker already treats as internal. The check, its rules and the CLI's output are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-6e8862342491849a3c15
|
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)
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/41071509570 at a6ca7ea failed: cmux-next generated files (shared build). |
…source-api-boundary
|
Found 6 test failures on Blacksmith runners: Failures
|
…rnal) into tool-evals-r4: this branch's new verbs go into classic_verbs.rs; both sets of surface test rows kept
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
What
The step "Check public resource API boundary" (
python3 cmux-tui/scripts/check-resource-api-boundary.py) is red on feat-cmux-next. It runs in both "cmux-tui SDKs / protocol contract" and "cmux-tui spec inventory / inventory", so it hides signal for every cmux-tui PR.Cause: 8f5dfe0 (#28248) added
classic_commandtocli.rs. It maps classic cmux verbs to the resource command that replaces them, so thatcmux list-surfacesanswers "cmux tab list". The boundary check scans every string literal incli.rsas public CLI text, and five of those match keys contain the legacy wordsurface. cdd3f6d (#28252) only moved those lines (it rewrote the cloud help just above them); it added none of them.These five words are legacy input. The CLI matches them only to send the person to the tab command, and it never prints them as cmux vocabulary. The table now lives in
cli/internal/classic_verbs.rs. The checker already treats aninternal/path as outside the public scan: "Raw and internal directories must say so in their path", and_is_raw_or_internal.cli/internal.rsholds only the module declaration and contains no string literals.unknown_scope.tests/cmux_surface.rsa_classic_verb_names_its_resource_commandnow also covers the five*-surfaceverbs. It is a separate commit before the move.The related failure seen on another PR,
test_check_resource_api_boundary.pytest_live_typed_catalog_matches_every_registry(cpp.cmux-resource-api.jsoncatalog_sha256), is not red on base: 39/39 pass at fe3152a. It belonged to that PR's own spec change.Before / after
Command, on cmux-ci (Blacksmith Linux):
python3 cmux-tui/scripts/check-resource-api-boundary.py; python3 cmux-tui/scripts/test_check_resource_api_boundary.py. Run: https://github.com/manaflow-ai/cmux/actions/runs/41064468422Base fe3152a:
test_check_resource_api_boundary.py: Ran 39 tests, OK.
Head 55aabc5:
test_check_resource_api_boundary.py: Ran 39 tests, OK.
Observed / Not run
Head is now d12d7e5, a plain merge of feat-cmux-next 7deba73 (picks up the clippy fix in #28357). The PR diff is unchanged.
cargo fmt --all --checkclean;cargo test -p cmux-tui --test cmux_surface a_classic_verb_names_its_resource_commandpasses, all nine verbs (https://github.com/manaflow-ai/cmux/actions/runs/41064586888).cargo test -p cmux-tui --no-fail-fast: every target passes except 7 tests. Each fails the same way with this PR's four files restored to base 7deba73 in the same checkout, so all 7 are base reds (https://github.com/manaflow-ai/cmux/actions/runs/41069820579, https://github.com/manaflow-ai/cmux/actions/runs/41070609495):--libtransport_path_coverage_tests::every_safe_transport_operation_has_a_noun_first_path(git.checkpoint.difffieldsafter_path,patch_offset,patch_revision)--test agent_message_reply_in_placea_reply_in_place_is_a_stored_agent_message_and_goes_nowhere_else--test cliagent_session_start::agents_chat_tools::a_chat_send_that_cannot_reach_its_chat_fails_with_its_receipt,an_agent_prompts_another_chat_and_reads_its_reply_over_mcp,a_caller_with_its_own_acpmux_starts_and_drives_a_chat_of_the_apps_acpmux,a_caller_sends_to_a_restored_chat_no_tab_has_shown,an_agent_starts_a_chat_in_a_workspace_and_drives_it_without_the_appNo capture: CLI internals.
Changelog
none
Agent session: agent session