Skip to content

fix(combo): keep Antigravity Gemini usable when Claude weekly is empty - #12637

Merged
diegosouzapw merged 6 commits into
cheaper-inference:release/v3.8.51from
HouMinXi:fix/reset-aware-model-family
Sep 4, 2026
Merged

diegosouzapw merged 6 commits into
cheaper-inference:release/v3.8.51from
HouMinXi:fix/reset-aware-model-family

Conversation

@HouMinXi

@HouMinXi HouMinXi commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

What this does

Antigravity connections share one usage payload for Gemini and Claude. Reset-aware scoring used to take the worst window on that payload, so a Claude weekly at 0% made Gemini look exhausted even when Gemini still had 97% left. Production combo onmi-gemini3.6 then had no executable targets.

convertUsageToQuotaInfo now filters windows to the requested family before it computes percentUsed / limitReached / window5h / window7d. The dashboard catalog still sees every family. Cache keys are family:gemini / family:claude on Antigravity and * everywhere else, so kimi-k2.5 and kimi-k2.7 on one connection still share one usage fetch.

#12566 already scoped preflight cooldown by family. This PR covers the generic quota fetcher that reset-aware routing actually calls.

Measured

Replay of 8 live Antigravity snapshots: every Gemini-capable account scored finite after the change. Focused suite 60/60. X500 image deploy-reset-aware-today-20260903 (bad77984955f): onmi-gemini3.6 → gemini-3.8-flash-high, HTTP 200, body OK.

Not in this PR

Forge LOCAL did not reach 3 consecutive clean rounds. Remaining CONFIRMED items were the same themes restated (hard-coded weekly keys, requestedModel spread, invalidate-by-prefix). One real cache-key bug is in aeec605ba. I stopped the review rather than chase restatements.

File-size

open-sse/services/combo.ts 4036 → 4041. The extra five lines are the getQuotaFetchScope cache key and the requestedModel spread at the existing fetchResetAwareQuotaWithCache call. The family helper lives in antigravityQuotaFamily.ts.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
buildAutoCandidates inlined the agy/antigravity family check that
quotaStrategies already had. One helper now owns both call sites.
Tests cover fetchGenericQuota family scoping and cache invalidation
across Gemini and Claude keys.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
Family scoping must not split generic usage fetches by model. kimi-k2.5
and kimi-k2.7 on one connection now share the same cache key.

Signed-off-by: Minxi Hou <houminxi@gmail.com>
buildAutoCandidates keys reset-aware fetches by getQuotaFetchScope (+5).

Signed-off-by: Minxi Hou <houminxi@gmail.com>
@HouMinXi
HouMinXi force-pushed the fix/reset-aware-model-family branch from cbea335 to a993e54 Compare September 4, 2026 01:25
@HouMinXi

HouMinXi commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto current release/v3.8.51 tip 2265ce761. Four unique commits preserved (range-diff all =). New head a993e5492. 26/26 focused tests green; check-file-size --base-ref OK. Overlap was file-size-baseline.json only.

diegosouzapw pushed a commit that referenced this pull request Sep 4, 2026
…mini (#12269) (#12624)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **#12637 não é duplicata do #12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule #18.

Obrigado, @HouMinXi.
diegosouzapw pushed a commit that referenced this pull request Sep 4, 2026
…_VERSION env overrides (#12632)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **#12637 não é duplicata do #12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule #18.

Obrigado, @HouMinXi.
diegosouzapw pushed a commit that referenced this pull request Sep 4, 2026
…eaker (#12626)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **#12637 não é duplicata do #12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule #18.

Obrigado, @HouMinXi.
@diegosouzapw
diegosouzapw merged commit 2a6eff0 into cheaper-inference:release/v3.8.51 Sep 4, 2026
2 of 7 checks passed
linhdmn added a commit to linhdmn/omniroute-INITIAL_PASSWORD-fix that referenced this pull request Sep 4, 2026
…let (base-red cheaper-inference#12581)

The base sync pulled in commit 2a6eff0 (cheaper-inference#12637) whose changelog fragment
lacks the required '- ' bullet prefix, failing check:changelog-integrity on
the branch. One-character format fix; base content is otherwise untouched.
@HouMinXi
HouMinXi deleted the fix/reset-aware-model-family branch September 16, 2026 14:08
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…mini (cheaper-inference#12269) (cheaper-inference#12624)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **cheaper-inference#12637 não é duplicata do cheaper-inference#12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule cheaper-inference#18.

Obrigado, @HouMinXi.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…_VERSION env overrides (cheaper-inference#12632)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **cheaper-inference#12637 não é duplicata do cheaper-inference#12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule cheaper-inference#18.

Obrigado, @HouMinXi.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…eaker (cheaper-inference#12626)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **cheaper-inference#12637 não é duplicata do cheaper-inference#12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule cheaper-inference#18.

Obrigado, @HouMinXi.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
cheaper-inference#12637)

Validado em lote numa worktree combinada com os 4 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo e **119/119** nos 9 arquivos de teste que trazem.

Três dos quatro conflitavam apenas no `config/quality/file-size-baseline.json`, todos de forma aditiva (chaves `_rebaseline_` distintas que devem coexistir); resolvidos com validação de JSON a cada passo.

Registro que o **cheaper-inference#12637 não é duplicata do cheaper-inference#12566**, apesar do título quase idêntico: o autor documenta que aquele escopou o cooldown de preflight por família e este cobre o `genericQuotaFetcher`, que é o que o roteamento reset-aware efetivamente chama. Traz também validação ao vivo em VPS (imagem X500, `onmi-gemini3.6` → HTTP 200), satisfazendo a Hard Rule cheaper-inference#18.

Obrigado, @HouMinXi.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants