diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 3ce54b77..6afd3930 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -453,6 +453,29 @@ async function buildProviders(): Promise { }); } + // Seed stub profiles for meta-providers registered in PROVIDER_REGISTRY + // whose slug is intentionally NOT emitted as a bench row (they wrap + // benches at the protocol / infra level instead). Without this, + // /products/ 404s even though the registry has a full org page. + // - gelato: hosts Ink's rpc-gel endpoint (bench row uses ink-official) + // - thirdweb: hosts .rpc.thirdweb.com paths (currently not + // wired to any bench row after the 2026-07-24 removal that unblocked + // the /products/thirdweb 500 rollback loop) + // - wormhole: is the entire wormhole-vaa-latency bench itself; the + // rows are source_chain slugs (solana / ethereum / …), not "wormhole" + for (const v of REGISTRY_STUB_SEED) { + const key = v.slug.toLowerCase(); + if (byKey.has(key)) continue; + byKey.set(key, { + slug: v.slug, + name: v.name, + type: "protocol", + appearances: [], + wins: 0, + categories: [], + }); + } + const profiles = Array.from(byKey.values()).filter( (p) => !isBlacklistedSlug(p.slug), ); @@ -532,6 +555,16 @@ const PERP_VENUE_SEED = [ { slug: "grvt", name: "GRVT" }, ]; +// Meta-providers that live in PROVIDER_REGISTRY but never appear as a +// bench row slug directly. Adding them here creates a stub profile so +// /products/ renders the Organization page from the registry +// instead of 404-ing. +const REGISTRY_STUB_SEED = [ + { slug: "gelato", name: "Gelato" }, + { slug: "thirdweb", name: "ThirdWeb" }, + { slug: "wormhole", name: "Wormhole" }, +]; + /** Cross-request cache. The expensive part isn't `getBenchmarks()` * itself (already wrapped in unstable_cache) but the per-provider * ranking + wins + per-chain aggregation post-processing on top. A 60 diff --git a/src/lib/spec.ts b/src/lib/spec.ts index 688c1884..b2a64bfe 100644 --- a/src/lib/spec.ts +++ b/src/lib/spec.ts @@ -514,7 +514,7 @@ const loadAllBenchmarksCached = unstable_cache( // -> ws-head-latency-ethereum + ungate on prod). // v34: bumped with bench-unfiltered-v31 (084 indexer-latency dropped). // Wormhole VAA latency ship (bench 101). - // v47: 027 solana-tx-landing-latency removed from main (see bench-unfiltered-v45). + // v47: 027 solana-tx-landing-latency removed from main (see bench-unfiltered-v46). // v49: network-coverage split into asset-registry-coverage + dex-network-coverage // (bench SET changed, see bench-unfiltered-v46). // v50: staging pipeline shuffle (see bench-unfiltered-v47).