Skip to content

Control: action.run lists created objects that show a publish late (cx-9ce.30) - #20107

Merged
teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-cursors/action-not-found
Oct 13, 2026
Merged

teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-cursors/action-not-found

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

action.run sometimes answered with an empty created list, for example cmux tab new under load (plans/cmux-next/cli.md Remaining 13). The reply looks up each created object in the snapshot that reflects the run's daemon sequence. But the app can build a new object a publish after the event that moved the sequence, so the lookup came up empty.

  • A settled run now waits briefly for a snapshot that shows every object it created: at most 2 s, and always ending 100 ms before the request's own deadline. If an object never shows (say a tab that was opened and closed in the same run), it's left out, and the run still answers ran: true rather than timing out.
  • ControlSnapshotStore waits can now take any condition (snapshot(where:deadline:)); the sequence barrier uses the same path. The created-object wait lives on the store (ControlSnapshotStore+Created.swift), so ControlRouter doesn't grow.
  • A store wait whose deadline had already passed could register after its timer had fired, and then nothing ever resumed it. It now answers nil at once. The review found this; I couldn't write a test that hits the race reliably, so it is untested.
  • The bead's other half, item 8 (an unknown target reports ran: true), was already done: the router refuses an unknown target once the topology is loaded (ActionRunTargetTests), and ActionScope refuses an unknown tab, pane or workspace in the handler. cli.md now marks items 8 and 13 done.

Testing

Behavior tests ActionRunCreatedTests (CmuxNextControl). Each runs action.run through ControlRouter with an executor that creates a tab the way a loaded app can.

  1. The snapshot reaches the command's sequence first, and the tab appears 200 ms later. created must list it.
  2. The tab never appears, under the default 2 s request deadline. The run must answer ran: true with created: [].

All runs are fleet run-swift-testing-suites.sh on the full package:

  • Test 1, red (test only, 384a801): created was [].
  • Test 1, green (9df392c): passes.
  • Test 2, red (test only, 8a56070, on the first fix): timeout after 1999 ms. The review predicted this: the first fix's wait ignored the request deadline.
  • Test 2, green (132b17e, then 9d1559b with the race fix): both tests pass.

PasswordManagerRouteTests timed out in the four runs with the fix on the older base (73434cf). Its action succeeds and its 20 s wait for the Passwords tab expires. It never calls action.run or waits on the control snapshot store. #20103 documents the same fleet timeouts in it and in PinnedPageTests. On base it is skipped (no published same-tree cmux-tui), so base gives no comparison. On the merged head (1d96e46, base merged with #20103), the full package run had no failing suite: PasswordManagerRouteTests ran (not skipped) and passed in 1 s, and both ActionRunCreatedTests pass.

Bead: cx-9ce.30

Changelog

  • Fixed: cmux commands that create something (for example cmux tab new) no longer sometimes report an empty created list.

🤖 Generated with Claude Code

teamleaderleo and others added 6 commits October 12, 2026 18:58
…show yet (cx-9ce.30)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ore listing them (cx-9ce.30)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uest deadline (cx-9ce.30)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cx-9ce.30)

A created object that never shows (closed in the same run) is left out of
created instead of turning ran into a timeout. The wait lives on
ControlSnapshotStore so ControlRouter does not grow. cli.md Remaining 8 and
13 marked done.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stead of waiting forever (cx-9ce.30)

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: d0ad0bd5-562d-40fd-a7a6-7d62aa33d21e

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 0d2dee86f4; ci-status is green without them.

CI passes on 0d2dee86f4 (run 38336628658 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
teamleaderleo merged commit dbf9186 into feat-cmux-next Oct 13, 2026
68 checks passed
@teamleaderleo
teamleaderleo deleted the op-next-cursors/action-not-found branch October 13, 2026 02:29

This branch was previously deployed

1 inactive deployment
artifacts — 0d2dee86 Deployed Oct 13, 2026 by teamleaderleo via publish tree-addressed cmux-tui #9123
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