Skip to content

test: shared model-level case matrix for cmux NEXT (cx-gkyi1) - #20195

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
leo/model-matrix
Oct 13, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
leo/model-matrix

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Bead cx-gkyi1, for op-ci-tiers' PR fast tier, sharing one case list with op-next-replay's real-HID matrix (cx-hdyx4).

Packages/macOS/CmuxNext/Tests/Matrix/cases.json is that one case list: 90 model-level cases for cmux NEXT.

  • Areas: workspace create from every entry, workspace and tab reorder, tab moves between panes and workspaces, split create/close/zoom.
  • Each case gives:
    • the action and the entry it comes from (palette, menu, context menu, shortcut, CLI, the strip's +, the sidebar's +, a drag);
    • a seed preset with named objects ($w1, $p1, $t2, …);
    • the invariant codes it expects (item-set-kept, order-is, selected-is, focus-on, zoomed-is, layout-valid, …);
    • the steps on the daemon core (core);
    • the tiers that run it.
  • Runners: three read the file.
    • ModelMatrixTests (this PR): headless Swift, no window, no daemon, about 0.02 s.
    • mux::tests::matrix: runs every case's core steps on the real daemon core in-process. Next PR.
    • The real-HID and monkey runners in op-next-replay's tools.
  • Failure format: every failure starts with MATRIX <case id>:.

ModelMatrixTests checks three things:

  • The file: codes, presets, $-refs, tiers, inputs and entries are declared. A headless case has core steps and no wall-clock codes.
  • Every case's entry reaches its action: the palette, CLI, right-click menu, main menu or default binding the case names really offers that action. For the strip's +, the sidebar's + and drags, a declared action list stands in for the catalog.
  • Coverage: every entry a covered action offers has a case. If a menu item or shortcut is added to splitRight, the suite fails until a case covers it.

Writing the file surfaced six cases that named a surface the action doesn't offer, so those cases are fixed:

  • newTab has no CLI verb.
  • closePane has no default key or CLI verb.
  • toggleSplitZoom has no CLI verb.

Also of note: the sidebar's + calls WindowManager.newWorkspace directly, not an action. Its row close button goes through closeWorkspace. The file records the + as a non-catalog entry.

After review:

  • The file now has a vocabulary block. It defines each code's exact arguments, what each of means and what target means per entry: palette, menu and shortcut runs focus the target first, a context menu right-clicks it, the CLI passes it with --focus. ModelMatrixTests rejects missing or unknown arguments.
  • Sidebar order is the app's personal order: the app computes the index (AppActions+PersonalOrder) and the core only stores it. Workspace reorder, positioned creates (above, below, top, bottom), groups and pinning therefore run in the HID tiers only for now. cx-rq6i5 tracks a headless Swift runner for that logic.
  • 59 of the 90 cases run headless.

Testing

Command: cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --arg Packages/macOS/CmuxNext

On 0739a3d, CmuxNextActionsTests.ModelMatrixTests passes all three tests, in 0.017 s. KeybindingsFileRelaunchTests and PinnedPageTests fail as known base reds.

Review (Opus subagent): the file's expectations were checked against the handlers. Fixed: the ws3 count, the CLI focus semantics, a self-contradicting tab.move.toWorkspace, drag20 order, the zoom mode, argument validation and non-empty core. One must-fix, missing targets on split.close, lastTabClosesPane and fromPane, was a misread: those cases already name $p2/$t2. The target definition now says how HID runners use it.

This is a new contract test, not a fix, so there is no red commit. An offline run of the same checks against plans/cmux-next/action-surfaces.json caught the six wrong entries and eleven missing offered entries before the fix-up.

Changelog

none

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 12, 2026 22:36
Tests/Matrix/cases.json is the one case list for the headless Swift
runner, the headless core runner and the real-HID/monkey runners
(cx-hdyx4): workspace create from every entry, workspace and tab
reorder, tab moves, split create/close/zoom. ModelMatrixTests checks the
file and that every case's entry really offers its action through the
catalog, and that every entry a covered action offers has a case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Workspace groups and pinning live in the app's sidebar layout, not the
daemon core, so the headless core runner has no steps for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: d8a3b945-dcd9-44b5-85ae-d32e193b373e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on 0739a3d671; ci-status is green without them.

CI passes on 0739a3d671 (run 38353907907 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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.

teamleaderleo and others added 2 commits October 12, 2026 22:51
…in HID tiers (cx-gkyi1)

- vocabulary: every code's arguments and the meaning of each `of`;
  ModelMatrixTests rejects missing or unknown arguments.
- target: palette/menu/shortcut runners focus the target first; CLI runs
  with --focus (without it the CLI never changes the view).
- Sidebar order is the app's personal order (the app computes the index,
  the core only stores it): positioned creates and workspace reorder run
  in the HID tiers only.
- ws3 declares 3 workspaces; tab.move.toWorkspace no longer contradicts
  the empty-workspace rule; drag20 checks the order; zoom states toggle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo merged commit 3ab396a into feat-cmux-next Oct 13, 2026
87 checks passed
@teamleaderleo
teamleaderleo deleted the leo/model-matrix branch October 13, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant