Repository navigation
fix(sidebar): a placement whose workspace ended is dropped, never toasted - #32942
Merged
Merged
Conversation
…sted An agent open under load (`cmux agent open ID --placement top`) made its workspace, queued its top placement, then closed the half-made workspace when its first tab missed the deadline. The queued workspace.place then hit an id the daemon no longer had and the app showed "Move did not apply: ... no workspace matches". A placement step whose workspace the daemon answers selector.not_found for is now dropped with a log line; the placements queued after it still run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e8f976baf8d4c0eddede
teamleaderleo
temporarily deployed
to
ci-routing-agent
November 3, 2026 03:33 — with
GitHub Actions
Inactive
Contributor
|
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)
Shipped in:
|
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Leo's words: "what's that newest error message situation?" (a "Move did not apply: set-personal-workspace: workspace.place failed: no workspace matches "ws_…"" notice).
Cause.
cmux agent open ID --placement topunder load: the app made the workspace, queued its top placement (NewWorkspacePlacements.expect→SidebarBridge.place→placePersonal), then closed the half-made workspace when its first chat tab missed its deadline. The queuedworkspace.placeran against an id the daemon no longer had (selector.not_found), the placement failed, and the app showed the failure under the "Move" title, after the fact, for a move nobody asked for. The failure also stopped every placement queued after it.Fix. A placement step whose workspace the daemon answers
selector.not_found(scopeworkspace) for is dropped with a log line: no notice, the placement settles as applied, and the placements queued behind it still run.DaemonError.isWorkspaceNotFoundnames that answer. A placement for a workspace that has not appeared yet already waits for it (applyPendingPlacementsonly places a listed, non-provisional workspace), so nothing else changes.Test (red first).
PlacementWriteOrderTests.aPlacementForAGoneWorkspaceIsDroppedWithoutANotice: the scripted daemon answers k2's placement withselector.not_found; before this change the run fails, a notice shows and k3/k4 never apply; after it, no failure, no notice, and k3 and k4 are written.Risk: small, one call site in the personal placement queue; any other placement error still reports as before.
Agent session: agent session
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes queued personal workspace placements failing with a misleading "Move did not apply" toast when the workspace had already ended.
Under load,
cmux agent open ID --placement topcreates a workspace, queues its top placement, then closes the half-made workspace when its first chat tab misses its deadline. The queuedworkspace.placehits the daemon'sselector.not_found, the failure gets toasted as a failed move, and every placement queued after it is skipped. A placement whose workspace is gone is now dropped with a log line instead, and the placements behind it still run.DaemonError.isWorkspaceNotFoundrecognizesselector.not_foundscoped to a workspace.Tests
PlacementWriteOrderTests.aPlacementForAGoneWorkspaceIsDroppedWithoutANoticecovers the case: no failure, no toast, and the later placements still apply.Written for commit 0a933ef. Summary will update on new commits.