Repository navigation
fix(ci): drain the release/v3.8.51 base-reds — auggie/projectCombo typecheck + three stale catalog guards (#14496) - #14511
Merged
diegosouzapw merged 23 commits intoSep 24, 2026
Conversation
…pecheck, prefix and catalog guards - auggie.ts: buildAuggieSpawnOptions constrained its stdio generic to readonly string[], which satisfies no spawn() overload (TS2769 x4); with the overload unresolved the ChildProcess lost its stream types, producing the TS18047 'possibly null' pile. Constrained to StdioOptions instead — the literal tuple is preserved and spawn() resolves. - projectCombo.ts: ComboLike/ComboCollectionLike/ResolvedComboTarget are declared in the combo type module; comboStructure.ts only consumes them (TS2459/TS2724). - combo-builder-options-route: #14143/#14135 made qualifiedModel carry the provider node's routing prefix instead of the internal id — the guard now asserts against the node's own prefix so the pair cannot drift again. - provider-node-reserved-prefix: #14289 retires gemini-cli, adding one member to the reserved walk (414 -> 415), logged like every prior change. - translate-path golden: regenerated for #14316, which moved DeepSeek from the Responses API to Chat Completions by default. Refs #14496.
…e-v3.8.51-basereds-0922-tests
…strip #14252 added stripInternalBodyFields() at the shared pre-executor boundary so _omniroute* routing markers cannot leak upstream. The same helper also removes the four _native*Passthrough markers — but those are read INSIDE the executor (codex.ts:1259, xai.ts:130), which deletes them itself. Stripping them a layer early turned every Responses-native request into a translated one, which then lost client fields to the #2608 allowlist; 'metadata' is how it surfaced. Executor-consumed markers are now a named list the boundary keeps and the serialization strip (applyFingerprint) still removes, so the leak fix stands. Bisected to 1fb7c9d on a clean checkout. Also aligns opencode-executor's auth expectation with #14230, which routed Zen GPT-5.6 through /v1/responses where #12633's x-api-key rule applies. Refs #14496.
…ta threshold guard - chatcore-translation-paths: #14316 moved DeepSeek's default to Chat Completions; the three Responses cases now pick that path per-connection (apiType: responses), the way an operator still can, so the Chat->Responses reasoning-replay coverage stays on the provider it was written for. - domain-branch-hardening: #14276 made a window whose fraction upstream never reported UNKNOWN rather than '0% remaining' (total: 0 is exactly that), so it must not reach the exhaustion threshold. Added the counterpart case — a reported 0% still does — so the safety change cannot silently disable exhaustion detection. Refs #14496.
… contracts - domain-branch-hardening: #14276 made a window whose fraction upstream never reported UNKNOWN rather than '0% remaining' — total:0 and an Infinity percentage are both exactly that, so neither reaches the exhaustion threshold. Added the counterpart case (a reported 0% still does) so the safety change cannot silently disable exhaustion detection. - qwen38-max-bare-id-alias: #14181 stopped aliasing the GA qwen3.8-max to the preview — opencode-go serves it and the upstream rejects the preview id — so the GA model owns its spec row. The guard now asserts what still matters: neither id may fall back to the 128k window. Refs #14496.
…e-v3.8.51-basereds-0922-tests
This was referenced Sep 23, 2026
…e-v3.8.51-basereds-0922-tests
…ker tap.testFiles Refs #14547.
…w the Codex image catalog ids - chatcore-translation-paths / chat-route-coverage: #14316 moved DeepSeek to Chat Completions by default and kept Responses as a registry alternate format. The five cases that assert a Responses upstream now select it the way the connection modal does — providerSpecificData.targetFormat — on every DeepSeek call (the replay cases' second turn included). The previous apiType attempt never worked: apiType only drives the openai-compatible-* family. Coverage stays on DeepSeek's reasoning_content replay. - model-token-limit-catalog / specialty-model-catalog-routes / image-model-not-in-chat-catalog-6457: #14216 gave Codex GPT-5.6 image rows their own catalog ids (gpt-5.6-sol-image), so /v1/models no longer lists one id twice with two types. parseImageModel() maps both the new and the bare id back to gpt-5.6-sol, so image callers of either keep working; the guards now assert each entry under its own id, and #6457's "neither entry is dropped". Refs #14547.
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
) Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
) Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
…#14410) Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
…14423) Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
…14429) Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, 99 triadas por ⭐; esta entrou pela Trilha A). Validação única na árvore combinada das 49 PRs da trilha sobre `release/v3.8.51` @18bbb101: - `typecheck:core`: só o erro herdado `cliproxyAccountHealth.ts:157` (TS2322, não desta leva) - `check:open-sse-typecheck`: 0 erros (o auggie.ts da base é corrigido pela #14511 do mesmo lote) - eslint nos arquivos alterados: limpo - 89 arquivos de teste node focados (710 testes) + 11 suítes vitest de UI: todo vermelho restante reproduz também no tip puro (base-red #14547/#14496) e a árvore combinada fica com um subconjunto estrito dos vermelhos do tip, ou seja, nenhum introduzido pelo lote - teto de file-size acertado na PR de acompanhamento da leva
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, Trilha B, retrabalhada). Um worker corrigiu o defeito apontado na revisão direto no branch da PR; o detalhe está na seção "Rework (merge-batch 2026-09-23)" do corpo, com a prova de red→green. Revalidado numa árvore combinada das PRs da 2ª leva da Trilha B (#14415 #14472 #14468 #14493 #14403) sobre o tip atual de `release/v3.8.51`: - 104/104 testes node focados + 46/46 vitest (as 6 suítes de UI que saíram da quarentena); `check:provider-consistency` OK (359) - `typecheck:core`: só o herdado `cliproxyAccountHealth.ts:157`; `check:open-sse-typecheck`: só o herdado `auggie.ts` (base-red #14547, corrigido pela #14511) - eslint nos arquivos alterados limpo; file-size OK
diegosouzapw
added a commit
that referenced
this pull request
Sep 24, 2026
Merge-batch 2026-09-23 (PRs do mantenedor, Trilha B, retrabalhada). Um worker corrigiu o defeito apontado na revisão direto no branch da PR; o detalhe está na seção "Rework (merge-batch 2026-09-23)" do corpo, com a prova de red→green. Revalidado numa árvore combinada das PRs da 2ª leva da Trilha B (#14415 #14472 #14468 #14493 #14403) sobre o tip atual de `release/v3.8.51`: - 104/104 testes node focados + 46/46 vitest (as 6 suítes de UI que saíram da quarentena); `check:provider-consistency` OK (359) - `typecheck:core`: só o herdado `cliproxyAccountHealth.ts:157`; `check:open-sse-typecheck`: só o herdado `auggie.ts` (base-red #14547, corrigido pela #14511) - eslint nos arquivos alterados limpo; file-size OK
…s lossy policy; drain 12 base-red files #14529 moved lossy engines off the header-less path in the runtime but not in deriveEffectivePreviewPlan(), so the dashboard preview showed rtk -> caveman while requests ran session-dedup -> lite (#12063 again). The preview now applies downgradeUnrequestedLossy(); the #12063 test pins preview == runtime for the profile, engines-map and safe-profile cases (fails on the old code). Test guards realigned to merged design changes, each traced to its commit: - #14529: compression suites opt in with allow-lossy where they test the operator plan, and assert the header-less downgrade; default seed is session-dedup + lite; the #10503 probe ignores the loopback dashboard telemetry POST that stacked compression emits (the context gate still rejects locally — verified with logging). - #14530: breaker profile asserted on the connection breaker; the provider-wide cooldown case drives the network-error path. - #14370: @opencode/plugin (stable OpenCode 2.x contract, npm maintainer thdxr) added to the dependency allowlist. - #14213: the opt-in empty-turn retry credential site is inventoried as class A (dispatch goes through assertManagedLeaseFence). - #14223 / #14329: flag count 77, quota registry 13 (muse-code). Refs #14496
…e-v3.8.51-basereds-0922-tests # Conflicts: # tests/unit/chat-route-coverage.test.ts
…n only the management key is set #14544 built the probe URL from CLIPROXYAPI_HOST with no fallback, so a key-only (local) setup probed http://undefined:8317 and showed the account as unreachable; it was also the typecheck:core TS2322 on the release tip. Test fails on the old code (actual http://undefined:8317/...). Refs #14496
…irement, extracted failure projection - docs: migration count 182 -> 183 in README, AGENTS.md and llm.txt (+ the 66 llm.txt mirrors), same shape as #14559; migration 185 landed with #14544. - #14468 retired suno: APIKEY_PROVIDERS 242 -> 241 and the translate-path golden loses the suno entry (regenerated; that is the only diff). - #14527 moved the retained provider-failure projection into chatCore/providerFailureRetention.ts; the public-error guard now follows the call and still requires sanitizeErrorMessage() at the projection. Refs #14496
…e-v3.8.51-basereds-0922-tests # Conflicts: # tests/unit/provider-node-reserved-prefix.test.ts
…temp dir Three cases wrote fixed /tmp/omniroute-subtitle-runtime-*.vtt paths. On the shared self-hosted runners a leftover owned by another user makes that path unwritable (EACCES under /tmp's sticky bit, reproduced on .113 even as root), and parallel shards race on the same name. Refs #14496
…s loader; rebaseline two test files - responses-handler: the synthesized in_progress frame now carries sequence_number 1 and a response object (#14572/#14330) — pin that prefix. - perf-waterfall A1: Home batches loadHomeSettings() (#14421/#14060) with getMachineId(); assert the loader still reads getSettings() by default. - file-size: documented rebaseline for chatcore-translation-paths (+12) and account-fallback-service (+14, 11 of them Prettier reflow of tip lines). Refs #14496
5 tasks done
5 tasks done
…e-v3.8.51-basereds-0922-tests # Conflicts: # config/quality/file-size-baseline.json # docs/i18n/fr/README.md # docs/i18n/km/README.md # docs/i18n/my/README.md # docs/i18n/or/README.md # docs/i18n/pa/README.md # docs/i18n/vi/README.md
… ceilings and stryker coverage The release tip crossed eight frozen file-size ceilings and one new test file (#14551) passed the 1200 test cap; four new covering tests were missing from stryker tap.testFiles. Documented rebaseline entries carry the measured sizes and the PRs that grew each file; nothing in this commit changes behavior. Refs #14496
This was referenced Sep 24, 2026
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.
Drena a metade código + guards da base-red de hoje (#14496). A contagem de migrations (
AGENTS.md/README.md/65 espelhos dellm.txt) está com outra sessão — recorte combinado no comentário da issue, e nenhum arquivo é compartilhado entre as duas.Dois defeitos de compilação —
API Route Typecheckestava a 4 erros fora do baselineauggie.ts(8 diagnósticos, uma causa).10c8aaae(hoje) tipou o helper comobuildAuggieSpawnOptions<S extends readonly string[]>. Nenhum overload despawn()aceitareadonly string[]comostdio→ TS2769 nos 4 call-sites. E como o overload não resolve, oChildProcessretornado perde a tipagem dos streams → os 4 TS18047 dechild.stdout/child.stdin"possibly null" são consequência, não causa. Restringi o genérico aStdioOptions: a tupla literal continua preservada e ospawn()resolve. Nenhum!e nenhum guard defensivo foi necessário.projectCombo.ts. ImportavaComboLike,ComboCollectionLikeeResolvedComboTargetdecomboStructure.ts, que apenas os consome; os três são declarados e exportados no módulo de tipos do combo (TS2459 ×2, TS2724 ×1).Verificado com o tsconfig do próprio gate (
tsconfig.typecheck-api.json) na.113ociosa: 0 ocorrências dos dois arquivos depois da correção.Três guards que ficaram para trás de mudanças deliberadas
combo-builder-options-routef4d7d8a5) fezqualifiedModelcarregar o prefixo roteável do provider node em vez do id interno —parseModel()só resolve o aliasprefixdo próprio node (${provider.prefix}/gpt-custom), então os dois não podem divergir de novoprovider-node-reserved-prefix257f0a0d) aposentagemini-cli, e um id retirado conta na mesma varredura (414 → 415)translate-pathgolden5f67e11c) tirou o DeepSeek da Responses API (o protocolo exigia eco dereasoning_texte quebrava tool-call multi-turno com 400)openai-responses → openaie as duas URLsNenhuma asserção foi removida ou enfraquecida — as duas de contagem viraram asserções por invariante ou ganharam a justificativa rastreável.
O que esta PR não cobre
Os demais testes da #14496 seguem vermelhos no tip e estão sendo diagnosticados um a um:
chatcore-translation-paths(4 — mesma origem #14316),model-token-limit-catalog(4),chat-route-coverage(2),image-model-not-in-chat-catalog-6457(2),domain-branch-hardening(1),opencode-executor(1),qwen38-max-bare-id-alias,specialty-model-catalog-routes. Entram em PR seguinte para esta não ficar parada — ela já devolve oAPI Route Typecheckao verde, que é o gate bloqueando #14491 (fix de segurança #14486) e #14340 (contribuidor).Refs #14496.
Docs Gatesreclamando da contagem de migrations (178→179) emREADME.md/AGENTS.md/llm.txt, que é o recorte da outra sessão (worktreefix/release-v3.8.51-basereds-0922). Os outros 11 checks estão verdes.