Skip to content

official URLs on product pages: 157 added, 30 repaired, 4 phantom pages removed - #2913

Merged
Flotapponnier merged 1 commit into
mainfrom
release/product-official-urls
Oct 9, 2026
Merged

Flotapponnier merged 1 commit into
mainfrom
release/product-official-urls

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

/products/chainstack shows an official link. Most product pages did not.

A fetch of all 563 published product pages found 192 rendering no outbound
link at all
. The link block needs a provider registry entry, and these
providers had none; the registry type then required a description, so nobody
could publish a verified homepage without also writing prose for it.

What this does

157 url-only entries added, each one fetched and checked
20 existing URLs repaired: the domain had moved or 404s
10 existing URLs dropped: the domain no longer exists
4 phantom product pages removed (/products/alchemy-cold and siblings)
3 researched URLs deliberately not published

Verification

Nothing went in because research reported it. Every URL had to answer, land on
the host we asked for rather than somewhere it bounced to, carry no
domain-broker boilerplate, and name the product on the page. Where several
slugs share a host that sharing had to be deliberate, which is what
market-category rows (kalshi-crypto, polymarket-sports) and numbered
validators (hyper-foundation-1..5) are.

Three checks caught my own errors rather than bad URLs, which is the reason
they exist:

  • apex.exchange read as a refused connection. This machine's resolver
    blackholes it to 127.0.0.1; it resolves and answers through 8.8.8.8. The
    site is alive and its link stays. Every "dead" domain was re-checked against
    an external resolver for exactly this reason.
  • polymarket.com failed with an expired certificate. The certificate is
    CN=*.anj.fr — the French gambling regulator's block page, served by DNS
    interception. The URL stays.
  • 7 of the 192 were never missing: a registry key written in quotes was
    invisible to the script that read the file, so aster, standx, unigox,
    conduit, mvx-api, mvx-gateway and xlayer-official were counted as
    missing while serving a link all along. They were skipped, not overwritten.

Rot found in what was already published

Nothing in the build ever fetches these, so a link rots in silence. ParaSwap
is Velora, Avantis is Veranta, Algonode is Nodely, Swirlds Labs is Hashgraph,
and avax.network, debridge.finance, everstake.one, gelato.network,
moralis.io, nspcc.ru, ramp.network, smartpy.io, kamino.finance and
ostium.app have all moved. www.okx.com/oktc 404s. Ten domains are simply
gone, seven of them without an A record anywhere.

Not published, on purpose

taiyorobotics.com for graphite-protocol, whose page never names Graphite;
hypurrscan.io for hypurrscanning, where the operator is inferred from the
validator's name alone; vibeliquid.xyz, which answers 503. Joint-venture
validators written a-x-b-x-c mostly have no site of their own and keep none.

neutron.org is flagged rather than changed: every host under it, apex and
www and app and docs, redirects to a single tweet. Guessing a
replacement would be worse than reporting it (neutron.fi is a different
project).

utm_source

No change needed. withUtm already tags every rendered outbound href with
utm_source=openchainbench, and deliberately leaves the stored URL clean so
the JSON, the citations and the structured data stay canonical. It skips RPC
endpoint URLs, which a reader pastes into a config.

The phantom pages

Yesterday's cold-start cohort gave each -cold slug its own product page:
four indexable duplicates of the real vendor, with no description and no link.
They are a measurement arm, not a product. PRODUCT_ALIASES folds them onto
the vendor, which also restores parity with the logo-manifest aliases these
slugs already carry.

tsc --noEmit clean. pnpm validate clean. 492 tests pass.

…es removed (#2912)

* fold the cold-start slugs into their vendor, and let a URL ship without prose

Two things stood between 192 product pages and an official outbound link.

The cold-start cohort added yesterday gave each of its four `-cold` slugs its
own product page: /products/alchemy-cold and three siblings, indexable, in the
sitemap, duplicates of the real vendor with no description and no link, because
the registry has no entry for a measurement arm. They are the same four vendors
on a connection that is never reused, so they belong on the vendor's page.
PRODUCT_ALIASES folds them, which collapses their bench appearances onto
/products/alchemy and removes the four pages from generateStaticParams and the
sitemap. It also restores parity with the logo-manifest ALIASES entries these
slugs already carry, which the comment on PRODUCT_ALIASES says it mirrors.

The other 188 were blocked by the registry type: `description` was required, so
nobody could publish a provider's verified homepage without also writing a
sober one-liner for it, and the result was pages with no outbound link at all.
A verified URL is worth publishing on its own and the description can follow,
so `description` is now optional.

Every consumer already guarded it except two, both fixed here: the product
page's paragraph, and the parent page's "related products" list, which took the
child's display name from the first sentence of its description and now falls
back to the slug. The link list also stops floating right when there is no
paragraph to sit beside it, since a lone link pushed to the far edge with
nothing on its left reads as a stray element.

No link changes shape: withUtm already tags every rendered outbound href with
utm_source=openchainbench, and the registry keeps clean URLs so the JSON, the
citations and the structured data stay canonical.

tsc --noEmit clean. 22 tests pass across the registry, providers and utm suites.

* official URLs for 157 product pages, and repair 30 rotten ones

/products/chainstack has an official link. Most product pages did not: the
link block needs a registry entry, and a fetch of all 563 published pages
found 192 rendering no outbound link at all. Seven of those were my own
measurement error (a registry key written in quotes was invisible to the
script that read the file, so aster, standx, unigox, conduit, mvx-api,
mvx-gateway and xlayer-official were counted as missing while serving a link
all along). The rest were real.

ADDED: 157 url-only entries. Each URL was researched, then fetched and held to
five conditions before it went in: it answers, its final host is the one we
asked for and not somewhere it bounced to, the page carries no domain-broker
boilerplate, the page names the product, and where several slugs share a host
that sharing is deliberate. Several rows of one brand do share a host on
purpose, which is what market-category rows (kalshi-crypto, polymarket-sports)
and numbered validators (hyper-foundation-1..5) are.

UPDATED: 20 existing URLs that no longer point where they should. These
had rotted silently, because nothing in the build ever fetches them: ParaSwap
is Velora, Avantis is Veranta, Algonode is Nodely, Swirlds Labs is Hashgraph,
and avax.network, debridge.finance, everstake.one, gelato.network, moralis.io,
nspcc.ru, ramp.network, smartpy.io, kamino.finance and ostium.app have all
moved. OpenOcean's apex no longer serves; its app subdomain does. Nozomi's
page moved from /products/ to /services/. And oktc-official pointed at
www.okx.com/oktc, which 404s today along with /okc and /en/oktc, so OKT Chain
falls back to the parent brand.

polymarket.com is worth a note because it nearly got "fixed": it failed with
an expired certificate here, and the certificate turns out to be CN=*.anj.fr,
the French gambling regulator's block page served by DNS interception. The
site is fine; the URL stays.

DROPPED: 10 URLs whose domain is gone. Seven have no A record at all
(ckbapp.dev, echosync.io, iconblockchain.xyz, trysuper.co, trojan.bot,
tzbeta.net, wavesnodes.com); three resolve and serve nothing (flowbot.pro,
superstack.xyz, kinto.xyz). Each was re-checked against 8.8.8.8 before being
called dead, because this machine's resolver blackholes some domains and that
looks exactly like an expired one: apex.exchange read as a refused connection
locally and is in fact alive, so its link stays.

NOT PUBLISHED, on purpose: taiyorobotics.com for graphite-protocol, which
never names Graphite; hypurrscan.io for hypurrscanning, where the operator is
inferred from the validator's name alone; vibeliquid.xyz, which answers 503.
Joint-venture validators written a-x-b-x-c mostly have no site of their own
and keep none. neutron.org is left as it is and flagged instead: every host
under it, apex and www and app and docs, redirects to one tweet, and guessing
a replacement would be worse than reporting it.

Links need no change to carry attribution: withUtm already tags every rendered
outbound href with utm_source=openchainbench, and leaves the stored URL clean
so the JSON, the citations and the structured data stay canonical.

The product page now renders the link only when there is one and the section
only when it holds something, so a dropped URL leaves no empty row.

tsc --noEmit clean. pnpm validate clean. 492 tests pass.
@Flotapponnier
Flotapponnier merged commit 4d88253 into main Oct 9, 2026
2 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