-
Stefy Lanza (nextime / spora ) authored
A model that intermittently lacks an image endpoint on kilo returns 404 "No endpoints found that support image input". The kilo handler counted every exception (that 404, a 400 for an undecodable image, a 429) toward the three-strike cooldown, so a few request-scoped errors disabled kilo-spora for ALL traffic for 5 minutes — during which a high-rate client piled up thousands of 503 "in failure cooldown" rejections. Add a shared classifier in providers/base.py: is_request_scoped_error / is_request_scoped_status / extract_http_status treat 400/404/413/415/422/429 (and the wrapped streaming-error message form) as request-scoped — about the specific request, not provider health. Genuine faults (5xx, timeouts, network) still count. Wire it into both places that record failures: - KiloProviderHandler.handle_request and _handle_streaming_request skip record_failure() for request-scoped errors (429 still routes through handle_429_error for adaptive backoff). - handlers._should_record_failure excludes them for every provider. The error still propagates to the caller; it just no longer disables the whole provider. Only a genuinely unhealthy provider now enters the cooldown. Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fae38ea0