Repository navigation
fix(providers): recover Kimi after quota reset - #8632
Merged
diegosouzapw merged 2 commits intoJul 27, 2026
Merged
diegosouzapw merged 2 commits into
diegosouzapw merged 2 commits into
Conversation
glazec
marked this pull request as ready for review
July 26, 2026 17:09
diegosouzapw
merged commit Jul 27, 2026
01c0f8a
into
cheaper-inference:release/v3.8.49
3 checks passed
diegosouzapw
added a commit
that referenced
this pull request
Jul 27, 2026
…stryker drift
file-size: nine frozen entries could not absorb the combined result of the
31-PR train. Two distinct causes, kept apart in the baseline note on purpose:
(1) GENUINE irreducible growth at existing chokepoints —
providerLimits/auth (#8632), rateLimitManager (#8616),
models-catalog-route.test (#8610).
(2) COLLISION with #8585, which banked shrinks measured on the pre-train
release tip while 30 sibling PRs in the SAME train grew those files
again — chat/accountFallback (#8628), chatCore (#8613),
videoGeneration (#8581), imageGeneration.
Ceilings re-pinned to the post-merge tip. #8612 (also in this train) automates
shrink-banking so this self-inflicted drift stops recurring.
stryker: three covering unit tests were missing from tap.testFiles —
isLocalStreamLifecycleError-abort-shape (circuitBreaker.ts, a shared base-red
that was reddening Fast Quality Gates on every open PR),
noauth-autocombo-lockout-7623 (accountFallback.ts) and
kimi-quota-reset-recovery (auth.ts), the latter two landed with this train.
Merged
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
* fix(providers): recover Kimi after quota reset * docs: add Kimi quota recovery changelog
HouMinXi
pushed a commit
to HouMinXi/OmniRoute
that referenced
this pull request
Aug 2, 2026
…stryker drift
file-size: nine frozen entries could not absorb the combined result of the
31-PR train. Two distinct causes, kept apart in the baseline note on purpose:
(1) GENUINE irreducible growth at existing chokepoints —
providerLimits/auth (cheaper-inference#8632), rateLimitManager (cheaper-inference#8616),
models-catalog-route.test (cheaper-inference#8610).
(2) COLLISION with cheaper-inference#8585, which banked shrinks measured on the pre-train
release tip while 30 sibling PRs in the SAME train grew those files
again — chat/accountFallback (cheaper-inference#8628), chatCore (cheaper-inference#8613),
videoGeneration (cheaper-inference#8581), imageGeneration.
Ceilings re-pinned to the post-merge tip. cheaper-inference#8612 (also in this train) automates
shrink-banking so this self-inflicted drift stops recurring.
stryker: three covering unit tests were missing from tap.testFiles —
isLocalStreamLifecycleError-abort-shape (circuitBreaker.ts, a shared base-red
that was reddening Fast Quality Gates on every open PR),
noauth-autocombo-lockout-7623 (accountFallback.ts) and
kimi-quota-reset-recovery (auth.ts), the latter two landed with this train.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
* fix(providers): recover Kimi after quota reset * docs: add Kimi quota recovery changelog
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…stryker drift
file-size: nine frozen entries could not absorb the combined result of the
31-PR train. Two distinct causes, kept apart in the baseline note on purpose:
(1) GENUINE irreducible growth at existing chokepoints —
providerLimits/auth (cheaper-inference#8632), rateLimitManager (cheaper-inference#8616),
models-catalog-route.test (cheaper-inference#8610).
(2) COLLISION with cheaper-inference#8585, which banked shrinks measured on the pre-train
release tip while 30 sibling PRs in the SAME train grew those files
again — chat/accountFallback (cheaper-inference#8628), chatCore (cheaper-inference#8613),
videoGeneration (cheaper-inference#8581), imageGeneration.
Ceilings re-pinned to the post-merge tip. cheaper-inference#8612 (also in this train) automates
shrink-banking so this self-inflicted drift stops recurring.
stryker: three covering unit tests were missing from tap.testFiles —
isLocalStreamLifecycleError-abort-shape (circuitBreaker.ts, a shared base-red
that was reddening Fast Quality Gates on every open PR),
noauth-autocombo-lockout-7623 (accountFallback.ts) and
kimi-quota-reset-recovery (auth.ts), the latter two landed with this train.
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
Related Issues
Validation
Run only the focused loop for what you changed — the full unit suite, Vitest, the
60% coverage gate, and the production build all run in CI on this PR (#8329):
node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test tests/unit/error-classifier.test.ts tests/unit/kimi-quota-reset-recovery.test.ts tests/unit/provider-limits-recovery.test.ts(28 passed)npm run lintAdditional local checks:
npm run typecheck:corenpm run buildnpm run test:coverage: coverage thresholds passed with 84.09% statements and lines, 78.4% branches, and 87.96% functions. The command remained nonzero because five unrelated macOS and MCP tests fail on this checkout.Tests Added Or Updated
tests/unit/error-classifier.test.tstests/unit/kimi-quota-reset-recovery.test.tstests/unit/provider-limits-recovery.test.tsCoverage Notes
The tests cover the Kimi 403 classification, reset-aware cooldown persistence, and protection against a partially refreshed quota snapshot clearing that cooldown early.
Reviewer Notes
The failure was caused by the Kimi billing-cycle message falling through as
forbidden, which used the generic cooldown path. A partial weekly quota snapshot could then clear the unavailable state before the exhausted short window reset. This patch reuses the existing quota cache and recovery scheduler. It adds no migration, feature flag, dashboard change, or provider-specific scheduler.Sanitized live verification on the reporter's Railway deployment produced a successful Kimi Coding request after quota reset. The persistent 14m dashboard warning is intentionally outside this PR so the provider recovery fix remains atomic.
The five unrelated local full-suite failures are
ccr-mcp-integration,mcp-extra-forward-6178,restore-policieson macOS Bash 3, and twoServiceSupervisorPID inspection cases. None of those files or subsystems are changed here.