Skip to content

fix(muse): questions Muse cancels or times out no longer show as answered - #31766

Open
tim-d0gan wants to merge 3 commits into
pingdotgg:mainfrom
tim-d0gan:fix/muse-settled-question-cancelled
Open

tim-d0gan wants to merge 3 commits into
pingdotgg:mainfrom
tim-d0gan:fix/muse-settled-question-cancelled

Conversation

@tim-d0gan

Copy link
Copy Markdown

Problem

When Muse ends a question without an answer, T3 still records it as answered. Muse reports why in userInput/settled's outcome (cancelled, interrupted, timedOut or aborted), but the adapter ignored it and always settled the request as resolved. The thread showed the question as completed with no answer, and agents reading the thread's requests over MCP were told it was resolved. Muse's model, meanwhile, was told the question was cancelled or timed out.

Change

In the userInput/settled branch only, those four outcomes now settle the request as cancelled. This is the same state the adapter already produces when a turn ends with a question open. answered, clarified, a missing outcome and any unknown future outcome still settle as resolved, so older and newer Muse builds keep today's behaviour. approval/resolved is unchanged.

Scope and approval

This is a small, focused fix for an obvious protocol-translation bug: one condition in the Muse adapter plus test rows. It needs no contract or client changes. Clients already render cancelled requests because finish() produces them.

Out of scope, each a separate change: decoding autoResolutionMs, sending userInput/engaged, and keeping clarification text or partial answers from an interrupted question.

Verification

  • Added an it.effect.each case to packages/provider-muse/src/server/adapter.test.ts. It emits userInput/requested, then userInput/settled with each of the four outcomes, and asserts that the runtime request and its turn item end up cancelled with no answers.
  • On main, all four rows fail with expected 'resolved' to equal 'cancelled'. With the fix they pass.
  • vp test run packages/provider-muse/src/server/adapter.test.ts: 45/45 pass. The existing settled case with no outcome still resolves.
  • vp run check:changed is green: format, lint, knip, typecheck and tests.

What I could not check: none of the recorded Muse sessions contains a question, so I didn't watch a live Muse host send these outcomes. I also didn't confirm how often Muse sets autoResolutionMs on questions.

Council review

Rounds: 1

Delegate Round 1
Claude Opus 5.5 9/10
GPT-6.1 Sol 10/10
Muse Wonder Full 1.0 (review only) 9/10

Created with Claude Opus 5.5 in Claude Code (running in T3 Code).

🤖 Generated with Claude Code

…ered

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:unvouched Author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Nov 6, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7e56921

Macroscope's review found this PR approvable — Muse questions that are cancelled, interrupted, timed out, or aborted now appear as cancelled rather than answered. The change is limited to settlement-status reporting and leaves approval decisions unchanged.

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

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 0eaef8c and 2d6cf71.

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

No actionable comments were generated in the recent review.

Walkthrough

The adapter now cancels pending user-input requests when they settle as cancelled, interrupted, timedOut, or aborted. Parameterized tests verify the request and turn-item states and confirm that no answers are recorded.

Changes: Question cancellation

Layer / File(s) Summary
Map unanswered outcomes to cancellation
packages/provider-muse/src/server/adapter.ts, packages/provider-muse/src/server/adapter.test.ts
The adapter cancels pending requests for four unanswered settlement outcomes. Tests verify that the requests and turn items are cancelled and that no answers are recorded.

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

Change: Bug fix

Suggested reviewers: maria-rcks

Merge Risk: Minimal · previous review 0eaef

Questions that Muse cancels, interrupts, times out or aborts will now show as cancelled instead of answered. The change is small, tested, and leaves other outcomes as they were, so merge risk is minimal.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title names the main change: Muse-cancelled or timed-out questions no longer appear as answered. It matches the adapter change that maps cancelled, interrupted, timedOut, and aborted user-input ou…
Description check Passed The description follows the template. It has Problem, Change, Scope, and Verification sections with substantive content. The Problem section explains the expected and actual behavior. The Change secti…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names the main change: Muse-cancelled or timed-out questions no longer appear as answered. It matches the adapter change that maps cancelled, interrupted, timedOut, and aborted user-input outcomes to cancelled. It uses the conventional commit format with a clear scope.

Full details: Description check

Explanation

The description follows the template. It has Problem, Change, Scope, and Verification sections with substantive content. The Problem section explains the expected and actual behavior. The Change section explains the four outcomes and the unchanged states. The Scope section explains why no issue link is needed and lists out-of-scope items. The Verification section gives focused test results and names what was not checked. It omits a linked issue, which the template asks for when the bug is non-obvious, but the author gives a reason for skipping it. The description also states the model and harness used, which the template requests. No UI changes apply, so no screenshots are needed.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 7e56921 and 0eaef8c.

Files selected for processing: 2

  • packages/provider-muse/src/server/adapter.test.ts
  • packages/provider-muse/src/server/adapter.ts

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

…tion-cancelled

# Conflicts:
#	packages/provider-muse/src/server/adapter.ts
@maria-rcks

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Merged current main into the existing head without rebasing. Resolved the adjacent-constant conflict by keeping both main's model-output handling and this PR's unanswered-question outcomes. The diff remains 2 files, 54 additions and 1 deletion; no behavior changes beyond the original fix.

Blacksmith vp run check:changed github/main passed: format, lint, both knip checks, typechecks for 10 affected packages, and 55 tests, including all 53 Muse adapter tests. Two independent read-only reviews of 0eaef8c735b8b619688149f64df6471a66b2555f found no blocker or should-fix findings. Existing bot reviews had no actionable findings.

Real Muse runtime and client integration remain unverified because this VM has no Muse runtime. Adapter tests cover all four cancellation outcomes, successful answers, and approval behavior.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched Author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants