fix(web): add distribution to the state-of-claude-tooling and state-of-mcp-servers Dataset JSON-LD - #5550
Conversation
…f-mcp-servers Dataset JSON-LD /state-of-claude-tooling and /state-of-mcp-servers both have working JSON/CSV exports, but their hand-rolled "@type": "Dataset" JSON-LD blocks never got the distribution field, so structured-data consumers could not discover those exports while the three sibling report pages that call buildReportDataset() advertise theirs. Add the equivalent distribution array (two DataDownload objects, application/json + text/csv, contentUrl via the existing reportExportUrl() helper) to each page, matching the exact shape buildReportDataset() produces. The hand-rolled blocks are kept, not swapped for buildReportDataset(), to preserve their richer page-specific variableMeasured lists. No change to the pages visible content: JSON-LD renders no pixels. Closes JSONbored#5455
|
Warning ⏸️ LoopOver review result - manual review recommendedReview updated: 2026-07-25 07:59:03 UTC
Review summary Nits — 5 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual previewClick any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. Scroll previewA short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|




Summary
/state-of-claude-toolingand/state-of-mcp-serversboth have real, working JSON/CSV exports (REPORT_BUILDERS["claude-tooling"]/["mcp-servers"], both render<ReportDownloads>), but their hand-rolled"@type": "Dataset"JSON-LD blocks never got thedistributionfield — so structured-data consumers can't discover those exports, while the three sibling report pages that callbuildReportDataset()advertise theirs for free.distributionarray of twoDataDownloadobjects (application/json+text/csv) whosecontentUrlcomes from the existingreportExportUrl()helper with the page's export slug — exactly the shapebuildReportDataset()(apps/web/src/lib/data-reports-lib.ts) already produces for the siblings.buildReportDataset()) was deliberately not taken: both pages' hand-rolled blocks carry richer page-specificvariableMeasuredlists (e.g. "Local vs hosted split", "Safety and privacy notes coverage") that the model-derived helper output would flatten. Adding the equivalentdistributionfield — the issue's explicitly sanctioned second option — closes the gap without losing that metadata.Closes #5455
Quality Evidence
Rendered JSON-LD diff (per the issue's evidence requirement) — diff of the two pages' rendered
<script type="application/ld+json">Dataset blocks, served from the built worker (wrangler dev) before vs after:and identically for
/state-of-mcp-serverswithmcp-servers.json/mcp-servers.csv. BothcontentUrls point at the pages' existing, working/api/reports/*exports (same URLs<ReportDownloads>already links).No change to visible content (acceptance criterion): JSON-LD renders zero pixels; the matrices below are visually identical by design. No copy, layout, or component change.
Regression test proven RED: the new
tests/state-report-dataset-distribution.test.tspins both pages' Dataset blocks at the source level (same pattern astests/browse-density-radiogroup.test.ts): the block must contain adistributionarray with bothDataDownloadencodings and the page'sreportExportUrl("<slug>", ...)calls. On pre-fix code the 2 distribution assertions fail (2 locator tests pass); all 4 pass after the fix.Out of scope honored: the three
buildReportDataset()pages and/mcp-security-reportuntouched; no report content/copy changed.Screenshot evidence
Full viewport × theme matrices for both touched pages. The change is JSON-LD-only (renders no pixels), so before/after pairs are visually identical by design.
/state-of-claude-tooling:/state-of-mcp-servers:Validation
pnpm exec vitest run tests/data-reports-lib.test.ts tests/web-data-reports.test.ts— pass (issue's listed set)pnpm build— succeeds (issue's listed set)git diff --check— clean (issue's listed set)pnpm exec vitest run tests/state-report-dataset-distribution.test.ts— 4/4 pass (2 fail on pre-fix code)pnpm test— full suite, 772 files / 39826 tests passpnpm type-check— cleanpnpm validate:clean/pnpm validate:tasks— passpnpm exec prettier --checkon changed files — clean