fix(e2e): validate Discord message fetches and bound rate-limit retries - #5703
Merged
Merged
Conversation
Reject malformed message arrays with observed status and bounded body diagnostics. Retry read-only message GETs for actual HTTP 429 and the current HTTP 200-wrapped retry_after response, honoring reset metadata within three attempts and a 15-second retry budget. Keep fixed-cursor polling and same-ID edit observation, and expose the offline client regression tests through the existing CI assertion suite. The production route's upstream status handling remains separate work. Refs #5071 Refs #5191 Refs #5702 Co-authored-by: Codex <noreply@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validate E2E Discord message-fetch responses and add bounded, read-only rate-limit retries. The Gate C run at 2026-09-05 09:42–09:43 KST became
UNEVALUABLE: harness failure: a decoded upstream error object was returned under local HTTP 200messages, then a caller iterated its string keys and failed on.get. One admission and one E-1 body were preserved; no automatic rerun occurred.The production route's upstream-status handling is separate work in #5702. This patch changes no production Rust, configuration, deployment, scenario YAML or POST retry behavior.
Scope
Within 20 paths/+800. No cap exception. Valid raw/enveloped arrays and same-ID edits remain supported. Malformed responses report observed local HTTP status and a bounded body excerpt; wrapped
retry_afteris labelled inference, not a fabricated observed upstream status. Actual HTTP 429 can honor valid headers even with an empty/non-JSON body.At most three GET attempts, with a 15-second retry budget and no shortened reset delay. This is not a strict total-transfer wall-clock cutoff: urllib provides socket timeouts rather than a total-read deadline. No scenario/run auto-retry is introduced.
Validation
Independent exact-head review
Both fresh reviewers bound the same full head/tree and returned
VERDICT: CLEAN / PUSH_GO1:68917e3f729256fa22fdfbf1b61ab8c28b625139f65f3dcd9681bb109d678db4.0d291e8ebeff470774d1d0719ce498f6816fe3c9e02035c0000e2ff26bfa3e80.Accepted compatibility disclosures: the first GET socket timeout is also capped at the smaller of the configured client timeout and the remaining 15-second budget. Empty 2xx bodies now fail explicitly rather than silently returning an empty list. CI imports the 18 new fetch owners, not all pre-existing client tests; existing send-prompt coverage gaps are not claimed closed. Numeric delay parsing retains Python float syntax. The intermediate header-only RED commit is preserved in a separate forensic bundle, not the final publication bundle.
Execution boundary
After merge, the user authorized exactly one supervised Gate C rerun from the new main harness source, subject to fresh preflight. Deployed leader/worker remain 6d2db2e, O100 only, channel1509350490461180105, no redeploy/config change. The supervisor polling delta is a separately reviewed local artifact, not part of this PR. A failed rerun is sealed and returned for user decision, not automatically repeated.
Refs #5071
Refs #5191
Refs #5702