diff --git a/src/app/products/[slug]/page.tsx b/src/app/products/[slug]/page.tsx index 8b579134..350d8e27 100644 --- a/src/app/products/[slug]/page.tsx +++ b/src/app/products/[slug]/page.tsx @@ -182,7 +182,19 @@ export default async function ProviderPage({ // is warming up. Throwing here makes the ISR revalidation fail, so // Vercel keeps serving the last good render instead of caching a page // full of "data warming up" for the next 5 minutes. - if (p.appearances.length >= 3 && p.appearances.every((a) => a.rank === 0)) { + // + // Only fire when at least one appearance has a non-zero p50: that + // rules out newly-added providers whose store snapshot lags the harness + // by one aggregate cycle (thirdweb ship, 2026-07-24: 4 fresh appearances + // all rank=0 while the CDN blob still served the pre-ship snapshot). + const anyMeasuredAppearance = p.appearances.some( + (a) => (a.result.ms?.p50 ?? 0) > 0, + ); + if ( + p.appearances.length >= 3 && + p.appearances.every((a) => a.rank === 0) && + anyMeasuredAppearance + ) { throw new Error(`degraded store read for /products/${slug}: ${p.appearances.length} appearances, all unranked`); }