Skip to content

Commit f3d4e7c

Browse files
committed
docs(release): split v2.2.2 notes into tight one-idea bullets (v2.2.1 style)
1 parent 670d5de commit f3d4e7c

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

docs/releases/v2.2.2.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
### Bugfixes
44

5-
- Cleared an account's persisted runtime skip reason on its next successful request. The overlay (`accountSkipReasons` in `runtime-observability.json`) was written wholesale on pool exhaustion and cleared only by an explicit runtime reset, never on a success, so a reason with no time-based expiry — notably `token-exhausted` — lingered on disk and kept the forecast reporting a working account as unavailable. The proxy success path now calls `recordRuntimeAccountRecovery(index)`, which deletes the account's entry from `accountSkipReasons` and `lastPoolExhaustionSkipReasons`; it is a no-op (no write) when nothing is recorded and ignores non-integer or negative indices. (#507)
5+
- Cleared an account's persisted runtime skip reason on its next successful request, so a reason with no time-based expiry (notably `token-exhausted`) no longer lingers in `accountSkipReasons` and keeps the forecast reporting a working account as unavailable.
6+
- Added `recordRuntimeAccountRecovery(index)` on the proxy success path: it removes the account's entry from `accountSkipReasons` and `lastPoolExhaustionSkipReasons`, is a no-op when nothing is recorded, and ignores non-integer or negative indices.
67

78
## Quota & Forecast
89

910
### Bugfixes
1011

11-
- 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)
12-
- Aligned `doctor`'s `forecast-runtime-alignment` check, which shares the forecast evaluation, so the same stale state no longer raises a spurious warning. (#507)
12+
- Stopped `forecast --live` marking working accounts as unavailable from a stale runtime overlay that persisted a skip reason after its window expired but was never cleared on a subsequent successful request.
13+
- Ignored stale time-bounded overlay reasons by cross-referencing disk state: `rate-limited` when `getRateLimitResetTimeForFamily` finds no active reset (including model-scoped keys like `codex:5h`), and `cooling-down:...` when `coolingDownUntil` is absent or elapsed.
14+
- Left non-time-bounded reasons (`circuit-open`, `token-exhausted`, `policy-blocked`) applied as-is by the forecast; these are cleared at the source on a successful request instead (see Runtime Rotation).
15+
- Aligned `doctor`'s `forecast-runtime-alignment` check, which shares the forecast evaluation, so the same stale state no longer raises a spurious warning.

0 commit comments

Comments
 (0)