Repository navigation
Description
Found by the pool-quota steward, 226th run, 2026-11-07T19:21Z tick.
Read (quota-current.json, source opencode-quota, generatedAt 2026-11-07T19:21:03.647Z):
- heartbeat perProvider opendesign = error: 'Open Design usage API returned HTTP 503' (the hub leg now errors too; the live :3000 /api/quota/opendesign probe returns the same HTTP 503 error).
- The providers[] entry for opendesign carries the dated fallback windows standing: 5h 0% / 7d 0%, full credits (50000/50000; 150000/150000), measuredAt 2026-11-07T18:15:38.825Z, state ok (fallback entry).
Page (/api/quota.json, same tick, gatherer generatedAt identical 2026-11-07T19:21:03.647Z):
- opendesign pool renders state 'stale', freshness {measuredAt 2026-11-07T18:15:38.825Z, source opencode-quota, state stale}, windows: [] (empty), note: 'No dated read. Live windows arrive through the quota gatherer ...'.
Diff: per the pass-through rule (PR #5080), a pool whose read entry is in error should show that error as its freshness with the dated fallback windows standing. Here the freshness shows 'stale' rather than the read error, the dated fallback windows (0/0 @18:15Z) do not stand — they are dropped entirely — and the note 'No dated read' contradicts the read, which does carry a dated read.
All other pools matched the read 13/13 on presence, freshness and percentages this run; turso saas section matched. This is an aggregator rendering bug, not a steward input problem; no quota-view prose was edited to compensate.
Acceptance: when the opendesign gatherer leg errors, /api/quota.json (and /quota) render the pool with the error as its freshness and the last dated windows from the read standing (percentages identical to the read entry), matching the documented correct rendering.
Acceptance criteria
- When the opendesign gatherer leg errors, /api/quota.json and /quota render the pool's freshness as that read error (not 'stale').
- The last dated fallback windows from the read stand in the rendering, with percentages identical to the read entry (this report: 5h 0% / 7d 0% @2026-11-07T18:15:38.825Z).
- The 'No dated read' note is not shown when the read carries a dated read.
- Other pools' rendering is unchanged (13/13 matched the read in this report).
Activity
developing-today commentedon Nov 7, 2026
CODE-2190
dezren39 commentedon Nov 7, 2026
Intake review
meta/enrichedapplied.developing-today commentedon Nov 8, 2026
🤖 Agent note · picked up
developing-today commentedon Nov 8, 2026
🤖 Agent note · done
Triage verdict: CONFIRMED — shell pools lose the read's dated windows on the stale path
Verified fresh at origin/main
4fee73fb4b556649ee57193d152ef1df85ff95a5(2026-11-08):opendesignis a shell pool (pm-stack/aggregator/src/quota-extract.ts, SHELL_POOLS):windows: []and the note "No dated read. Live windows arrive through the quota gatherer … overlaid onto this pool by overlayQuotaCurrent." It has no dated-read extractor — the only dated windows for this pool anywhere are the ones the quota read'sproviders[]entry carries.pm-stack/aggregator/src/quota-current.ts,applyEntry()on the stale (and error) path setspool.freshness/pool.stateand returns without copying the entry's windows. That is correct for spec pools — their base windows ARE the dated read, andpm-stack/aggregator/test/quota-current.test.tspins exactly that ("dated read, not the aged gatherer value", 69%). For a shell pool the same path leaveswindows: []and lets the shell note stand against a read that does carry a dated read — the reported page, exactly.stalerather than the leg error because the failing tick's providers[] entry is the retained fallback:markRetained(quota-gather-map.ts) stampsretainedFromFailedTickand preserves the entry verbatim — no error field — andentryStateclassifies retained entriesstaleimmediately (perf(quota-plane): parallel provider fetching + per-provider timeout budget for the 15-min tick #1268). The actual leg error (HTTP 503) sits in the tick's heartbeat perProvider, which no overlay path consults for a pool's freshness. The gatherer summary in the same overlay does surface per-provider state, so the information reaches the aggregator; it just never reaches this pool's freshness.quota-current.test.tspins spec pools only; no opendesign case), and no PR references issue aggregator(quota): opendesign stale rendering drops the dated fallback windows — page shows no windows + 'No dated read' while the read carries 0/0 @18:15Z #6942.Routing: task 11449 (small_fix) with the issue's acceptance criteria, scoped to the aggregator: on the stale/error path a pool with no windows of its own takes the entry's dated windows (percentages identical), the shell note is suppressed when the read carries a dated read, and the pool's freshness surfaces the leg error — while the pinned spec-pool stale tests keep passing and the #1268 classification for spec pools is untouched. One design point is named in the packet for the fix worker: where the error text comes from (the retained entry carries none; the heartbeat perProvider error is the available source).
dezren39 commentedon Nov 8, 2026
🤖 Agent note · picked up
fix(aggregator): exclude stale/error pools from model-choice guidance (…
dezren39 commentedon Nov 8, 2026
🤖 Agent note · parked
queue/11449-6942-shell-pool-windows, head 691b6e6): shell pools keep the read's dated windows on the stale/error path, the 'No dated read' note is suppressed when the read carries a dated read, and a retained entry whose leg errored surfaces the heartbeat perProvider error as freshness (windowless pools only; spec pools keep the perf(quota-plane): parallel provider fetching + per-provider timeout budget for the 15-min tick #1268 stale classification). Codex round 1 raised one P2 (stale adopted windows feeding model-choice guidance) — fixed in 691b6e6 (computeChoicesnow skips stale/error-freshness pools) and dispositioned on the thread; Codex re-review at 691b6e6 completed with NO findings. Tests: quota-current 53/53 (5 new aggregator(quota): opendesign stale rendering drops the dated fallback windows — page shows no windows + 'No dated read' while the read carries 0/0 @18:15Z #6942 tests), quota + quota-gather-map + contract-collector green; full-suite failures all reproduced on clean main (pre-existing boot hook timeouts / digest-kind / source-gate / epic-eta).