fix(server): hub Limits keep Claude accounts' bars when usage reads hit 429

Every Limits visit, refresh, and settings change read every hub account's
usage through the hub, and Claude's /api/oauth/usage answers 429 after a
short burst. readAccount mapped any failure to "The hub could not read this
account's usage.", so the bars went blank.

Hub usage reads now go through makeThrottledReader, a keyed reader with
one pacing rule: each account is read at most once a minute, each failed
read in a row doubles the wait up to eight minutes, and a failed read keeps
the last good reading for up to fifteen minutes. Redeeming a reset forgets
the account so the re-read after it asks the provider again. With nothing
to show after a 429, the account says the provider is rate limiting instead
of a generic failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72eef0476bYannic Charlon committed on 10/15/2026, 7:23:46 AMparent339179f
5 files changedLine totals unavailable