Repository navigation
fix(combo): hop Astra quality-empty 200 and Gemini 3.8 empty-content to family siblings - #13603
Conversation
|
Solid root-cause work on both the Astra quality-empty-200 case and the Gemini 3.8 |
|
Leaving this one as you asked — the title still carries
Nothing to do on your side right now; just keeping the record straight. |
|
@diegosouzapw I do want this contribution merged. The earlier "Contributor only / Do not merge" wording was my mistake; it described who would perform the merge, not a request to hold the PR. Sorry for the confusion. I have removed that wording and the [defer] title prefix. Your technical concerns still stand: the catalog changes need to use the current buildSurfaceCatalog / ANTIGRAVITY_SHARED_MODELS structure, and the quality-invalid return path must be reconciled with #13630. Removing the accidental hold is not a claim that those conflicts or checks are already resolved. |
047806d to
fe4dab7
Compare
|
Segurando conforme o veredito A PR está conflitante com Ela mexe na mesma área que várias PRs mergeadas hoje (o caminho de combo/fallback recebeu #12956, #12957, #13630 e outras), então o conflito tende a crescer, não encolher, enquanto ela espera. Sugestão: rebase sobre o tip atual antes de retomar a avaliação — o veredito ⭐4 foi medido contra uma base bem anterior e precisa ser reconfirmado contra o que existe hoje. Vale especialmente verificar se o hop de |
a3270c7 to
38516bf
Compare
|
Rebased onto current The quality-empty hop is still needed. #13910 ( Conflict resolution kept the tip's pre-content streaming retry ( Tests: 21/21 on the hop + family tables. Injection: forcing Head |
|
Rebased onto current Checked #13910 against this hop: it classifies a 2xx body whose assistant text is the provider's own error prose. The Astra case is a quality-empty 200 ( Family templates for Astra and Gemini 3.8, plus the hop, are still unique vs tip. Tests 21/21 on this tree. Please re-evaluate when you have a slot. The earlier defer / contributor-only wording is withdrawn. |
38516bf to
7635948
Compare
|
Rebased onto current |
7635948 to
a8e3713
Compare
|
Live combos this hop is for were not Gemini failing over to Claude.
On 2026-09-13 Codex returned HTTP 200 with no visible text. This PR hops the same connection to the next effort alias: Astra high -> max -> ultra, Gemini 3.8 high -> medium -> low. It does not spend combo A combo that pins |
…#14213) Merged. Thank you, @maxmad64bis. Four distinct shapes of "the turn came back empty" — reasoning-only 200, zero-chunk 502, pre-first-byte drop, header-then-quiet stall — collapsed into one retry through the normal credential path, with a bounded `EMPTY_TURN_RETRY_MAX` budget and the stall gated on `STREAM_READINESS_TIMEOUT_MS`. Retrying server-side *before* anything reaches the client is the right layer for this; the related issues you listed (#11902 client-side signalling, #12656 first-byte watchdog, #13603 combo-level hop) each sit one stage away, and you were explicit about which. The thing that made this safe to take: `FLUSH_EMPTY_RETRY_ENABLED` defaults to `"false"` and the flag-off path is byte-identical. Verified on the final tree, not taken on trust. Validation before merge: reconciled twice as the tip moved under it. The only conflict each time was the additive `_rebaseline_*` key at the top of `config/quality/file-size-baseline.json` — resolved keep-both, JSON re-parsed, 523 keys, every tip entry preserved. `flush-empty-retry` + `flush-empty-retry-hook` + `feature-flags-settings` + `server-owned-tool-loop-flag` **100 pass / 0 fail** across 12 suites on the final tree. `check:file-size` OK, `check:changelog-integrity` OK, `typecheck:core` clean. Two numbers I re-measured rather than trusting: - The feature-flag count. Both count assertions said 76; the tip has 75 and this PR adds exactly one, so 76 is right and needed no change. `docs/reference/FEATURE_FLAGS.md` totals and the `### Network (18)` heading agree. - `open-sse/handlers/chatCore.ts` — your ceiling of 6392 was exact on your fork base but stale; the reconciled tree measures **6400**, which is your `+113` own growth on top of the tip's 6287. Set to 6400. Note that leaves the file sitting exactly at its ceiling with zero headroom, so the next PR to touch `chatCore.ts` will need a rebaseline of its own. Note: the release tip is currently base-red on `open-sse/executors/auggie.ts` (#14496). Inherited, unrelated to this diff.
59281d3 to
68e3e2e
Compare
|
Re-homed to |
openai-gpt-sol pins two Codex Astra connections. A 200 stream with no visible text failed the combo quality gate and skipped family fallback, so the client saw 502 empty output. Astra high/max/ultra are the same catalog family; hop on the same connection before leaving the step. Signed-off-by: Minxi Hou <houminxi@gmail.com>
agy/gemini-3.8-flash-high parses as antigravity, so hop candidates were filtered by a catalog that only listed 3.7. Prefer the combo alias and pin 3.8 ids on both agy and antigravity static catalogs. Signed-off-by: Minxi Hou <houminxi@gmail.com>
…mpt test (cheaper-inference#13603) Signed-off-by: Minxi Hou <houminxi@gmail.com>
Rebase onto release/v3.8.51. Quality-empty 200 still hops Astra and Gemini 3.8 siblings. Tip added handlePreContentStreamRetry; the hop runs after that retry, and unknown providers do not hop. pollinations/perplexity-web error prose, not empty-content quality fails. Related to cheaper-inference#13603. Signed-off-by: Minxi Hou <houminxi@gmail.com>
68e3e2e to
e8ba143
Compare
… tip (cheaper-inference#13603) The tip already serves gemini-3.8-flash-high/medium/low in antigravitySharedModels.ts; the PR's copy merged textually clean but left duplicate ids, failing tests/unit/agy-antigravity-shared-catalog-12724.test.ts. Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
…int is given (cheaper-inference#13603) Folding providerHint into explicitProvider made getNextFamilyFallback prefix a bare id with the hint provider (an unprefixed opus-5 id plus a provider hint came back as <provider>/<sibling> instead of the bare sibling), failing tests/unit/t30-kiro-400-model-unavailable.test.ts. Registry lookup keeps the PR's hint/alias-first order; the output prefix comes only from a provider written in the model id. Also records the executeTargetAttempt.ts ceiling for the family hop wiring (1280 -> 1294). Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
2a5aae2
into
cheaper-inference:release/v3.8.52
Drains 9 v3.8.52 tip unit reds: 1 production fix (combo family-fallback skipped for request-scoped refusals, regression of #13603) + 8 test alignments to intentional contract changes (#15301 #15132 #15035 #15478 #15310 #15710 #15487), each annotated. Validated on a combined board with #15902 after clean npm ci: 32 previously-red files 327/329 (remaining 2 = quality-rail-gate-membership owned by #15682, and route-namespaces fixed in #15902), typecheck/open-sse/api typecheck, lint, 22 gates.
openai-gpt-solpinscodex/gpt-6-astra-high. Live 2026-09-13 the Codex leg returned HTTP 200 and combo quality validation marked the streamstreaming upstream error, so the combo step failed 502. Family fallback never ran: quality 502 returned fromexecuteTargetAttemptwithout callinggetNextFamilyFallback, andFAMILY_FALLBACK_TEMPLATEShad no Astra rows.onmi-gemini3.6pinsagy/gemini-3.8-flash-high. Empty-content already hops innonStreamingProviderLeg, but the family table had no 3.8 rows.parseModel("agy/...")canonicalizes provider toantigravity, whose static catalog listed 3.7 only, so hop candidates were filtered out.What
maxRetries. Guard hop whenprovideris missing.agy/hops against the catalog the combo named.Not subsumed by later merges
credits exhausted, and similar). This hop is for quality-empty 200: the stream is structurally a completion, combovalidateQualityrejects it, and we want the next effort alias on the same connection. TipexecuteTargetAttemptstill returnsqualityValidationFailure()immediately afterhandlePreContentStreamRetry; there is still no family hop.Catalog files were rebased onto
buildSurfaceCatalog/ANTIGRAVITY_SHARED_MODELS. Unique vs currentrelease/v3.8.51: family templates, the hop inexecuteTargetAttempt, providerHint lookup, tests.Test
tests/unit/combo/execute-target-attempt.test.tsandtests/unit/model-family-fallback-notation.test.ts: 21/21. Inject: drop the Astra high template -> 3 fail; drop the hopcontinue-> 1 fail; drop Gemini 3.8 high template -> 1 fail. Restore: 21/21.This is submitted for review and merge. The earlier hold wording was a mistake, not a request to defer.