BORING NON-DEGEN STUFF

You scrolled here on purpose. Respect.

Every number on the site, and how we got it.

Long. Dry. True. Degens, the card’s back there.

Back to the board

How we count.

What we capture

Every pump.fun launch we observe from creation to a terminal outcome: 2,963,731 so far. Robinhood Chain launches from the launchpad factories we watch there: 998,137. Market data we have captured, not a census of the chain. Every number on this site shows its N and its date. No badge ever says a coin is fine. Realized outcomes replace predictions.

Outcomes

wordmeans
ruggedliquidity pulled by the creator side; the book could not be exited
fadedthe card’s word for died: bled to zero without a pull
survived / activestill trading, no terminal outcome yet
graduatedcompleted the curve: the complete byte on-chain, not the launchpad’s API

A small number of launches with conflicting reads sit in a published quarantine file rather than being silently dropped.

Rap sheet

A wallet’s other launches, counted. Resolved means rugged, died, graduated or survived. “Rugged 110/111” is 110 rugged out of 111 resolved. “Faded 1/111” is 1 died out of the same 111. Time to rug under 1 second reads “rugged at launch”. A launch is never its own prior.

What we don’t do

  • ■ No prediction that a specific coin will rug.
  • ■ No grades. No promise a coin is fine. A CLEAR pool reading is a pool size.
  • ■ No claim that wallets are the same person. We count what a wallet did.
  • ■ No timing table by band. Withdrawn 2026-09-29.
  • ■ No number without an N and a date.

Census counts, the odds and the early book.

Every pump.fun launch we’ve captured, 2,963,731 of them

of every 100 launches are already a body. 96.66% rugged or died · 2.96% still breathing · graduated 0.379% (all of 2,963,731). Graduated is not “1 in 100”.
rugged or died survived / active graduated · 10,933 of 2,963,731

No tooltip. Find them.

ROBINHOODevery venue we capture, same count

97.31% rugged or died · 2.69% alive · graduation: not measured on Robinhood Chain (no bonding curve), all of 998,137 launches.

Robinhood Chain: PonsLaunch 77.2%, LongLauncher 12.3%, Launch Factory 6.1%, LiquidityLauncher 4.0%, PAIR 0.2%, pools.trade 0.2%, hood.fun 0.0%, LaunchFactory 0.0%, May 2026 to Sep 2026. Measured 2026-09-30.

Robinhood Chain devs whose bag we can see: 51% sold 90%+ of it within 4 hours (n=235,334). The dev cashing out, not the pool draining.

Depth: the early book, both tails, same table

SOLANAcounted to · every launch with an outcome

early buyersruggedngraduated
1%%
2–3%%
4–5%%
6–10%%
11–25%%
26+%%
all calls%%

A launch with no early book is not in this table: the early-book feature is absent on those calls rather than zero, and absent is not zero.

Funding says the same: 0 SOL in → % rugged (n=) · 5–20 SOL → % (n=) · above 100 SOL % (n=).

ROBINHOODearly book, Robinhood Chain

The Robinhood Chain pipeline did not record an early book until 6 September 2026, so there is no depth table for it yet. A row appears once its bucket reaches resolved launches.

A book nobody bought can only die. A funded book is what gets pulled, and the only kind that ever graduates. Depth is a record of what happened to books like this one. It is not a promise.

The home footer used to carry one line about scope. It lives here now: this is market data we have captured, not a census of the chain.

What a call was.

We used to write a colour band on a launch the moment we first saw it, hash-chained. The bands are withdrawn (2026-09-29): they did not beat an age-matched baseline. The rows stay in the hash chain. The creator’s counted rap sheet is what the card shows.

Pool depth.

How much of the coin the pool could actually pay out, right now. We take the quote side of the book: a bonding curve’s SOL or ETH reserve is the quote side; a DEX pool’s published liquidity counts both sides, so we halve it. We measure it against the paper value most likely to be sold into it: the ten largest holders’ stake where we know the holder split, otherwise the coin’s whole market value. The card says which of the two it used.

Loading the thresholds…

The cut points are measured, not chosen, and the study behind them is published with them. It is a reading of the book now, not a prediction, and it moves.

The snapshot row.

Pool, market cap, holders, top-10 share and mint / freeze authority. Each number carries its source: our own scan of the chain, or DexScreener’s deepest pair where it answers. A number nobody could read is a dash, never a guess. The row is a picture of now. It moves, and the card stamps the time it was pulled.

The bucket line.

“Devs with this rap sheet: next coin rugged X% · faded Y% (n=N). First-timers: rugged X% · faded Y% (n=N).” The devs are put in four buckets by their resolved priors at launch: none, one to four, five or more with 80% or more rugged, five or more under 80% rugged. The rates are the next coin’s outcome over the last 30 days, and the card prints the date it counted to. Rugged is rugged; faded is died. The line runs only when both words are counted for both sides, with an n on each. If one side is missing, it does not run.

The AUC line.

“Early buyers spot rugs better than the dev’s rap sheet (AUC a vs b).” AUC is the chance that a randomly picked rugged coin ranks above a randomly picked coin that did not rug, on one signal. 0.5 is a coin flip. 1.0 is perfect. Both are measured out of sample: on launches the model never saw, in a test week the card names. The line prints only with its n and its test week. Without both it is not shown.

No rap sheet is not a pass.

A missing rap sheet means we have not seen this wallet in the launches we captured. That is an absence of data. It says nothing about the dev. It also covers a coin that launched on a venue we do not watch. Absence is not a pass, and we never show it as one. A dev we hold no rap sheet for returns nothing at all, never “false”.

What we capture on Robinhood Chain.

Robinhood Chain: PonsLaunch 77.2%, LongLauncher 12.3%, Launch Factory 6.1%, LiquidityLauncher 4.0%, PAIR 0.2%, pools.trade 0.2%, hood.fun 0.0%, LaunchFactory 0.0%, May 2026 to Sep 2026. Measured 2026-09-30.

Every RH figure on this site used to be footnoted “hood.fun’s fee-free launch period”. That was a wrong attribution, not a caveat: hood.fun is a fraction of a percent of what we capture. The table is generated from the capture, so this page and the footnote cannot disagree again.

Loading the census…

Uniswap v3 chain-wide is not watched. A coin that settles there (Sushi V3, for one) has no record here at all. That is a gap in what we capture, not a finding about the coin.

What Pons does at launch.

Pons makes the first seconds of a launch expensive to snipe: an outside buy right after launch is taxed almost to nothing, then the curve opens at its normal price. It is the fairer launch. The record of what the launches turn into is below it, and the two are both true.

Loading the measurement…

Robinhood Chain waived gas until 2026-09-29. Every number here was measured under that waiver. Launch behaviour since the waiver ended is not in these figures. Each block carries the date it was measured.

What launches from devs with this rap sheet turned into.

This is the creator’s record, counted; not a prediction. No resolved prior launches is FIRST LAUNCH; one or two is THIN RAP SHEET; from 3 up, the count is the count. The colour bands that used to sit on top of these counts are withdrawn (2026-09-29).

Loading the table…

Who is in this table — 2026-09-20. A launch counts here only if at least one buy came from a wallet other than its creator. A rug is done to somebody, so a launch nobody bought can never rug, and every one of them left in the denominator drags the rates toward zero, unevenly. That is the whole rule: no minimum size, no minimum number of trades, no time window. One external buy. What it excludes is published as a count of its own and never folded into a rate; a coin nobody traded is an absence, not a survival.

“Graduated”, checked on chain.

Trackers mark a pump.fun coin “graduated” once its bonding curve reaches 99.9%. We read the curve account’s own complete byte instead, and check whether the PumpSwap pool ever traded. Of 24,787 coins that carried the flag, 11,009 actually migrated on chain. 10,740 were pulled instead: flagged, never complete on chain, and labelled rugged. The other 3,038 never completed either and were not pulled: 1,967 died without a pull, 659 are still trading on the curve, 333 survived, and 79 have too little trading for a verdict.

One population, one computation: sol_grad_verify.py reads each flagged curve’s byte; gt_signals.py counts.

How “known bad” is decided.

A creator is marked known_bad when BOTH of these are true, and only then: at least 5 of their launches have reached a terminal outcome, AND their rug rate is at least 1.5× the chain baseline rug rate. Nothing else feeds it: not the number of wallets around a launch, not how fast anything happened, not a grade.

The baseline is the rug rate over resolved launches only, 30.8%, the same basis as a creator’s own rate, so the line today sits at 46.3%. A launch that is still running, and a launch reconstructed from chain that we never watched, are in neither side of that comparison. Both figures move when the corpus moves and both are published with the date they were computed.

Changed 2026-09-19: that baseline used to be computed over the whole census, which counted launches we never observed in the denominator while no creator’s own rate did. Moving it to the resolved basis removed the known_bad flag from 995 creators and added it to none. The threshold only rose, so the change can only ever take a flag away.

An outcome requires an observation. A launch we never watched carries no outcome, and two absences qualify. Unobserved: reconstructed from chain with no trade and no snapshot, so no trajectory; it can neither rug nor survive. Coverage gap: watched, but more thinly than the labeller’s death detector can read, fewer than the 2 trajectory points it requires. Before 2026-09-19 such a launch was labelled died; it is labelled insufficient now. Both are excluded from every rate on this site, and both ride on the rap sheet as unobserved and coverage_gap. Neither is a judgement about the coin.

Across attributed launches only, the ones we can tie to a creator, the rug rate is 32.7%. That is the fairer comparator for one creator’s own rate, because a rug leaves a signed transaction while a quiet death leaves the dev anonymous. It is carried on every rap sheet and it is not what the threshold uses: 1.5× it is above 100%, and a rule that can never fire is not a rule.

A creator with four resolved launches, all of them rugs, is not marked. That is the floor doing its job at a denominator too small to rate, not an opinion about them. A creator we hold no record for returns nothing rather than a pass.

The same rule and the same two numbers come back on every call to /v1/flag and /api/flag, in a known_bad_basis field, so a bot gets the rule with the answer.

How Sentinel works, in full.

Sentinel checks who launched the coin before it buys. Its guardrails are Sentinel’s defaults, not the API’s: call /v1/flag, /api/scan or the MCP tools and you get the raw read, and your bot sets its own risk rules. When Claude cannot answer in time, Sentinel skips the trade instead of guessing. Endpoints and conventions are on /api.

MOVE 1

A rate with a denominator

A rug rate on its own is noise. The creator’s counted history beside the chain’s own number is a decision.

pulling a real dev from the live API...

Live, from /v1/flag and /api/scan. The colour bands were withdrawn on 2026-09-29; the record is counted.

MOVE 2

The clock is withdrawn

The timing clock was keyed by the colour bands. The bands did not beat an age-matched baseline and were withdrawn on 2026-09-29, and the clock went with them.

pulling the published clock...

/v1/ttr still answers, with nulls and a band_withdrawn note, so a client does not break.

MOVE 3

Your $100 across this dev’s last launches

Before the buy, not after the loss. The same stake into each of this creator’s most recent resolved launches, computed from the record.

replaying a real dev...

Live, from /v1/creator/<wallet>/replay. The stake and the return come from each launch’s recorded final multiple. Launches with no recorded multiple are left out of the stake and the return, so both describe the same launches.

MOVE 4

Log every call. Nobody edits it.

Every verdict is written down when you make it, under your key. Then the coin resolves, and the tally reads what actually happened.

// the shape of a tally; yours is under your own key sealed 14 resolved 11 pending 3 hash chain intact rugged 8 died 2 graduated 1 unresolved 3

An unresolved call counts as pending, never as a win. The denominator is the whole point. A tally assembled from remembered wins is marketing.

The live paper page, in full

Every entry and exit, drawn on the candles as they happen. Two books trade the same coins with the same fees and the same exits: the Rules book takes every rule candidate, the Rules + Claude veto book is the same candidates minus the ones Claude Haiku 4.5 skips or resizes. Claude never picks a coin and never exits. Entries are shown live, with no delay.

The 14-day window. It starts at the first 00:00 UTC after all three hold: the replay has run fault-free on every leg under replay, the exit fix has passed our auditor, and Claude’s new card (similar trades beside their base rate, the rug percentile over 24 hours) has run 24 hours live with its takes, skips and sit-outs logged. Never before 2026-09-30 00:00 UTC. For those 14 days the exit engine, the fees, Claude’s feature card and the sit-out rule are frozen, and neither book restarts. Every veto decision is logged with its reason, the model, a hash of the card it saw and how long it took; a day without that log cannot be scored and stays outside any window. The card is never tuned toward a take rate. At the day-15 read, any cell with fewer than 30 resolved trades prints “not enough”; Robinhood Chain cells may not reach 30.

Rules + Claude veto, re-booked. Its old number kept the Rules trade on every name Claude skipped, so it put a P&L beside names Claude never took. Under the test rule a skip is flat 0: no fill, no fee. On the first card, 0 of 478 decisions were taken (it showed only past Rules trades, no base rate): Solana 0 of 410, Robinhood Chain 0 of 68, 2026-09-28 01:30 to 2026-09-29 10:50 UTC; 475 decided skip, 3 timed out. The new card has been live since 2026-09-29 10:50 UTC.

What Sentinel changed, and why. Every night Sentinel looks for groups of at least 30 Rules-book trades that lost money together, by their entry readings. It proposes at most three skip-rules, replays each on the last two days it did not learn from, and adopts one only if the bankroll ends higher and the worst drawdown is no deeper. An adopted rule skips those entries in the veto book; the Rules book keeps taking them, so three days later the rule is checked against what those trades did and reverted if skipping them cost money. Judged on net bankroll change after fees, never on win rate.

Same candidates. The two books are compared only on the candidates both of them saw: the ones where the veto book made a decision. When Claude cannot answer (it timed out, errored, or is over its daily cap), the veto book sits the entry out and the Rules book still takes it, so those are counted on their own line with what the Rules book made on them.

Claude Haiku 4.5, entry by entry. Claude sees each rule candidate’s feature card and a 1-minute candle chart from our own tape, and answers take, skip or size. It is never in the exit path. When it cannot answer in time, errors, or is over its daily cap, the veto book sits the entry out and the row says so.

Engine-fix log lines on the live page are clipped to a line; each one is a dated fix, and the page keeps the full text in its tooltip.

How the serial-rugger board counts.

Resolved means rugged, died, graduated or survived, with the outcome known at the time shown. Rugged, died and graduated are counted out of resolved. Median seconds to rug is over that wallet’s rugged launches that have a rug time; under 1 second reads “rugged at launch”. Launches means every launch we captured for the wallet, resolved or not. The board is rebuilt hourly. Coins that have not resolved yet are not in any fraction. Robinhood Chain rows before 2026-09-15 came from an under-joined record and were rebuilt.

How an autopsy is picked and checked.

One coin a day. Coin of the day is any coin with real data on the curve, not the biggest; the ≥2 SOL floor keeps dust off. A daily autopsy publishes only when an outside source agrees the coin is dead. A published autopsy is never deleted: a claim later withdrawn carries a dated correction under it and in its title, so a shared link says so too. Several cards can quote the same SOL figure: a pump.fun curve graduates near 85 SOL of real reserves, so a coin that rugged before graduating cannot have raised more.

Who shows up early: how to read it.

Role. creator is the address that launched the coins. repeat_buyer was early in two or more of this creator’s launches: it could be a fast bot, so read it against its anywhere-total. one_off showed up once, usually noise.

Early in this dev / early anywhere. The first is how many of this creator’s launches the wallet was early in. The second is how many launches it was early in anywhere on the chain. High on the first and low on the second is a wallet that mostly exists for this creator. High on both is a wallet that is early in everything: a bot or a router.

What we can and cannot tell you about a crowd. A launch can show thirty independent-looking buyers. We cannot tell you who owns them. We tried, by grouping wallets by shared launch history, and withdrew it on 2026-09-02: it ties too few wallets to support the claim (dated corrections).

What it does not tell you. It is not fund flow: it says who was in the room and what they did since, not where the proceeds went, because that needs transfer data we do not capture. An empty result is not a pass: a creator may be below the export threshold or newer than the last pass. This is market data we have captured, not exhaustive coverage from a start date.

What a receipt is.

A permanent public page at groundtruths.xyz/receipt/ plus your transaction signature, showing what the card said at the moment you bought. No account, no email, nothing about you but a truncated wallet: the signature is the only key. It stays retrievable because it is built from the chain and our own logs, not from a private user database that could go away. The verdict on it is frozen on purpose: if the coin flips later the receipt still shows what you were told.

Dated corrections.

We said every logged call was written down before its outcome existed. Wrong. We also quoted a red-call rug rate: 55.6% on pump.fun (n=677,664), 46.5% on Robinhood Chain (n=17,626), 7-day window. It ran on the home page, the scoreboard, the call log, the ticker and the posts we sent. Here’s the count: 811,203 of 2,286,317 logged calls (35.5%) went in after their coin’s outcome was already knowable. 641,388 at or after the rug. 169,815 after the outcome was labelled. Rugged calls with a rug time: 97.7% on pump.fun (567,320 of 580,901) and 96.4% on Robinhood Chain (74,068 of 76,857) were logged after the rug. The hash chain proves a row wasn’t edited. It never proved the row came first. The logger stamped each call with its pass time and never checked if the coin had already rugged. Withdrawn on 2026-09-29. Every figure built on those calls reads “being restated”: the band hit rates, the scoreboard, the call-log counts, the dev line on the card. Until it’s recomputed from calls logged before their outcome. Restated figures get dated here when they publish.

We said colour bands read how a coin ends. Wrong. We tested them against coins launched in the same window, alive at the same age, that we never called. No separation. Withdrawn on 2026-09-29. The dev count (how many of this wallet’s launches rugged) is a count, not a band. It stays.

We said six autopsies’ coins rugged or died at the 84.9 SOL wall (2026-08-13, 08-16, 08-31, 09-13, 09-16, 09-17). Wrong. Here’s the count: 6 of 6 graduated. Each curve’s on-chain complete flag is set. Each moved to a PumpSwap pool. Coins at the wall were mislabelled until 2026-09-28. Withdrawn on 2026-09-29. Each page carries a correction. A daily autopsy now runs only when an outside source agrees the coin is dead.

We said 73% (22 of 30) of a 30-buyer early crowd was one operator behind many wallets (home page), and ran a 4-wallet version in two autopsies. Wrong. Measured: 1.4–8.1% per coin, not 73%. On a random rugged coin, 111 early wallets collapsed to 102 actors (9 of 111, 8.1%). On the coin with the most early wallets, 1,012 collapsed to 998 (14 of 1,012, 1.4%). Across everything, grouping wallets by launch history ties 18,474 of 688,645 wallets (2.68%) and can never pass 115,365 of 688,645 (16.8%). Most wallets bought one launch and leave no history to compare (388,722 of 688,645 bought exactly one). Withdrawn as unsupported on 2026-09-02. Who shows up early now shows only what’s measured: which wallets were early in a dev’s launches, how often, and how tied they are to that dev versus the whole chain. The two autopsies (2026-08-21, 2026-08-27) stay in the archive with a correction under each. Source: BACKLOG.md W2, measured 2026-09-01.