fix(voice-call): avoid OpenAI realtime double greeting#86285
Conversation
|
Codex review: needs changes before merge. Reviewed July 5, 2026, 4:06 PM ET / 20:06 UTC. Summary PR surface: Source +92, Tests +427, Docs +1. Total +520 across 3 files. Reproducibility: yes. at source level: current main combines a ready-triggered explicit greeting with OpenAI server VAD create_response defaulting true, and the linked issue reports repeated live Twilio/OpenAI reproductions. I did not place a fresh phone call in this read-only review. Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Copy recommended automerge instructionNext step before merge
Security Review findings
Review detailsBest possible solution: Merge the provider-owned fix after removing the changelog entry, preserving the PR-body release-note context, and letting exact-head CI plus maintainer review gate the timing-sensitive message-delivery behavior. Do we have a high-confidence way to reproduce the issue? Yes, at source level: current main combines a ready-triggered explicit greeting with OpenAI server VAD create_response defaulting true, and the linked issue reports repeated live Twilio/OpenAI reproductions. I did not place a fresh phone call in this read-only review. Is this the best way to solve the issue? Yes, with cleanup. The provider-owned suppress/restore approach is the narrowest maintainable fix because it avoids new config surface and preserves explicit greeting behavior for other realtime providers; the changelog entry should be removed before merge. Full review comments:
Overall correctness: patch is correct AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a04b6ced4f96. Label changesLabel justifications:
Evidence reviewedPR surface: Source +92, Tests +427, Docs +1. Total +520 across 3 files. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (5 earlier review cycles)
|
|
ClawSweeper PR egg 🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat. Where did the egg go?
|
34dcae8 to
4f41219
Compare
|
@clawsweeper re-review Current-head refresh for #86285:
No live Twilio/OpenAI outbound call proof was run in this environment. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
4f41219 to
8ec995e
Compare
|
@clawsweeper re-review Current-head refresh for #86285:
I still have not run the requested live Twilio/OpenAI outbound-call proof on this machine. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Thanks for the PR. Before this can move forward, please add live proof from the affected surface, not just unit tests, mocked tests, or source inspection. A useful proof update should include:
Please redact secrets, tokens, phone numbers, and private message content from logs or screenshots. |
8ec995e to
3de30fb
Compare
|
@clawsweeper re-review Current-head refresh for #86285:
I still have not run live Twilio/OpenAI outbound-call proof on this machine. No merge performed. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
3de30fb to
9b03cf8
Compare
|
@clawsweeper re-review Refreshed onto upstream Focused validation after rebase passed:
Remaining known gap: I still do not have live Twilio/OpenAI outbound call proof on this machine. No merge performed. |
7415e3b to
53b9efa
Compare
|
Exact-head land-ready proof for
Known proof gaps: none for the changed surface. |
|
Merged via squash.
|
Fixes #85846
What Problem This Solves
OpenAI Realtime outbound calls could greet twice when caller audio arrived before
session.updated: the provider drained that audio into server VAD before the explicit queued greeting had disabled automatic response creation.Why This Change Was Made
create_responsewhile a manual response is active; retain interruption handling.No config, plugin API, or non-OpenAI realtime-provider behavior changes.
User Impact
Outbound OpenAI Realtime calls produce one intended initial greeting even when the caller speaks immediately. Later caller interruptions still cancel the active response as before.
Evidence
response.create, exactly one server response, zero errors, and returned audio plus transcript.53b9efa0a7118df9906c66999fc0580809c45baa: https://github.com/openclaw/openclaw/actions/runs/28753065715Known proof gaps: none for the changed surface.