Skip to content

fix(s2s): observe upstream user transcripts for disconnects - #59

Open
WingedGuardian wants to merge 1 commit into
mainfrom
fix/s2s-user-transcript-disconnect
Open

WingedGuardian wants to merge 1 commit into
mainfrom
fix/s2s-user-transcript-disconnect

Conversation

@WingedGuardian

Copy link
Copy Markdown
Owner

What changes

A completed user transcript now reaches the existing disconnect guard. OpenAI Realtime emits it upstream, where the user context aggregator consumes it before the downstream idle manager sees it. This made the guard refuse the model's disconnect tool even after real user input.

A small observer between the service and user aggregator records final user-turn evidence on the same idle manager. It forwards frames unchanged and works with or without the context aggregator. Empty/partial transcripts do not qualify, and the existing bot-response ordering and session-reset rules remain in force.

Adds a CI job that installs the S2S bridge's existing Poetry lock and runs its test suite.

Closes #49.

Validation

  • Both real-pipeline regression cases failed before the fix because the guard stayed false after a completed user transcript.
  • 96 S2S tests pass with locked bridge dependencies (Pipecat 1.12.0).
  • The two regression cases also pass after strengthening them to call the actual application disconnect predicate. They cover blank input, a completed user turn and a later bot response, with and without the user aggregator.
  • No provider connection is made: the test invokes the real service's transcript emission method on a fake service in the real pipeline.
  • Ruff, CI YAML parsing, privacy scan and independent local architect/security reviews pass. GitHub CI/review follow publication.

This is PR 1 of a three-PR reliability stack; pipeline startup ownership (#50) and reconnect continuity (#51) follow separately.

E2E: after merge and an owner-approved deploy, start a voice conversation, say goodbye or stop listening, and verify disconnect_client is accepted after a real user turn; verify idle or echo-only input still cannot authorize a hangup.

Record final user-turn evidence before the context aggregator consumes it,
while preserving the existing disconnect and idle guards. Add real-pipeline
regressions and run the bridge tests against locked dependencies in CI.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review 🔄 Running since 2026-10-24T02:55:56.598248Z 4148856 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 24, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 06b0689c-14ae-4a2b-89c5-85ca9237d18a
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@WingedGuardian

Copy link
Copy Markdown
Owner Author

@codex review

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.

disconnect_client is always refused: the idle manager never sees a user transcript

1 participant