From a5eb22e6a92f27eefbb8ffa2048c7d470a985432 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Mon, 13 Jul 2026 19:24:51 +0200 Subject: [PATCH] spec: missing store blob for a live bench throws instead of caching the miss (bnb-rpc awaiting incident) --- src/lib/spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/lib/spec.ts b/src/lib/spec.ts index 7f9ea805..efcd21b9 100644 --- a/src/lib/spec.ts +++ b/src/lib/spec.ts @@ -201,6 +201,16 @@ const loadBenchmarkUnfilteredCached = unstable_cache( // ISR re-render bursts. const stored = await benchFromStore(slug, ""); if (stored) return slimBenchmarkForCache(overlayEditorial(stored, spec)); + if (spec.status === "live") { + // A live spec with no readable blob is a transient store failure + // (proxy timeout, worker mid-write), not a real state. Returning + // undefined would cache the miss for the whole revalidate window: + // home row + /api/stat then serve "Awaiting samples" while the + // bench page reads fine (bnb-rpc incident, 2026-07-13). Throwing + // makes unstable_cache keep the last good entry; cold-cache + // callers already catch and fall back to the draft placeholder. + throw new Error(`store blob missing for live bench ${slug}`); + } return undefined; }, // Version key bumped when Benchmark shape changes so stale cache entries