0c3a507535
Consolidates the 429-quota-classifier cluster on top of the merged #93419 Anthropic core. Three independent contributor findings salvaged into one coherent change to the single 429 branch: - Broaden the 429 usage-limit check from the narrow 'usage limit' string to the full _USAGE_LIMIT_PATTERNS ('quota', 'limit exceeded', 'key limit exceeded') and add _BILLING_PATTERNS detection on 429 ('insufficient credits' wrapped in a 429 instead of 402), guarded by a _RATE_LIMIT_PATTERNS exclusion so an explicit 'Rate limit exceeded' never promotes to non-retryable billing. (credit @Pluviobyte, #39441 — earliest submitter) - Add 'resets in' to the transient signals: Codex's 'Weekly usage limit reached. Resets in 6hr 29min.' wrongly read as terminal billing because main only had 'reset in' (no substring match). (credit @LeonSGP43, #63021) - Add 'reset after' / 'available in' / 'per minute' / 'per second' transient signals. (credit @jtstothard, #74785) Supersedes #65633 (defective branch placement, no tests). The aux-client path already covers these shapes (_is_payment_error catches weekly/quota walls; _is_rate_limit_error treats 'resets in' as transient), so no change there. Tests: 6 new cases (generic quota wall, insufficient-credits 429, rate-limit guard, Codex resets-in, extra transient phrases). Guard sabotage-verified. Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com> Co-authored-by: LeonSGP43 <LeonSGP43@users.noreply.github.com> Co-authored-by: jtstothard <jtstothard@users.noreply.github.com>