Skip to content

cmux-tui: CLI surface commands use the public resource API (boundary base red) - #28349

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
lane/fix-resource-api-boundary
Oct 30, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
lane/fix-resource-api-boundary

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

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_command to cli.rs. It maps classic cmux verbs to the resource command that replaces them, so that cmux list-surfaces answers "cmux tab list". The boundary check scans every string literal in cli.rs as public CLI text, and five of those match keys contain the legacy word surface. 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 an internal/ path as outside the public scan: "Raw and internal directories must say so in their path", and _is_raw_or_internal. cli/internal.rs holds only the module declaration and contains no string literals.

  • No change to the checker, its rules or any allowlist.
  • No change to the CLI's behaviour or output: the same table answers the same words, called from the same unknown_scope.
  • tests/cmux_surface.rs a_classic_verb_names_its_resource_command now also covers the five *-surface verbs. It is a separate commit before the move.

The related failure seen on another PR, test_check_resource_api_boundary.py test_live_typed_catalog_matches_every_registry (cpp .cmux-resource-api.json catalog_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/41064468422

Base fe3152a:

crates/cmux-tui/src/cli.rs:767:10: boundary.surface: legacy public resource word in 'list-surfaces'; use terminal or browser
crates/cmux-tui/src/cli.rs:767:28: boundary.surface: legacy public resource word in 'list-pane-surfaces'; use terminal or browser
crates/cmux-tui/src/cli.rs:768:10: boundary.surface: legacy public resource word in 'new-surface'; use terminal or browser
crates/cmux-tui/src/cli.rs:770:25: boundary.surface: legacy public resource word in 'rename-surface'; use terminal or browser
crates/cmux-tui/src/cli.rs:771:10: boundary.surface: legacy public resource word in 'close-surface'; use terminal or browser
resource API boundary check failed with 5 diagnostic(s)

test_check_resource_api_boundary.py: Ran 39 tests, OK.

Head 55aabc5:

resource API boundary check passed (342 public files scanned)

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.

No capture: CLI internals.

Changelog

none

Agent session: agent session

teamleaderleo and others added 2 commits October 30, 2026 13:29
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
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 30, 2026
@teamleaderleo
teamleaderleo marked this pull request as ready for review October 30, 2026 13:58
@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 55aabc5: 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=pr28349 -f ref=lane/fix-resource-api-boundary -f platform=macos -f backend_mode=local

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/41071509570 at a6ca7ea failed: cmux-next generated files (shared build).
Those jobs last passed at 8e867c5. This pull request is one of 5 merged since: #28088, #27811, #27892, #28349, #28078.
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

Review (independent Codex gpt-6.1-sol, high, via the review router; full diff from merge base fe3152a to this head): SHIP at 55aabc5.

No P1/P2 findings.

@blacksmith-sh

blacksmith-sh Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test 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
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)/
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)
View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
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

Review (independent Codex gpt-6.1-sol, high, via the review router; full diff from merge base 7deba73 to this head): SHIP at d12d7e5.

No P1/P2 findings.

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

3 inactive deployments
artifacts — d12d7e51 Deployed Oct 30, 2026 by teamleaderleo via add the Windows daemon to the tree #83500
sentry-dsyms — d12d7e51 Deployed Oct 30, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #83500
ci-routing-agent — d12d7e51 Deployed Oct 30, 2026 by teamleaderleo via cmux-tui tree preflight #83500
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