Skip to content

Link benchmark pages by their clean URL, not a ?revision= copy - #47

Merged
mykolamelnykml merged 1 commit into
mainfrom
benchmarks-clean-links
Oct 5, 2026
Merged

mykolamelnykml merged 1 commit into
mainfrom
benchmarks-clean-links

Conversation

@mykolamelnykml

Copy link
Copy Markdown
Contributor

Why

A crawl showed most benchmark URLs as noindex, follow. Every internal link named its revision, even the current one, for example /benchmarks/pdf/tools/redactable?revision=v0.1.1. Any page with a revision in its URL was noindexed as a slice of the plain page. So crawlers mostly reached noindexed copies, and the canonical pages were linked only from the sitemap.

What changed

  • Links leave out ?revision= when it names the current revision (benchmarkHref in lib/benchmarks/params.ts). That covers the leaderboard, case cards, the scope switch, the revision picker, and the links back from tool, case and run pages. Links to a superseded revision still name it.
  • Robots: ?revision=<current> is no longer noindexed (isAlternateView). It is the same page, and the canonical already says so. Superseded revisions, ?scope=verified and run pages stay noindex, follow.
  • API: the case, tool-report and run responses now carry revision_is_current, since previously only the suite response said which revision is current. openapi.json and the Orval client are regenerated.

Test plan

  • make frontend-test: 908 passed. New tests cover benchmarkHref and isAlternateView, and each view's links for both current and superseded revisions.
  • Backend benchmark tests: 168 passed, including two new ones for revision_is_current. These were run locally because CI skips most of them; benchmarks.yml will also run them, since apps/benchmarks/ changed.
  • Frontend and backend lint pass.
  • Checked on the dev server: /benchmarks/pdf and /benchmarks/pdf?revision=v0.1.1 are indexable, ?scope=verified is noindexed, and the leaderboard links /benchmarks/pdf/tools/pdf-redaction.

Every benchmark link named its revision, even the current one, and a page
that named a revision was noindexed as a slice of the plain one. Crawlers
therefore reached mostly noindexed copies, while the canonical pages were
linked only from the sitemap.

- Links leave ?revision= out when it names the current revision
  (benchmarkHref); a superseded revision is still named, and stays
  noindexed.
- ?revision=<current> is no longer noindexed (isAlternateView): it is the
  same page, and the canonical already says so. The verified-only view and
  run pages still are.
- The case, tool-report and run responses carry revision_is_current, since
  only the suite response said which revision is current.
@mykolamelnykml
mykolamelnykml merged commit 41292eb into main Oct 5, 2026
2 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant