Skip to content

[Fix] Voice doubles and misorders replies to small talk - #2541

Merged
mrubens merged 3 commits into
developfrom
fix/voice-small-talk
Sep 11, 2026
Merged

[Fix] Voice doubles and misorders replies to small talk#2541
mrubens merged 3 commits into
developfrom
fix/voice-small-talk

Conversation

@mrubens

@mrubens mrubens commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

What changed

  • Rolls back the delegate-everything policy from [Fix] Voice Sessions invent codebase answers before checking Fast #2490. Greetings, thanks, reactions, and small talk are answered by the voice again and recorded as heard and spoken turns; anything about code, tools, data, or the product still goes to the Fast Session.
  • Restores the silence backstop's original behavior (record what the person said as a heard turn) and removes the fallback-only latch that disabled GPT-Live delegation for the rest of a call after one missed delegation.
  • Keeps two parts of [Fix] Voice Sessions invent codebase answers before checking Fast #2490: a grounding policy that forbids the voice from claiming it checked anything or stating how any product, repository, or tool works unless backend commentary supplied it, and the voiceDirectUnverified tag plus history note on direct voice words so Fast does not treat them as facts.

Why this change was made

On a real call, "Hi there" and "How's it going?" each started a Fast turn, and the voice answered the greeting itself anyway. Each greeting produced two or three assistant lines, with Fast's answer read out five seconds later, after the next question had already been asked. The transcript looked out of order and the assistant appeared to respond several times in a row. The invented-facts problem #2490 targeted is real, but it is a grounding problem, not a routing one; the grounding rule is kept.

Impact

Small talk is answered instantly by the voice with nothing written by Fast. Substantive requests behave as before. Direct voice words remain flagged as unverified in Fast's history.

Verification

Voice hook, transcript, server, and command suites pass (109 tests); web typecheck and residual ESLint clean. Reconstructed the misordered session from its persisted rows to confirm the cause.

#2490 made GPT-Live delegate every utterance to Fast, greetings included, and
forbade it from answering anything itself. On a real call that doubled the
replies (the voice still answered, then read Fast's answer for the same
greeting seconds later) and made the transcript read out of order, since a
five-second Fast turn for "hi there" lands after the next question. It also
turned the silence backstop into a Fast submission and latched the call into
fallback-only mode after a single missed delegation.

This restores the previous policy: greetings, thanks, reactions, and small
talk stay with the voice and are recorded as heard and spoken turns; anything
about code, tools, data, or the product goes to Fast. Two parts of #2490 are
kept because they address the real problem it targeted: a grounding policy
that forbids the voice from claiming it checked anything or stating how any
product, repository, or tool works without backend commentary, and the
"unverified" tag on direct voice words in Fast's history.
@roomote-community

roomote-community Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

No new code issues found. See task

  • apps/web/src/hooks/useLiveVoice.ts:322 no longer discards a legitimate delegation that arrives before its request's transcript.
  • apps/web/src/hooks/useLiveVoice.ts:288 no longer keeps a delayed delegation when the next turn starts within the three-second expiry window.

Reviewed 3712896

Comment thread apps/web/src/hooks/useLiveVoice.ts Outdated
The three-second window after a small-talk flush dropped any delegation that
arrived with nothing transcribed yet, including the delegation for the next
request when GPT-Live emits it before that request's first transcript delta.
The request was then filed as small talk and never reached Fast.

A delegation that arrives with nothing transcribed now waits: speech arriving
settles it as the next request's delegation, and only silence for three
seconds drops it, so a late delegation for already-flushed small talk still
cannot attach to a later request.
Comment thread apps/web/src/hooks/useLiveVoice.ts Outdated
@mrubens
mrubens merged commit 26d6f7f into develop Sep 11, 2026
18 checks passed
@mrubens
mrubens deleted the fix/voice-small-talk branch September 11, 2026 18:41
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