chore(dev): sync main → dev (HL frontends + cache bumps)#776
Merged
Conversation
When a chain rename rolls through Prom while the 24h window still holds samples on the legacy label (e.g. ton → gram during the harness redeploy lag), the loader rewrote each ton row to gram but did not dedupe — so /benchmarks/l1-finality rendered Gram twice (one row per source series). Two-pass: rewrite then dedupe by canonical slug, preferring the row whose original slug already matched the canonical (current harness emit) over the alias-rewritten historical row.
…hain chore: cherry-pick spec dedupe legacy chain slugs
* fix(hl-frontends): don't linkify raw hex builder slugs (was 404) The HL frontends bench leaderboard renders one row per builder. When a builder address isn't yet in /opt/hl-bench/builders.json, the row slug stays as a truncated 8-char hex prefix (e.g. 0x557edb25). The ledger-table component unconditionally wraps every row name in a <Link href='/products/<slug>'>, but /products/<hex> is blacklisted in providers.ts (HEX_ADDRESS_SLUG regex), so the link 404s. Now hex slugs render as plain text — same path as region slugs — until the builder gets identified and added to builders.json, at which point the slug becomes a real name and the link reappears. * fix(hl-frontends): apply hex-skip in ledger-table renderer * fix(ledger-table): skip /products link for hex builder slugs * fix(ledger-table): inline hex slug check (client/server boundary) providers.ts is server-only (unstable_cache + bench loaders); importing isHexAddressSlug from it into this 'use client' component breaks Turbopack build. Inline the regex check instead, same pattern as the existing isRegion/isAll inline checks. --------- Co-authored-by: Florent Tapponnier <contact@mobula.io>
…772) Following the on-chain referral code cross-reference that identified 6 of the 15 anonymous 0x… builder addresses on the HL frontends leaderboard, wire each into the editorial surface: - Logos: invo.png, bitget-wallet.png, marsgo.jpg, defi-saver.svg, unitywallet.png (from official brand sites). metamask-alt aliased to the existing metamask.svg in the manifest since it's the same brand split across two on-chain addresses. - provider-registry.ts: 5 new entries (description + url + twitter) for the standalone brands. metamask-alt intentionally omitted so /products/metamask-alt falls back to plain rendering (no separate product surface for a secondary address of an already-listed brand). - hyperliquid-frontends.yml: 6 providers entries with the same shape as the existing 60+ frontends (Prom queries pre-wired for p50/p90/p99/mean/success/sample/series). The builders.json on the HL node was already updated and the harness restarted in a prior step; this PR ships the editorial scaffolding the bench page reads when those builder labels surface. Co-authored-by: Florent Tapponnier <contact@mobula.io>
…ks-v20 (#773) Flushes stale snapshots that don't include the 6 newly identified HL frontends (invo, bitget-wallet, defi-saver, unitywallet, marsgo, metamask-alt) added in #772. Without this, /products/<slug> 404s for them even after the YAML + builders.json updates landed because the cached provider list still mirrors the pre-deploy snapshot. Same pattern as the v11→v15/v15→v19 historical bumps. Co-authored-by: Florent Tapponnier <contact@mobula.io>
…775) The 6 builders identified in #772 (invo, bitget-wallet, defi-saver, unitywallet, marsgo, metamask-alt) have their builders.json entry on the HL node, which means the harness now emits the friendly name as the Prom label (e.g. builder="invo") instead of the 8-char hex prefix (builder="0x557edb25"). The old hex-prefixed YAML providers were still querying the dead Prom labels, so they collapsed to null and the materialize worker dropped them. That's why /products/invo etc. 404'd after the deploy — the named entries existed in the YAML but the bench snapshot only carried the dead hex ranks beside them. Remove the 6 dead hex entries. The 9 still-anonymous hex addresses stay as-is since the harness still emits their hex prefix. Co-authored-by: Florent Tapponnier <contact@mobula.io>
…dev-hl-frontends # Conflicts: # src/components/ledger-table.tsx
Flotapponnier
force-pushed
the
chore/sync-main-into-dev-hl-frontends
branch
from
June 28, 2026 12:02
b2e17c3 to
dbe1987
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings PRs #771-#775 from main into dev. Required because the OCB materialize worker on Railway pulls from
devbranch (see miniapps/ocb-materialize-worker/Dockerfile), and without this sync the worker keeps materializing the OLD YAML (15 hex slugs) instead of the new named entries (invo, bitget-wallet, defi-saver, etc.).