fix(proxy): retry missing response.created once - #1543
Conversation
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a8d5dff9c6
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
#1394 (a66f793, merged 08-04 after a ~20h production soak) landed this PR's core behavior on main: the eventless missing-response.created watchdog is now capped at 60s (app/modules/proxy/_service/http_bridge/helpers.py:201) and the upstream reader already routes the timeout into the bounded pre-created replay ( One piece main still lacks: pre-send dispatch-absent classification. |
|
Closing per maintainer decision: superseded by #1394 (merged 08-04, ~20h prod soak) — see the supersession analysis above. The pre-send dispatch-absent classification + retained-lease handoff is still wanted as a narrow refile against the durable recovery-attempt fence; happy to review that as a fresh PR. |
Summary
Recover Codex Responses streams without exposing the reconnect loop when either:
response.createreceives noresponse.created; orEvery replay stays bounded to one attempt, preserves the original request budget and required account, and remains fail-closed whenever dispatch may have begun.
Supersedes the closed draft #1483. Refs #1393.
OpenSpec
Change directory:
openspec/changes/retry-missing-response-created-once/Changes
response.createdacknowledgement window at 30 seconds instead of 240 seconds.Root cause and impact
The existing bridge watchdog always failed after a missing acknowledgement, even when its guarded replay path could safely recover. Separately, both HTTP and direct-WebSocket clients could reuse a normally closed warm upstream and surface a client reconnect before the next send.
The proxy now distinguishes a provably undispatched request from an ambiguous send. Only the former receives one exact same-account resend. Existing lifecycle, visibility, sibling-request, continuation, file-ownership, admission, and one-replay guards remain authoritative.
Simplicity
Validation
Live exact-revision verification also completed authenticated
/models, HTTP Responses, and direct-WebSocket Responses requests through the locally deployed combined image.Checklist
CHANGELOG.mdis unchanged