-- Stopped `forecast --live` reporting working accounts as unavailable from a stale runtime overlay. The overlay persists a per-account skip reason (`rate-limited`, `cooling-down:...`) on pool exhaustion and is cleared only by an explicit runtime reset, never on a subsequent successful request, so once the underlying window expired the forecast kept marking the account unavailable even though the proxy (which rebuilds skip reasons fresh per request) still routed to it. Cross-referenced time-bounded overlay reasons against the time-aware disk state before applying them: `rate-limited` is ignored when `getRateLimitResetTimeForFamily` finds no active reset (including model-scoped keys such as `codex:5h`), and `cooling-down:...` is ignored when `coolingDownUntil` is absent or elapsed. Each reason validates only against its own backing disk state, so the displayed reason is never substituted. Left non-time-bounded reasons (`circuit-open`, `token-exhausted`, `policy-blocked`) applied as-is by the forecast and cleared instead at the source on a successful request (see Runtime Rotation). (#507)
0 commit comments