fix(muse): Muse threads no longer offer Edit from here#30146

open2
main
fix/issue-30137
opened1d agobyJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 1d ago

Problem

Muse threads offer Edit from here, but it always fails. The web shows the action unless the provider status says supportsConversationRollback: false. Muse's status never sets that flag, while the Muse adapter declares no rollback (canRollbackThread: false, providerCanRollbackConversation: false), so ensureRollback in CommandPolicy.ts refuses every Muse rollback.

Change

Muse's status presentation now sets supportsConversationRollback: false, the same as Cursor's. The pending and probed Muse snapshots both build from that object, so the web stops offering Edit from here on Muse threads.

Scope and approval

Fixes pingdotgg/t3code#30137

Triaged via the automated issue flow; GitCafe issue #30137.

Verification

  • vp test run packages/provider-muse/src/server/status.test.ts: the new test Muse status > does not offer conversation rollback, which the Muse adapter cannot perform fails on main (expected undefined to be false) and passes on this branch (4/4). vp test run packages/provider-muse: 96/96 pass.
  • vp run check:changed: format, lint, knip, typecheck (10 packages), tests (2 files) pass.
  • Runtime transcript: the real makePendingMuseProvider and checkMuseProviderStatus from packages/provider-muse, with a stub Muse SDK host for the ready path, before (main cefb544af3) and after (1de4009017):
1## before (main cefb544af3)
2{"path":"pending","enabled":true,"status":"warning","supportsConversationRollback":"<absent>"}
3{"path":"pending","enabled":false,"status":"disabled","supportsConversationRollback":"<absent>"}
4{"path":"check disabled","status":"disabled","supportsConversationRollback":"<absent>"}
5{"path":"check ready (stub SDK, node version probe)","status":"ready","supportsConversationRollback":"<absent>"}
6## after (1de4009017)
7{"path":"pending","enabled":true,"status":"warning","supportsConversationRollback":false}
8{"path":"pending","enabled":false,"status":"disabled","supportsConversationRollback":false}
9{"path":"check disabled","status":"disabled","supportsConversationRollback":false}
10{"path":"check ready (stub SDK, node version probe)","status":"ready","supportsConversationRollback":false}
  • Not checked: a live Muse thread in the web client. Muse Code is not available in the verification environment, so there are no before/after captures of the timeline. The web code that reads the flag (ChatView.tsx) is unchanged and already hides the action for Cursor's false.

Model and harness: Claude Opus 5.5 (lead, red test, implementation, review B) and GPT-6.1 Sol (review A), run through Claude Code and Codex in T3 Code.

🤖 Generated with Claude Code

Checks

23 successful · 10 skipped · 1 neutral
All checks passed
1de4009

Added 2 commits

  • fix(muse): Muse threads no longer offer Edit from here1de4009
  • test(provider-muse): reproduce #30137, Muse status advertises rollbackfc67b9f
Synced from GitHub

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — Muse threads will stop offering Edit from here because provider status now explicitly disables conversation rollback. This is a narrow presentation correction, but removing the action by default requires human confirmation.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire5.0 KiB5.0 KiB+35 B (+0.7%)6.8 KiB✅
CodexThread snapshot wire3.8 KiB3.8 KiB0 B (0.0%)4.9 KiB✅
CodexLive turn WebSocket wire1.2 KiB1.3 KiB+35 B (+2.8%)2.0 KiB✅
CodexLive turn WebSocket decoded21.5 KiB21.6 KiB+41 B (+0.2%)24.4 KiB✅
CodexLive turn messages12+1 (+100.0%)8✅
ClaudeTotal thread wire5.0 KiB5.0 KiB0 B (0.0%)6.8 KiB✅
ClaudeThread snapshot wire3.8 KiB3.8 KiB0 B (0.0%)4.9 KiB✅
ClaudeLive turn WebSocket wire1.2 KiB1.2 KiB0 B (0.0%)2.0 KiB✅
ClaudeLive turn WebSocket decoded21.9 KiB21.9 KiB0 B (0.0%)24.4 KiB✅
ClaudeLive turn messages220 (0.0%)8✅

Baseline: cefb544 · PR result: 1de4009 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Synced from GitHub

Review in Change Stack →

Walkthrough

Muse provider status now reports that conversation rollback is unsupported. A test verifies this status for a pending Muse provider.

Changes: Muse rollback status

Layer / File(s)Summary
Set and test rollback status
packages/provider-muse/src/server/status.ts, packages/provider-muse/src/server/status.test.ts
MUSE_PRESENTATION sets supportsConversationRollback to false. A test checks that a pending Muse provider reports false.

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: maria-rcks, macroscopeapp

Merge Risk: External image Minimal · up to 1de40

Muse threads will no longer offer "Edit from here", which the server refuses for Muse. The remaining open point is whether the PR description should keep "Fixes #30137" given the issue's broader shared-rule request. This is a process question, not a behavior risk, and the change is low risk to merge.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check nameStatusExplanationResolution
Linked Issues checkWarningThe PR fixes the Muse mismatch by adding supportsConversationRollback: false to MUSE_PRESENTATION and testing the pending snapshot. Issue #30137 also requires the web action to match server rollba…Derive supportsConversationRollback from the same adapter-capability predicate that ensureRollback uses. Remove the hand-set provider flags and add tests for the affected providers, including Muse, Grok, and Antigravity.
Passed Passed checks: 3 passed
Check nameStatusExplanation
Title checkPassedThe title clearly and concisely describes the main change: Muse threads no longer offer the unsupported “Edit from here” action.
Description checkPassedThe description includes all required sections. It explains the problem, the implementation, scope and linked issue, focused verification results, and the unverified live-web limitation.
Out of Scope Changes checkPassedThe changed status presentation and the new Muse status test directly support issue #30137. The test verifies the pending snapshot that feeds provider status. No unrelated production behavior or unrel…
Full details: Out of Scope Changes check

Explanation

The changed status presentation and the new Muse status test directly support issue #30137. The test verifies the pending snapshot that feeds provider status. No unrelated production behavior or unrelated test change appears in the whole-PR diff.

Full details: Linked Issues check

Explanation

The PR fixes the Muse mismatch by adding supportsConversationRollback: false to MUSE_PRESENTATION and testing the pending snapshot. Issue #30137 also requires the web action to match server rollback acceptance through one rule. The PR changes no shared capability predicate, policy integration, or Grok and Antigravity status handling. The hand-set cross-provider flags therefore remain, so the linked issue is not fully implemented.

Resolution

Derive supportsConversationRollback from the same adapter-capability predicate that ensureRollback uses. Remove the hand-set provider flags and add tests for the affected providers, including Muse, Grok, and Antigravity.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
CcoderabbitaiBotreviewed1d ago
Synced from GitHub
External image Additional comments: 1
packages/provider-muse/src/server/status.ts-25-25: 1

25-25: External image Major · Data Integrity & Integration · Heavy lift

External image Unverified finding Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

Align the linked issue scope before merge.

If this PR is intended to close #30137, Line 25 fixes only the Muse mismatch. The linked issue requires rollback status to match server capability for every provider and calls for one shared rule. Grok and Antigravity remain outside this change. Narrow the issue scope or implement the shared capability-derived rule before claiming the issue is fixed.

External image Review info
External image Run configuration
External image Commits

Reviewing files that changed from the base of the PR and between cefb544af3c98224874419198c0359b652ca3c94 and 1de4009017f0bc0c8ab89d6122aef9acd277dec6.

External image Files selected for processing: 2
  • packages/provider-muse/src/server/status.test.ts
  • packages/provider-muse/src/server/status.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.