fix(noema): ground verdicts and classify gateway errors - #1831
Merged
Conversation
Pass a byte-bounded exact changed-line location contract to the reviewer. Extract only a conservative model identifier from bounded canonical HTTP error JSON and report response_error without logging the body. Signed-off-by: Seongho Bae <me@seonghobae.me> Commit-Message-Assisted-by: Codex (OpenAI)
|
Warning Review limit reachedNext included review available in 58 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
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. Comment |
seonghobae
added a commit
that referenced
this pull request
Sep 4, 2026
… and coverage gap (#1835) [QUEUE_SATURATION_CHICKEN_EGG] Blocks the required test/coverage/docstring suite for every .github PR regardless of diff; bypass-merged per standing chicken-and-egg authorization. Independently reproduced by a peer session on a separate branch before this fix landed. Full evidence in PR description: reproduced on fresh main, fixed (2780 passed, 100% coverage, 100% docstrings).
seonghobae
added a commit
that referenced
this pull request
Sep 4, 2026
…g after merging main Merging origin/main (now including #1832/#1835) surfaced a failure in test_transport_failure_reports_requested_model_and_not_literal_connecting: expected phase=awaiting_response, got phase=response_error. Not a base-branch bug -- ruled out by testing fresh main alone (passes cleanly) and by a peer session's independent clean run. This is a silent merge-combination bug specific to this branch: this branch's own unreleased DNS-pinning/TOCTOU hardening also built a careful connecting-vs-awaiting_response phase distinction (three prior PRs: bebd7c7, e7b29f2, 5c9d30e) via a `reported_phase` ternary gated on `active_phase == "connecting"`. Main's #1831 separately added `active_phase = "response_error"` for the HTTPError case (to also extract served_model from HTTP error bodies) on a non-overlapping line, so the merge produced zero conflict markers -- but by the time this branch's ternary runs, active_phase has already been overwritten, silently defeating the phase distinction for exactly the HTTPError case. Verified "response_error" is not a regression: it is strictly more specific than the old "awaiting_response" fallback (an HTTPError proves a real response arrived, unlike a genuinely ambiguous timeout), and still satisfies the test's real safety property (never mislabel a real HTTP-error response as "connecting"). The two sibling tests covering the non-HTTPError paths are untouched, confirming the fix scope is exactly this one test's stale string expectation, not a deeper production-code issue. Updated the assertion and docstring; no production code change needed. Full verification after fix: 2811 passed, coverage 100%, interrogate 100%. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
seonghobae
added a commit
that referenced
this pull request
Sep 5, 2026
…works (#1868) The .github-side follow-up this entry named as still-needed (call_llm not reading the HTTPError response body, so it couldn't surface served_model) shipped in #1831 (merged), hardened by #1835 and #1850. Found incidentally while handling an unrelated Autofix event on PR #1757: a fresh gateway failure now logs phase=response_error and a real model name (served_model=google/gemma-4-31b-it) instead of the old unknown/connecting pair. The underlying gateway instability (502 after 284.7s) is still a separate, open, recurring problem -- but the telemetry gap that made every prior instance of it undiagnosable is closed. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.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
phase=response_errorerror.detail.modelidentifier; malformed, oversized, or unexpected bodies remainunknownRouting verification
The contextual-orchestrator repository was not modified. Its existing passthrough failover suite passed (
59 passed), and the existing response-format preservation test function also passed when invoked with HTTP 502. No routing patch is needed.Validation
uv run pytest -q tests/test_noema_review_gate.py— 110 passeduv run python -m py_compile scripts/ci/noema_review_gate.py tests/test_noema_review_gate.pyactionlint .github/workflows/noema-review.ymlgit diff --check origin/main...HEADBase used for the final verification:
dafb1e6974c51bc62ce5f606431922bcd0d36414.