From 3afa5a0c01ee47730edb3e087ecaa77161268f90 Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Sat, 25 Jul 2026 20:14:13 +0200 Subject: [PATCH 1/2] jsonld: inline isPartOf Dataset fields to unblock GSC validation Google Search Console validates each Dataset in isolation and does not stitch cross-document @id refs (same failure mode already fixed for creator on this file). The isPartOf @id-only ref to the site-wide Dataset made GSC flag 4 sampled bench pages as missing name + description + creator + distribution.encodingFormat + contentUrl. Inline the required fields on the reference so it stands on its own. Preserves the semantic isPartOf link to /#dataset without duplicating the whole GLOBAL_DATASET_JSONLD payload. --- src/lib/dataset-jsonld.ts | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/lib/dataset-jsonld.ts b/src/lib/dataset-jsonld.ts index 4fc9f445..729026b3 100644 --- a/src/lib/dataset-jsonld.ts +++ b/src/lib/dataset-jsonld.ts @@ -315,7 +315,35 @@ export function buildBenchDatasetJsonLd( datePublished: input.datePublished, ...(input.dateModified ? { dateModified: input.dateModified } : {}), variableMeasured: input.variableMeasured, - isPartOf: { "@id": `${SITE.url}/#dataset` }, + // Reference to the site-wide Dataset (defined on the home page). Google + // Search Console validates each Dataset in isolation and does NOT stitch + // cross-document @id refs, so an @id-only shape here made GSC flag the + // referenced node as "missing name / description / creator / distribution" + // (same failure mode we already fixed for `creator` above). Inline the + // fields the validator requires so the reference stands on its own. + isPartOf: { + "@type": "Dataset", + "@id": `${SITE.url}/#dataset`, + name: "OpenChainBench Benchmarks", + description: + "Daily open benchmarks of crypto infrastructure: RPC latency, bridge fees, L2 finality, price feeds, oracle deviation. Continuously measured harnesses, JSON via /api/citable + parquet on Hugging Face.", + url: SITE.url, + creator: CREATOR_PUBLISHER, + license: DATASET_LICENSE, + isAccessibleForFree: true, + distribution: [ + { + "@type": "DataDownload", + encodingFormat: "application/json", + contentUrl: CITABLE_JSON_URL, + }, + { + "@type": "DataDownload", + encodingFormat: "application/parquet", + contentUrl: HF_HEADLINES_LATEST, + }, + ], + }, distribution: [ { "@type": "DataDownload", From 1f07854071e3ea511d3bf0aed8b64600c1c8f58f Mon Sep 17 00:00:00 2001 From: Florent Tapponnier Date: Sat, 25 Jul 2026 20:28:22 +0200 Subject: [PATCH 2/2] chain-kpis: add Hyperliquid (HyperEVM 999, HYPE, DefiLlama 'Hyperliquid L1', Mobula 'HyperEVM') --- harnesses/chain-kpis/cmd/script/registry.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/harnesses/chain-kpis/cmd/script/registry.go b/harnesses/chain-kpis/cmd/script/registry.go index cb2aca55..d3a5ffa4 100644 --- a/harnesses/chain-kpis/cmd/script/registry.go +++ b/harnesses/chain-kpis/cmd/script/registry.go @@ -91,4 +91,11 @@ var Registry = []Chain{ // TVL guard in defillama.go drops the empty TVL card so only real // cards render. {Slug: "polkadot", DefiLlama: "Polkadot", Mobula: "", NativeSymbol: "DOT"}, + // HyperEVM (chain id 999). Hyperliquid Labs's EVM execution layer + // bolted onto the HyperCore perps engine. DefiLlama tracks it as + // "Hyperliquid L1" (verified live on /v2/chains, TVL >$1B), Mobula + // indexes it under "HyperEVM". Native HYPE serves as gas + trading + // asset (Mobula symbol HYPE resolves to the correct market data, + // ~$58 spot / ~$13.9B mcap verified live 2026-07-25). + {Slug: "hyperliquid", DefiLlama: "Hyperliquid L1", Mobula: "HyperEVM", NativeSymbol: "HYPE"}, }