Skip to content

everything on /trading-apps reads one source now - #2857

Merged
Flotapponnier merged 2 commits into
devfrom
feat/everything-on-tehcscreener
Oct 7, 2026
Merged

Flotapponnier merged 2 commits into
devfrom
feat/everything-on-tehcscreener

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

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

bench from to
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: 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.

  • 267 loses BonkBot, Banana Gun, Bloom, Sol Trading Bot, PepeBoost, o1.exchange — six of fourteen
  • 200 loses Meteora DBC, NOXA Fun, Bankr, LetsCash, dontblink, Raydium Launchlab; gains Pons Family, Stonk.fun, long.xyz, LetsBonk, ArgusPad, three of them off Solana

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-wars with 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 window label 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 history reads first_day. The first version read len(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 validate 237/237, typecheck clean, eslint clean, go test green with 7 new tests, gofmt clean. Harness deployed: 14 launchpad series, 181 windowed volume series, 9 history series.

Needs a worker rebuild after merge, and a cherry-pick to main after that.

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
Flotapponnier merged commit cb23a2c into dev Oct 7, 2026
2 checks passed
@Flotapponnier
Flotapponnier deleted the feat/everything-on-tehcscreener branch October 7, 2026 17:31
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.
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