Skip to content

bench 265 copy: meta description rendered "1.559xx"; intro claims matched to live data - #2371

Merged
Flotapponnier merged 1 commit into
devfrom
fix/pf-ratio-copy
Sep 14, 2026
Merged

Flotapponnier merged 1 commit into
devfrom
fix/pf-ratio-copy

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Audit of /benchmarks/perp-pf-ratio copy against the live blob (2026-09-14 23:06 UTC).

  • Meta / OG / Twitter description read "GNS trades at 1.559xx": {{best_p50}} already carries the unit, the template appended another x. Same in two findings lines (/api/stat, MCP). Description rewritten to 156 chars so it is no longer cut with an ellipsis at the 158 cap.
  • seo_intro: "a quarter of supply in circulation" → "a quarter to a third" (HYPE 23%, LIT 25%, ASTER 35%). "dYdX and Derive sit at the expensive end" → dYdX 28x and Aster 26x are the expensive end today, Derive is 20x mid-table; Paradex 28x is called out as an adapter artifact (fees ≈ 0 on DeFiLlama), consistent with the methodology note.
  • SynFutures row: FF (SynFutures) so head-to-head links stop reading "GNS vs F".

Everything else checked out: P/F formula and windows match the harness; GMX/Gains "fully circulating, low single digits" (100% float, 3.4x / 1.6x); HYPE P/F≈P/S (19 vs 25, 78% rev share) and GMX P/S ≫ P/F (9.3 vs 3.4, 37% rev share) as the FAQ says; Drift zero-fee note still true; pre-TGE list matches the five unranked rows; bench 234 reference correct.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

…laims matched to live floats and multiples

- seo_description and two findings appended a literal "x" after
  {{best_p50}} / {{worst_p50}}, which already carry the unit: the meta,
  OG and Twitter descriptions read "GNS trades at 1.559xx". Description
  also rewritten to fit the 158 char cap instead of being cut with an
  ellipsis.
- seo_intro: HYPE/LIT/ASTER float is 23/25/35%, so "a quarter to a
  third of supply"; the expensive end is dYdX and Aster, with Paradex's
  multiple flagged as an adapter artifact (Derive sits mid-table now).
- SynFutures row labelled "F (SynFutures)": the bare ticker made
  compare links read "GNS vs F".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D
@Flotapponnier
Flotapponnier merged commit c1231f4 into dev Sep 14, 2026
1 check failed
Flotapponnier added a commit that referenced this pull request Sep 14, 2026
* bench 265 perp-pf-ratio: perp DEX price-to-fees valuation table (dev-only) + widen bench 234 (#2340)

Harness perp-token-metrics now publishes the full valuation row per
protocol: P/F (mcap / annualized fees), FDV/F, P/S, fees 24h/30d/prev
30d/1y, revenue 30d + share, market cap, FDV, float %, open interest and
fees/OI, for 13 tokened perp DEXes plus 5 token-less venues (fees + OI
only). Windows are cut from DeFiLlama totalDataChart identically for
every protocol (30d sum x 365/30); tokens are measured against the
DeFiLlama parent they accrue from so mcap and fees share one scope.
Ratios with a zero denominator or no token are deleted from the gauge
vector, never published as 0. Unit tests cover window cutting, ratio
math and the fetchers against a fake upstream; one live poll verified
18/18 protocols healthy.

Bench 265 spec renders a 6-column ledger (P/F, FDV/fees, P/S, Fees 30d,
Market cap, Float) plus panel tabs for revenue, OI and fees/OI. Held in
REMOVED_BENCH_SLUGS until the Railway harness is redeployed; bench-set
cache keys bumped (v65 / v60). Bench 234 gains the five new protocols
that publish revenue and switches dYdX to the dYdX Chain token.

computeFieldStats now prunes all-zero rows the way the ledger already
does, so a token-less venue promoted to "live" by its panel data no
longer drags the Best stat to 0.

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3635b0a)

* logos: official SVG marks for Avantis, ApeX and Derive (#2341)

Avantis: the "A" glyph extracted from the wordmark SVG served on
avantisfi.com, set on the brand purple square like their app icon.
ApeX: the ape mark from apex.exchange's header logo SVG, squared.
Derive: the horse mark SVG served on derive.xyz, as is.

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit d5b599a)

* bench 265: token-less rows report harness health (were shown as UNRESPONSIVE on staging) (#2350)

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 7bdd0cf)

* bench 265: pre-TGE perp DEXes listed unranked with fees and OI; edgeX and Paradex ranked (#2358)

Tom asked for the pre-TGE venues on the P/F bench. New spec field
provider.unranked ("Pre-TGE"): the loader stamps unrankedLabel on the
row and keeps ms at zero, so every ranking helper (liveResults, leader,
field stats) still skips it, and the ledger renders an unranked block
under the field with the row's companion-panel values (fees 30d, OI)
and a neutral badge, sorted by fees. Ostium, Pacifica, Extended plus
two new venues, Nado (Ink) and Decibel (Aptos), use it.

edgeX (EDGE, CoinGecko rank 167) and Paradex (DIME) turned out to have
listed tokens: they get cgIDs in the harness and enter the ranking
(edgeX at ~3.6x). DeFiLlama's fee adapter reports very low fees for
Paradex; noted in the tag and methodology.

Verified end to end: harness built from this tree (20 protocols, one
live poll), scraped by a local Prometheus, materialized with the
worker's loader, rendered by next dev: 14 ranked rows, 5 pre-TGE rows
with fees, no UNRESPONSIVE badges. bun 261/261, typecheck, validate.

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit b9f7cb1)

* rename: gains.trade / Gains Network -> Gains everywhere the brand is displayed (#2365)

The compare hero, provider profile and every title built from the
providers blob still said "gains.trade": the perp-asset-breadth blob was
last materialized on 2026-08-17 (before the 08-25 YAML rename) and its
result name is the first appearance the profile builder sees. An
editorial CANONICAL_NAMES override for `gains` now wins over any stale
appearance, the way Helius/PublicNode/dRPC already do.

Remaining "Gains Network" copy renamed in bench 266's spec (venue name,
description, methodology, FAQ) and the P/F bench tag, plus the display
strings and brand mentions in the perp harnesses (perp-volume-history
JSON venue name, cohort/fees/longevity registries, apps API name,
permissions-scan metric help, comments). API hosts (*.gains.trade) and
DeFiLlama match strings untouched.

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 796bd25)

* bench page: metric view tabs carry their definition as a tooltip; active view's definition as a caption (#2367)

The View pills above the chart (P/F ratio, FDV / fees, P/S, ...) only
had the Prom gauge name as a native title. Each pill now shows the
panel's spec `description` on hover and keyboard focus, and the active
view's description is repeated under the row so the definition is
readable on touch screens.

The headline tab reads a new optional `panel_main_description` spec
field (schema, type, loader); bench 265 sets it to the P/F definition.
Panels without a description render as before.

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit a877d40)

* bench 265 copy: meta description no longer renders "1.559xx"; intro claims matched to live floats and multiples (#2371)

- seo_description and two findings appended a literal "x" after
  {{best_p50}} / {{worst_p50}}, which already carry the unit: the meta,
  OG and Twitter descriptions read "GNS trades at 1.559xx". Description
  also rewritten to fit the 158 char cap instead of being cut with an
  ellipsis.
- seo_intro: HYPE/LIT/ASTER float is 23/25/35%, so "a quarter to a
  third of supply"; the expensive end is dYdX and Aster, with Paradex's
  multiple flagged as an adapter artifact (Derive sits mid-table now).
- SynFutures row labelled "F (SynFutures)": the bare ticker made
  compare links read "GNS vs F".

Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit c1231f4)

* bench 265: un-gate perp-pf-ratio for production (harness live on the VPS since 2026-09-14)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D

---------

Co-authored-by: Flotapponnier <florent@mobula.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants