-
Stefy Lanza (nextime / spora ) authored
The dispatch loop skipped a provider via is_rate_limited() (which includes the manual dashboard flag) but did NOT add it to tried_models, so the next retry re-selected the SAME highest-weight provider every time. A manually-flagged / rate-limited top-weight member (e.g. claude_think in rotation lisa) thus consumed all max_retries and returned 429, never failing over to a working member (kilo-stefy). - Use _provider_in_availability_cooldown() instead of is_rate_limited() so the manual flag (rotation-membership only) does not block dispatch, consistent with the scan. - Mark the skipped model as tried so failover actually advances to the next provider. - Guard the dispatch handler build in try/except too (same bad-cred 500 class). rotation/lisa now returns 200 via kilo-stefy instead of 429/500. Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
029c6986