Repository navigation
everything on /trading-apps reads one source now - #2857
Merged
Merged
Conversation
Your call, and it resolves a contradiction the hub was publishing: a DeFiLlama take rate sat beside a tehcscreener fee rate in the same table, disagreeing by up to a factor of two on the same terminal. A reader had no way to tell which to believe. Now there is one answer per question. Four benches move: 200 launchpad-wars Mobula -> tehcscreener /launchpads 201 terminal wars DeFiLlama -> tehcscreener /bots 205 Solana volume DeFiLlama -> tehcscreener /bots, Solana-pinned 267 app volume DeFiLlama -> tehcscreener /bots Two cannot move and are left alone: 202 reads App Store ratings and 268 measures execution on-chain. Neither exists in this source. Cohorts shrink where the source does not reach, per your rule. Bench 267 loses BonkBot, Banana Gun, Bloom, Sol Trading Bot, PepeBoost and o1.exchange, six of fourteen. Bench 200 loses Meteora DBC, NOXA Fun, Bankr, LetsCash, dontblink and Raydium Launchlab, and gains Pons Family, Stonk.fun, long.xyz, LetsBonk and ArgusPad, three of them off Solana. A row that cannot be measured is removed rather than published as zero, because a zero ranks it last on a figure nobody took. Bench 200 is renamed solana-launchpad-wars -> launchpad-wars with a 301. It covers Robinhood Chain and Arc now, so the old slug was false, and unlike the two dev-only renames this week it was served on production and owes a redirect. Harness gains two things the moved benches need. /launchpads, as its own metric family, because a launchpad and a terminal are different measurements of the same market: pump.fun's tokens carry an order of magnitude more than pump.fun's own app routes, and publishing both under one name would lose that. And 1d, 7d and 30d windows, summed from the series rather than labelled onto the existing gauges: adding a window label to a published metric would make every query that does not pin it match three series, and the four benches already serving would go blank on deploy. Two rules carried into the new code. Windows are sums, never averages of daily rates, so the take rate stays volume-weighted. And a day a platform reports zero fees while charging elsewhere leaves the ratio entirely, numerator and denominator together, which is the daily guard from #2843 applied over time. Days of history reads first_day, not the window length. The first version read 30 for every platform, which is the size of the window this harness asks for and tells a reader nothing. The hub's Take rate column is gone. It came from 201 and Fee Rate comes from 203; once both read tehcscreener they became the same number from the same source, and two identical columns read as a mistake rather than as agreement. What this costs, stated on every page that moved: nothing is cross-checked any more. On 2026-10-07 this source read pump.fun 2.2x above DeFiLlama on app volume and 3.7x above both DeFiLlama and Mobula on launchpad volume, while agreeing with DeFiLlama within 30% on six other platforms. That gap was found by having two sources. It would not be found again.
Caught by you asking whether DeFiLlama was really gone. It was gone from every query and still present in four places a reader sees: "the app's own cut from DeFiLlama's fees adapter" "(DeFiLlama, bench 267). Dash: not tracked by DeFiLlama." "Volume and commission from DeFiLlama's open dexs and fees adapters" the Commission tooltip, still describing dailyRevenue None of that is true any more. The Commission column now carries what the source reports as fees, which is more than the app's own cut, so the tooltip was not just crediting the wrong vendor, it was describing the wrong quantity. And the hub still pointed at solana-launchpad-wars in two places, a slug renamed to launchpad-wars in the same change. The 301 covers a reader typing the old URL; it does not cover our own page linking it. One mention of DeFiLlama stays, in the comment explaining why the hub moved to one source. That one is history and it is correct.
Flotapponnier
added a commit
that referenced
this pull request
Oct 7, 2026
* everything on /trading-apps reads one source now Your call, and it resolves a contradiction the hub was publishing: a DeFiLlama take rate sat beside a tehcscreener fee rate in the same table, disagreeing by up to a factor of two on the same terminal. A reader had no way to tell which to believe. Now there is one answer per question. Four benches move: 200 launchpad-wars Mobula -> tehcscreener /launchpads 201 terminal wars DeFiLlama -> tehcscreener /bots 205 Solana volume DeFiLlama -> tehcscreener /bots, Solana-pinned 267 app volume DeFiLlama -> tehcscreener /bots Two cannot move and are left alone: 202 reads App Store ratings and 268 measures execution on-chain. Neither exists in this source. Cohorts shrink where the source does not reach, per your rule. Bench 267 loses BonkBot, Banana Gun, Bloom, Sol Trading Bot, PepeBoost and o1.exchange, six of fourteen. Bench 200 loses Meteora DBC, NOXA Fun, Bankr, LetsCash, dontblink and Raydium Launchlab, and gains Pons Family, Stonk.fun, long.xyz, LetsBonk and ArgusPad, three of them off Solana. A row that cannot be measured is removed rather than published as zero, because a zero ranks it last on a figure nobody took. Bench 200 is renamed solana-launchpad-wars -> launchpad-wars with a 301. It covers Robinhood Chain and Arc now, so the old slug was false, and unlike the two dev-only renames this week it was served on production and owes a redirect. Harness gains two things the moved benches need. /launchpads, as its own metric family, because a launchpad and a terminal are different measurements of the same market: pump.fun's tokens carry an order of magnitude more than pump.fun's own app routes, and publishing both under one name would lose that. And 1d, 7d and 30d windows, summed from the series rather than labelled onto the existing gauges: adding a window label to a published metric would make every query that does not pin it match three series, and the four benches already serving would go blank on deploy. Two rules carried into the new code. Windows are sums, never averages of daily rates, so the take rate stays volume-weighted. And a day a platform reports zero fees while charging elsewhere leaves the ratio entirely, numerator and denominator together, which is the daily guard from #2843 applied over time. Days of history reads first_day, not the window length. The first version read 30 for every platform, which is the size of the window this harness asks for and tells a reader nothing. The hub's Take rate column is gone. It came from 201 and Fee Rate comes from 203; once both read tehcscreener they became the same number from the same source, and two identical columns read as a mistake rather than as agreement. What this costs, stated on every page that moved: nothing is cross-checked any more. On 2026-10-07 this source read pump.fun 2.2x above DeFiLlama on app volume and 3.7x above both DeFiLlama and Mobula on launchpad volume, while agreeing with DeFiLlama within 30% on six other platforms. That gap was found by having two sources. It would not be found again. * the hub still said DeFiLlama, and linked a slug I had just deleted Caught by you asking whether DeFiLlama was really gone. It was gone from every query and still present in four places a reader sees: "the app's own cut from DeFiLlama's fees adapter" "(DeFiLlama, bench 267). Dash: not tracked by DeFiLlama." "Volume and commission from DeFiLlama's open dexs and fees adapters" the Commission tooltip, still describing dailyRevenue None of that is true any more. The Commission column now carries what the source reports as fees, which is more than the app's own cut, so the tooltip was not just crediting the wrong vendor, it was describing the wrong quantity. And the hub still pointed at solana-launchpad-wars in two places, a slug renamed to launchpad-wars in the same change. The 301 covers a reader typing the old URL; it does not cover our own page linking it. One mention of DeFiLlama stays, in the comment explaining why the hub moved to one source. That one is history and it is correct. (cherry picked from commit cb23a2c)
Flotapponnier
added a commit
that referenced
this pull request
Oct 7, 2026
Two halves of one sentence counting different things. `wins` is one per chain led, deliberately, so a product topping four chain tabs of one bench earns four. `distinctBenchCount` is one per bench. Putting them either side of "of" only worked while the trading benches had no chain axis and a win meant a bench. Seven chain tabs landed on four of those benches this afternoon, in #2846 and #2857. The numerator multiplied, the denominator did not, and the card went out claiming a count that cannot exist. Mine. benchesLedCount counts distinct benchmarks the provider leads in any view, aggregate or chain, which is the basis the sentence already promised. FOMO now reads "#1 on 9 of 10 benchmarks" against 23 and 11. The two other places that use `wins` keep it: they say "first-place finishes", which can honestly exceed the bench count. They now say "first-place finishes across chains", because a reader who sees 23 finishes and 10 benchmarks will divide them and the two words stop that.
Flotapponnier
added a commit
that referenced
this pull request
Oct 7, 2026
Two halves of one sentence counting different things. `wins` is one per chain led, deliberately, so a product topping four chain tabs of one bench earns four. `distinctBenchCount` is one per bench. Putting them either side of "of" only worked while the trading benches had no chain axis and a win meant a bench. Seven chain tabs landed on four of those benches this afternoon, in #2846 and #2857. The numerator multiplied, the denominator did not, and the card went out claiming a count that cannot exist. Mine. benchesLedCount counts distinct benchmarks the provider leads in any view, aggregate or chain, which is the basis the sentence already promised. FOMO now reads "#1 on 9 of 10 benchmarks" against 23 and 11. The two other places that use `wins` keep it: they say "first-place finishes", which can honestly exceed the bench count. They now say "first-place finishes across chains", because a reader who sees 23 finishes and 10 benchmarks will divide them and the two words stop that.
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.
Your call. It resolves a contradiction the hub was publishing: a DeFiLlama take rate sat beside a tehcscreener fee rate in the same table, disagreeing by up to 2x on the same terminal (Padre 0.558% vs 1.125%, Axiom 0.514% vs 0.921%). A reader had no way to tell which to believe.
What moved
launchpad-wars/launchpads/bots/bots, Solana-pinned/botsTwo cannot move: 202 reads App Store ratings, 268 measures execution on-chain. Neither exists in this source.
Cohorts shrink where the source does not reach
Per your rule — if it is not on tehcscreener, remove it.
A row that cannot be measured is removed, not published as zero, because a zero ranks it last on a figure nobody took.
Bench 200 renamed
solana-launchpad-wars→launchpad-warswith a 301. It covers Robinhood Chain and Arc now, so the old slug was false; unlike this week's two dev-only renames it was served on production and owes a redirect.Harness
/launchpads, as its own metric family. A launchpad and a terminal are different measurements of the same market: pump.fun's tokens carry an order of magnitude more than pump.fun's own app routes. One name for both would lose that.1d / 7d / 30d windows, summed from the series rather than labelled onto the existing gauges. Adding a
windowlabel to a published metric makes every query that does not pin it match three series, and the four benches already serving would go blank on deploy.Two rules carried over: windows are sums, never averages of daily rates, so the take rate stays volume-weighted; and a day reporting zero fees while the platform charges elsewhere leaves the ratio entirely, numerator and denominator together — the #2843 guard applied over time.
Days of historyreadsfirst_day. The first version readlen(days), which is 30 for every platform because that is the window this harness asks for.Hub
The Take rate column is removed. It came from 201 and Fee Rate comes from 203; once both read tehcscreener they became the same number from the same source, and two identical columns read as a mistake rather than as agreement.
Every bench on the hub now reads tehcscreener except App Store ratings.
What this costs, and every moved page says so
Nothing is cross-checked any more. On 2026-10-07 this source read pump.fun 2.2x above DeFiLlama on app volume and 3.7x above both DeFiLlama and Mobula on launchpad volume — two indexers sharing no code that landed 1.8% apart — while agreeing with DeFiLlama within 30% on six other platforms.
That gap was found by having two sources. It would not be found again. The methodology on each moved bench states it rather than leaving a reader to discover it.
Verification
Every tab fills, checked per tab against Prometheus: 200 at 7/3/3, 201 and 267 at 7/7/6/6/5/6/4/3, 205 at 7. The Arc tab was dropped from 200 after the check showed one pad — a list, not a comparison — with its volume still inside the all-chains total.
pnpm validate237/237, typecheck clean, eslint clean,go testgreen with 7 new tests,gofmtclean. Harness deployed: 14 launchpad series, 181 windowed volume series, 9 history series.Needs a worker rebuild after merge, and a cherry-pick to
mainafter that.