Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/lib/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,29 @@ async function buildProviders(): Promise<ProviderProfile[]> {
});
}

// 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/<slug> 404s even though the registry has a full org page.
// - gelato: hosts Ink's rpc-gel endpoint (bench row uses ink-official)
// - thirdweb: hosts <chainid>.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),
);
Expand Down Expand Up @@ -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/<slug> 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
Expand Down
2 changes: 1 addition & 1 deletion src/lib/spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Loading