bench 265 copy: meta description rendered "1.559xx"; intro claims matched to live data - #2371
Merged
Merged
Conversation
…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
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>
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.
Audit of
/benchmarks/perp-pf-ratiocopy against the live blob (2026-09-14 23:06 UTC).{{best_p50}}already carries the unit, the template appended anotherx. Same in twofindingslines (/api/stat, MCP). Description rewritten to 156 chars so it is no longer cut with an ellipsis at the 158 cap.F→F (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