Corrections
When we get something wrong, we say so here: what changed, when, and why.
This covers our own mistakes as well as updates driven by new information.
We would rather be publicly wrong and visibly corrected than quietly wrong.
Entries are never edited after the fact — see our policy.
2026-10-12
Eleven sample reports withdrawn — pages our crawler could not find were scored as documents that do not exist
All 11 deep check reports still listed on our reports page — Lido, Arbitrum, Uniswap, Aave, EigenLayer, Chainlink, Ondo Finance, Sky, Ethena, Worldcoin and GMX — until 12 October 2026; and the free check pages of Pendle, Curve, The Graph and Rocket Pool, from August until 12 October 2026
Pointed out to us on 11 October 2026 in a private review of the site and confirmed against our own records the same day. The links to withdrawn reports (the last point below) we found ourselves on 12 October. No complaint or right-of-reply request was received.
All eleven are samples. We ran them ourselves on 19 August 2026 to show how a deep check works; nobody ordered or paid for any of them. Yet every report page said it was produced “because somebody paid for the investigation to happen”. That was untrue on every page that carried it. On 11 October the sentence was replaced with one that says what happened.
Our crawler looks for a project’s documents at a fixed list of addresses on its main website — /team, /tokenomics, /audits, /terms and the like. Projects often keep these documents elsewhere: Lido’s documentation, for example, is at docs.lido.fi, not lido.fi/docs. When a guessed address answered “page not found” (error 404), or showed the home page again, nine of the eleven reports took that as evidence that the document does not exist and lowered the score for it, instead of excluding the point as unchecked — the rule our methodology states.
Some reports said so in plain words. The Ondo Finance report called its tokenomics page one that “demonstrably does not exist” and scored supply and unlock disclosure at zero. The Sky report called its missing terms of service “a finding about the project”. Both rested on nothing more than an address our crawler guessed and did not find.
The safeguard we added in August did not catch it. It stops a report whose text lists gaps while no point is marked as unchecked. Each of these reports marked at least one point as unchecked, so the safeguard passed, while other gaps were scored as findings.
The text of ten of the reports also showed internal field names from our scoring — for example “audit_published set to null” — where a reader should have seen plain words.
While withdrawing them we found one more fault. The free check pages of Pendle, Curve, The Graph and Rocket Pool, whose reports we withdrew on 20 and 21 August, still linked to those reports with the withdrawn score in the link — “Pendle — ChainSift Score 49/100”. The link was built from every report we had stored, withdrawn or not.
What changed
- All eleven reports are withdrawn. Their pages stay at their original addresses and say why. The data behind them is kept; nothing is deleted.
- Free check pages now link only to reports that are in force. The four links to reports withdrawn in August are gone, and no link points to the eleven withdrawn today.
- A new sample will be published only when the deep check counts a page it could not find as unchecked, never as missing, and its text carries no internal field names.
Withdrawn. Until a new sample is ready, our reports page says that one is being prepared.
2026-09-28
Free checks said liquidity was not locked when it was
6 of 144 free contract check pages, and the same line in answers from our Discord and Telegram bots, from the first free check in August until 28 September 2026
Found by us on 28 September 2026 while reading our data source’s answers for a new guide about liquidity locks, before any complaint or right-of-reply request was received.
Every free check has a line “Liquidity locked”. It should show what share of the trading pool’s LP tokens sits in a locker or at a burn address. Our data source marks each LP holder as locked or not, but sends that mark as a number, while our code expected text. Every lock was read as “not locked”, and every page said “No”.
On 138 pages that was the right answer. On 6 it was wrong: FLOKI had 78.8% of its pool locked, MNTM, WILDEBEEST and ZIG all or nearly all of it, TUT and Mubarak between a quarter and two fifths. Those pages told readers that nothing stopped the pool from being withdrawn, when all or part of it could not be.
The same mistake hid two labels in the largest-holders table, “contract” and “locked”, and meant the watch alert “Liquidity unlocked” could never be sent: a lock we never saw could not end.
What changed
- The mark is now read correctly on the site and in both bots.
- The 6 pages were rechecked on 28 September 2026 and now show the locked share: FLOKI 78.8%, MNTM 100%, WILDEBEEST 100%, ZIG 99.9%, TUT 38.1%, Mubarak 25.2%. Their explanatory text was rewritten from the corrected table.
Corrected on all check pages and in both bots. None of the contracts changed — only what we said about them.
2026-09-19
Guide pages listed contracts as examples of things our checks had not found in them
The “Seen in the wild” list on five guide pages, until 19 September 2026
Found by us on 19 September 2026 while preparing a new guide, before any complaint or right-of-reply request was received.
Several guides end with a list headed “Seen in the wild”, captioned “Contracts we checked where this actually showed up”. The list is built automatically from our free check pages. On five guides it showed contracts that did not have what the guide is about.
Honeypot tokens: the list took any contract whose “Sellable” line began with “No”. Since 17 September a missing test result reads “No data”, which also begins with “No”. All four contracts listed — EURCV, WLFI, EIGEN and CAP — had no sell-test result at all. None had a failed sale.
What is a rug pull: the list showed contracts with an admin mint function (TONCOIN, GMX, ATOM, BUSD). A mint function is a feature of a contract. A rug pull is something people do. The list presented the first as if it were the second.
Warning signs worth walking away from: the list showed contracts where the ten largest holders own 50% or more (EURCV, OKB, GMX, BUSD). That threshold is one we chose ourselves, and we removed it from our check pages on 12 September for exactly this reason.
The two liquidity lock guides listed contracts whose liquidity was not locked, under a caption that read as if it was.
What changed
- The honeypot list now shows only contracts where our check found selling blocked. None of our current check pages has that result, so the list is not shown.
- The rug pull and warning signs guides no longer show a list.
- Every remaining list states what its contracts have in common — for example, “Contracts we checked where an admin mint function is present”.
Corrected on all guide pages. The check pages themselves were not affected.
2026-09-18
The “Previous check” line blamed the contract for changes it had not made
25 of 105 free contract check pages, until 18 September 2026
Found by us on 18 September 2026 while checking a page after an unrelated fix, before any complaint or right-of-reply request was received.
When a contract’s score differs from an earlier check, the page shows the earlier score in a line under the current one. That line always gave the same reason: “the score changed after the contract’s mechanics changed.” It appeared on 25 of our 105 check pages. On 20 of them the reason was not true.
On 13 pages the earlier score itself was wrong. It was recalculated from a shortened record of the old check that leaves out three contract functions — transfer pause, address blacklist and upgradeable proxy — and counts them as absent. For a contract that has any of them, the earlier score came out higher than it was, and the page reported a change that had not happened. Tether USD and Pepe were among these pages.
On 7 pages the contract had not changed either. The share of supply held by the ten largest holders had crossed a threshold in the score: on BUSD it went from 49.9% to 50.2%.
What changed
- The earlier score is now recalculated from the full answer our data source gave at the time, the same way as the current one.
- The line now names what changed — for example, “Since then: top-10 holders 49.9% → 50.2%”. When we cannot name it, the line is not shown at all.
- The line now appears on 17 pages. On 12 the top-10 holders’ share crossed a threshold; on 4 the source now reports an admin mint function it did not report before; on 1 the buy and sell tax went from 0% to 3%.
- Preview images that showed the earlier score were redrawn.
Corrected on all pages. The current scores were right; the line under them was not.
2026-09-17
Free checks said “Not present” where our data source had not answered
35 of 105 free contract check pages, from their first publication until 17 September 2026
Found by us on 17 September 2026 while verifying a statement for our Telegram channel, before any complaint or right-of-reply request was received.
The free check reads each contract through a public security data source. For some contracts the source does not report whether the contract has mint, pause or blacklist functions, and often not whether a test sale went through. Those answers are not “no”. They are absent. 34 of the 35 affected contracts are upgradeable proxies.
Our page read an absent answer as “no”. The USD Coin page stated “Admin mint: Not present”, “Transfers pausable: Not present” and “Address blacklist: Not present”. USDC’s contract has all three. On 28 of the 35 pages the table also said “Sellable: Yes”, credited to a transfer simulation whose result was never returned.
The score treated the same silence as a clean result. The contract functions signal kept its points instead of being excluded — the opposite of the rule this page was opened for: a signal we could not verify is removed from the score and from the maximum.
What changed
- An absent answer is now shown as “No data”, never as “Not present” or “Yes”.
- When the contract functions are not reported, that signal is excluded from the score and from the maximum, and the page says so under the score. USD Coin moved from 16/18 to 9/10.
- All 35 pages were rechecked on 17 September 2026. Their explanatory text, written from the old table, was removed and rewritten from the corrected one.
Corrected on all 35 pages. None of the contracts changed — only what we said about them.
2026-08-20
Fifteen reports withdrawn — data gaps were scored as findings
All 15 reports published on 19 August 2026
Found by us during an internal review, before publication was promoted and before any complaint or right-of-reply request was received.
Our methodology treats a sub-signal we could not verify as excluded: it is removed from the score and from the maximum, so a project is never marked down for a shortfall in our own data collection. Each report page stated this in writing.
In all 15 reports the exclusion never happened. The analysis listed the gaps in prose but assigned every sub-signal a number anyway — 285 sub-signals, none marked as unverifiable. The maximum stayed at 100, so the missing evidence quietly reduced each score. The page told the reader the opposite.
The effect was largest where our crawler performed worst. EigenLayer scored 45 of 100 and was labelled HIGH risk, while its own report recorded that all 18 fetched pages returned the same JavaScript shell and that the documentation, audits and repositories were never retrieved. Marking two of those sub-signals as unverifiable moves the same analysis to 48 out of a maximum of 91.
A second defect surfaced in the same review: two runs of the identical code, half an hour apart, disagreed by 13 points on EigenLayer and 12 on Curve, and moved two projects across risk bands. The cause was our page collection returning different amounts of text on each attempt, not any change at the projects.
What changed
- Scoring now refuses to produce a report whose text lists gaps while no sub-signal is marked unverifiable. The contradiction is a hard error, not a warning: such a report cannot be generated, so it cannot be published.
- Pages that fail to load or come back suspiciously short are re-read once before the result is accepted.
- Every project is now analysed twice, with a fresh collection each time. If the two scores differ by more than 5 points, the report is not published at all.
The 15 reports are withdrawn. Their pages remain at their original addresses and say so. They will be regenerated and republished under the corrected method.
Postscript · 2026-08-21
The cause we gave was not the cause
The entry above says the disagreement between runs came from our page collection returning different amounts of text on each attempt. That was wrong, and here is how we know.
We fixed the model’s sampling and regenerated the reports. If collection were the cause, the disagreement would vanish wherever the retrieved text was identical. It did not. Arbitrum returned 11,735 characters on both runs — the same to the byte — and the two scores still differed by 6 points. Rocket Pool hit the same 60,000-character ceiling on both runs and differed by 12.
The real mechanism is closer to home. A ChainSift Score is points earned divided by points available, and marking a sub-signal unverifiable removes it from both. On Rocket Pool the two runs earned almost the same raw points — 46 and 44 — yet scored 56 and 68, because one run judged more sub-signals unverifiable than the other and the denominator moved with it. The runs were not disagreeing about the project. They were disagreeing about what we had managed to check.
That is not the whole story either. On Worldcoin the denominator came out the same across runs and the raw points differed instead: there the model simply read the same evidence differently. Both effects are real, and they are not the same problem.
What changed
- The model’s sampling is now fixed, so the same evidence gives the same reading.
- The scoring scale was rewritten. “We could not retrieve this” is now the first option offered for every sub-signal, where before the scale offered five numeric grades and nothing else — and a number is what we got.
- Where an entire topic fails to load on our side, the affected sub-signals are now excluded by our own retrieval log rather than by the model’s judgement.
Eleven of the fifteen reports are published. Four are not — The Graph, Rocket Pool, Pendle and Curve — because repeated runs still disagree by more than five points. Their pages stay at their original addresses and say so. We would rather show a gap on the shelf than a number we cannot produce twice.