FAULTLINE · 22 October 2026 · local evidence

Keep tool results correct across reconnects.

Independent reproduction and proposed fix for Pipecat #6301. Credit for the original bug and reproduction belongs to the issue reporter.

Before: 4 failed / 2 passed.
After: all 6 passed.

Broader Gemini Live suite: 57 passed, 5 skipped, 21 warnings. No model or provider calls. Not the entire Pipecat test suite.

What changes for developers?

A resumed connection should not receive already-sent tool results again. Tools that are still running should retain their names and asynchronous scheduling. The proposed patch preserves this bookkeeping on resumed reconnects, while ordinary shutdown and fresh reconnects still clear it.

Failing trial: old result replayed after resume

The reporter's unchanged script produced these outgoing SDK messages:

Before, connection 2:
[('call-1', 'tool_call_result'), ('call-2', 'list_items')]

After, connection 2:
[('call-2', 'list_items')]

Raw before log · Raw after log

Six cases and controls
  1. Settled regular tool result: no replay across two resumed reconnects.
  2. Settled async final: no replay across two resumed reconnects.
  3. Async result finishing after readiness: correct name, WHEN_IDLE, will_continue=false.
  4. Result added during reconnect, pushed after readiness: delivered once, not swallowed.
  5. Reconnect without a handle: history seeded, bookkeeping reset.
  6. Ordinary disconnect with a handle: bookkeeping reset.

Repeated context pushes must not duplicate newly delivered results.

Base assertions · Patched suite · Frozen cases

Evidence boundaries

Real Pipecat service, mocked SDK session and connection establishment. This is not a live Gemini, voice-call, or end-to-end deployment test. No claim about provider behavior on duplicates, failed sends, rejected handles, or context frames processed while disconnected.

Selected deterministic cases are not model accuracy estimates or customer success rates. The first preliminary run had a misspelled test helper; its errors are excluded from the final result and preserved in the evidence.

Review or rerun

Method and rerun commands · Proposed patch · Regression tests · Environment · Manifest

Patch and tests posted in the original issue. Not merged or deployed. Back to FAULTLINE.