Repository navigation
cmux NEXT: keep ambiguous child starts in shell rows - #26627
Conversation
|
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)
Passes: CI passes on CI passes on Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 760ac10 to compare; do not merge until green; see lane-rules Gallery before/after for |
|
Owned by an agent session · session |
|
Found 2 test failures on Blacksmith runners: Failures
|
|
Bead |
|
Follow-up repair pushed at exact head Fresh Astra review findings addressed:
Fresh regression discriminator was red against prior head |
|
Final follow-up head is Exact-head verification after this final push: the focused fold/parser/MCP/transcript suite is 62 pass, 0 fail; |
|
Final exact head is now |
|
Final exact head is |
…quested name startChild compared the child's claimed short name with the call's raw -n text, so a lone `acpmux run --parent chat-1 -n Alpha` never matched `alpha` and lost its card (review P2 at 89e2131). Match on the call's normalized identity instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Kept this branch's rule that command text never makes a session card (the codex exec tests stay removed) and took base's child-record fields (startedBy, effort, lastMessage, turn-end refresh) and their tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
…the parent's child Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…for the parent's child An update acpmux tags with a native subagent returns before reduceRun, so a subagent running the same `acpmux run --parent chat-1 -n fix` was never a competing start: if its child claimed `fix` first, the parent's shell call took that child's session, model and reply (review P2 at 6b3d2c3). The subagent's call now registers its identity as a competing start while it runs and leaves a tombstone when it ends, as a nested start_session already does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review (codex gpt-6-astra high, review-router, for drain-transcript): BLOCK at 6b3d2c3
Static review only. |
|
Review (codex gpt-6.1-sol high, review-router, for drain-transcript): BLOCK at 428f1b0
Static review only. |
Regression for review finding 1 on #26627. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
Regression for review finding 2 on #26627. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
… base competes Review finding 1 on #26627: every child named `base-N` was refused, so a lone `acpmux run --parent ... -n fix-2` never got its card. The suffix is now treated as a daemon rename only when a pending, running or retired start requested the base name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
Review finding 2 on #26627: a `--prompt-file` run retired an empty identity, which identitiesOverlap treats as overlapping everything, so every later tracked child start in the fold stayed a plain shell row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
…led ends Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
A known background run ended only on completed, failed or stopped, so a timed_out or cancelled background_task_update left its card running forever. It now ends on every isTerminal state: timed out as failed, cancelled or stopped as cancelled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-a4efd6c1314eb5a4fc3e
|
Shipped in:
|
|
Shipped in:
|
|
Base red after this PR: its What's New highlight had no tryIt action or docs link, so scripts/whats-new/test_digest.py (release-notary) failed. Fix: #28441. |
…28458) test_digest.py requires every highlight to have a tryIt action or docs link. chief-name-in-agent-chats.md (#27935) and shell-agent-identity.md (#26627) landed without one, turning workflow-guard-tests / release-notary red on feat-cmux-next and on every PR that runs it. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e red) (#28114) chief-name-in-agent-chats.md (#27935) and shell-agent-identity.md (#26627) had no action, deeplink or docs link, so scripts/whats-new/test_digest.py (test_the_repository_highlights_validate) failed in nightly-guards / release-notary on every feat-cmux-next PR. Both are agent-chat changes, so the action opens a new agent chat, the same action the other agent-chat highlights use.
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Bash commands that invoke Codex or Claude keep their command and output rows. A child-session record may create an agent card only when its shell start is unambiguous; concurrent starts cannot borrow another child's identity, model or reply.
Repair for #26368's independent review BLOCK at
b54463253a1a48eb707dd691b7c9206653115cfe. This branch starts fromfeat-cmux-nextat83c919d5176a669a6a1ab84cab7414727eb623a3and ports only the original PR's three own commits, then adds the regression and repair. The original branch and its merge history remain preserved.Leo, 2026-10-27: "we don't want to have that sort of thing going on"
Takes back #25043: command syntax and stdout must not establish harness or session identity. Explicit child-session metadata still supplies the harness, model, effort, session id and reply for an unambiguous tracked start.
The daemon lowercases and splits requested names before claiming
base,base-2,base-3; the fold mirrors that normalization before comparing rename families. The current child records carry no reliable originating call id. Overlapping parent shell starts therefore stay plain when their names or prompts overlap, even if a competing call later ends; distinct explicit names remain deterministic. An activestart_sessiondisqualifies only overlapping shell candidates. Once that MCP call completes, its identity tombstone still rejects a same-name or same-prompt queued child that arrives late, while a genuinely distinct parent remains cardable. An explicit-n fixcan no longer consume afix-2record through prompt fallback. Discarded calls cannot become candidates again through repeated updates.Validation:
cd webviews && bun test src/agent-session/acpmux/subagents/agentRunFold.test.ts test/shell-agent-identity.test.tsreproduced 3 normalization failures against prior head58e6064ee8bc7caa87f895ab2dc06f67283d6a6dand passes 33 tests at the final head89e21311eb06a3d5b182a8647c9428bf6b151dd1. The broader focused fold, parser, MCP and transcript replay suite passes 68 tests.scripts/web-lint.shandpython3 scripts/cmux-next/prepush-gate.pypass.Observed / Not run
Observed concurrent same-name shell/MCP starts in both start orders and all three MCP input shapes, two background parent runs in both child orders, two background runs plus
start_session, a queued MCP first prompt, a native subagent's competing MCP start, and repeated updates after competing calls fail. Existing tests retain exact recorded metadata and ordinary shell command/output rows.python3 scripts/verify-local.pypreviously passed all selected checks except localization parity, which reports 45,327 errors in catalogs and localization inputs unchanged from base83c919d5176a669a6a1ab84cab7414727eb623a3. No native build, app dogfood, live review-router call or new browser capture ran for this attribution repair.Preserved visual evidence from #26368: hosted Chromium capture 40590006683 covered running/completed light/dark gallery states at original regression
c65b829f88eddf7f98df737258404a58b102de36and original fixed head4d7bb4943641e44792ba5f0460369c6de1144345. Those captures document the original shell-row change; the concurrency repair is verified by the new protocol regressions above.Reference:
cmux-design-references/apps/claude/live/transcript-tool-rows-and-task-list.pngandapps/codex/live/transcript-expanded-command-activity.pngfor shell rows;apps/claude/live/transcript-linked-session-card.pngfor a tracked session card.Gallery: agent-pane.shell-agent-identity/running, agent-pane.shell-agent-identity/completed
Size: This repair PR carries the original shell-row implementation and preserved gallery captures so the exact-head repair can be reviewed from current feat-cmux-next in one self-contained change.
Changelog
Fixed: Bash commands keep their normal rows, and ambiguous concurrent starts cannot inherit another child session's identity.
Agent session: agent session