From 17f2d35f9a1ffc40d8f34dd9d60ad4d12e09bc76 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Fri, 24 Jul 2026 15:26:42 +0200 Subject: [PATCH] hotfix(products): relax tripwire for newly-added providers (unblock prod deploys) Tripwire was firing on /products/thirdweb because thirdweb has 4 fresh appearances (ink-rpc, world-chain-rpc, kaia-rpc, opbnb-rpc) all with rank=0. Root cause: the CDN aggregate blob was published AFTER the Vercel build read the store snapshot, so the site's cached ranks lagged the blob by one publish cycle. Fix: only fire the tripwire when at least ONE appearance has a non-zero p50. If every appearance has p50=0, the provider is genuinely warming up (never had data), not degraded. Preserves the tripwire's purpose (catch mid-render store corruption) while letting new providers ship without a rollback loop. --- src/app/products/[slug]/page.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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`); }