diff --git a/src/lib/removed-benches.ts b/src/lib/removed-benches.ts index af035797..7c16fb9d 100644 --- a/src/lib/removed-benches.ts +++ b/src/lib/removed-benches.ts @@ -131,6 +131,11 @@ export const REMOVED_BENCH_SLUGS = new Set([ // changed without notice. Specs deleted. "pm-fee-comparison", "pm-geographic-access", + // polymarket-resolution-delay was drafted in a worktree but never merged + // to main. Answer pages originally referenced it; those were updated to + // pm-resolution-delay (2026-08-04). A 308 redirect covers inbound links. + // Adding here prevents stale Redis data from re-appearing in the sitemap. + "polymarket-resolution-delay", ]); /** @@ -147,5 +152,10 @@ export const REMOVED_PRODUCT_SLUGS = new Set([ // dropped 2026-07-24. Product page was live briefly, so Google // likely indexed the URL. 410 speeds de-indexing. "bitquery", + // goldrush (Covalent) was removed from indexing-freshness bench in + // 2026-08-04 data-api report (PR #1758). Stale Redis data can keep + // the provider in getProviders() output while the page 404s; 410 guard + // + sitemap exclusion stop the smoke-gate rollback until Redis flushes. + "goldrush", ]); diff --git a/src/lib/sitemap-builder.ts b/src/lib/sitemap-builder.ts index a8613ed0..b85fb33c 100644 --- a/src/lib/sitemap-builder.ts +++ b/src/lib/sitemap-builder.ts @@ -6,6 +6,7 @@ import { getAllReports, getAllReportCategories } from "@/lib/reports/loader"; import { COMPARE_PAIRS } from "@/data/compare-pairs"; import { adHocPairs } from "@/lib/compare/adhoc-pairs"; import { REMOVED_BENCH_SLUGS } from "@/middleware"; +import { REMOVED_PRODUCT_SLUGS } from "@/lib/removed-benches"; import { isHlBuilderSlug, isHlBuilderWithHistory, @@ -313,6 +314,10 @@ async function buildFullSitemap(): Promise { if (await isHlBuilderSlug(slug)) return null; // Perp venue slugs (except polymarket) 308 to /perp/. if (PERP_PRODUCT_PILL_SLUGS.has(slug) && slug !== "polymarket") return null; + // Providers removed from all benches: stale Redis data can keep them + // in getProviders() while the page 410s. Explicit exclusion here + // prevents the smoke-gate rollback until the cache flushes. + if (REMOVED_PRODUCT_SLUGS.has(slug)) return null; const p = await getProvider(slug); return p ? slug : null; }),