• Stefy Lanza (nextime / spora )'s avatar
    Fix rotation failover: advance past unavailable providers instead of retrying one (v0.99.99) · 029c6986
    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: 's avatarClaude Opus 4.8 (1M context) <noreply@anthropic.com>
    029c6986