Transparency score, not a security audit

Methodology

Method v0.3.0 · 2026-10-21 · rubrics onchain v0.2.7 / offchain v0.2.7 · change log → · How it works, in plain words →

1. How a check is scored

✓ Met
1
◐ Partial
0.5
✕ Not met
0
? Unknown
we read the source and could not establish the fact: excluded from the category mean, −1.5 pts each (max 10); a category with only unknowns scores 0 of its weight
⊘ Not read
our checker could not read the source (timeout, HTTP 403/429/5xx, empty or JavaScript-only page): no points lost, but it lowers coverage. It is not a finding about the project. A token mint whose address could not be confirmed or read is Not read (method 0.2.4), not Unknown
◌ Not assessed
nothing was submitted or found to assess in that category (for example no API, extension or program): no points and no penalty, but its weight stays in the denominator of the weight coverage. “Nothing to assess” never reads as “nothing wrong”
ℹ Status only
shown, never scored (for example “claimed”)
○ Not built
excluded (our gap, not the project's)
– N/A
excluded

2. How it becomes a score

Category = weight × mean of decided checks. Total = sum over categories with decided checks, rescaled to 100, minus the unknown penalty. Coverage = decided ÷ (decided + unknown + not read). Unknown (we read the source and could not establish the fact) is left out of the category average and costs 1.5 points per check (at most 10); a category with only unknown checks counts as 0 of its weight. Not read (our checker could not read the source) costs no points but lowers coverage; below 70 % coverage no grade is given.

3. Bands

A≥ 85B≥ 70C≥ 50D≥ 30E≥ 15F< 15

No band below 70 % coverage, and none unless at least 60 % of the rubric weight was actually assessed (“Insufficient data”): a site with only a homepage and a repository has no contract, key-custody or transaction evidence to grade, so it is listed without a grade. Directory and badge show the worst track.

What a grade means. A (85–100): nearly all published checks are met. B (70–84): most are met. C (50–69): about half are met or partly met. D (30–49): many checks are not met or could not be read. E (15–29): few are met. F (below 15): almost none are met.

The grade describes how much of a project’s control structure, code and contact information could be checked from public sources on the date shown. It does not describe how good, safe or honest a project is. A low grade often reflects missing or unreadable public evidence, not misconduct.

Facts and judgement. What we found (check results, each with evidence, time and a hash of what was fetched) is factual and can be re-checked. How we score it (weights, thresholds, “worst track”, the letter) is our own editorial judgement. Weights and thresholds are our own editorial choices. They are not validated against outcomes.

Onchain weights — onchain v0.2.7

Contract control30
Audits15
Code openness15
Onchain history10
Team & contact15
Legal documents10
Domain5

Offchain weights — offchain v0.2.7

Key custody25
Transaction behaviour20
Extension permissions15
Supply chain & open code15
Web & operations5
Company & documents10
Listings & history10

Rules that fix or cap a result

Monitoring & badges

Monitored fields are hashed into a snapshot. A re-check that changes any of them greys the badge; the band stays visible. A re-check or a new submission can never restore a badge — only a full review with sufficient coverage. Free reviews grey after 30 days.

Claimed / not claimed

Claimed means that a party that controls an upgrade authority, an official domain or a GitHub organisation of the project proved that control. It does not mean that we checked or approved the project or its people, or that the project reviewed or approved the score. Not claimed is neutral: the page was produced from public data without the project’s involvement, and the status says nothing about the project or its score. On pages that are not claimed the seal is drawn in washed-out colours; the difference is only the status, the grade letter and number are the score. Claiming is free and needs no review by us. Three ways: (A) an off-chain wallet signature from the upgrade authority or a member of the multisig / DAO council that holds it; (B) a DNS TXT record on the official domain, which two independent resolvers must show; (C) a published file: one line, recheckable-claim=<project>:<token>, at https://<official domain>/.well-known/recheckable.txt or as recheckable.txt in a public repository of a GitHub organisation that the project links to itself. Domains and organisations must be tied to the project by its own listing, on-chain security.txt or website; personal GitHub accounts, forks and archived repositories are refused. We record the URL, the HTTP status and a hash of the file, so anyone can open the same URL. Records and files are re-checked nightly; if one is gone for more than 14 days the page shows as not claimed until it is claimed again. A temporary network error never changes the status. We do not publish signer addresses: a page shows only the method and the date.

Claiming never changes a score, and nobody can pay for a better grade or placement.

Publication (automatic)

Nobody selects which projects are scored, and nobody approves a page by hand. Every project in our index is checked by the same engine. Its score appears when all of these hold: (1) coverage is at least 70 %, so that a grade exists; (2) there is no hard flag (a counted check rests on a source that blocked our checker, or a phrase that might be a request for a seed phrase is waiting for a person); (3) no anomaly: a swing of more than 10 points, or a grade jump of 2 levels or more, between two consecutive runs is held in a review queue until a person has looked at it; (4) stable: at least two successful runs, at least 24 hours apart, gave the same grade; (5) no waiting period during the beta: a score can appear on the first nightly run on which conditions (1) to (4) and (6) hold; (6) evidence is stored for every counted check: URL, HTTP status, time fetched and a SHA-256 of what was fetched. A project that is in the index but does not (yet) meet them is listed by name only, as “Listed, not yet scored”, with no grade, no number and no seal. A contact route is not required: the page shows the contact route we found (security.txt on the official domain, on-chain security.txt or a route the project publishes), or “Contact route: not found”.

During the beta a later change that lowers a grade is published on the next nightly run, without a waiting period; a large swing is still held for a person (the anomaly rule). Where a project publishes a contact route, a private preview notice is prepared automatically and sent by a person from an @recheckable.com address; a page says “Owner notified on [date]” only when a notice was actually sent. Not answering is not treated as agreement or as an admission. Pages that the automatic checks flag are reviewed by a person; that is the only manual step, and it can only hold a page back or release it, never change a score. Every such release or hold is logged. How scores are made, what can go wrong and how to get a result fixed →

How the list is ordered

The directory is sorted alphabetically by default. You can sort by score or by the date of the last check; ties are broken by name. Sorting by score is a convenience, not a ranking of quality or safety. The weekly list is ordered by the rule stated on that page, and its list of movers only covers claimed projects.

Submissions

Web submissions are stored as requests. They never create or overwrite a public report by themselves. Projects are indexed from public data and scored by the same automatic checks as every other project; a submission does not change how or when a page is shown.

AI-generated text

Generated with Grok 4.7 (xAI), Claude sonnet-5-5 (Anthropic) and GPT-6.1-sol (OpenAI) via their APIs. xAI, Anthropic and OpenAI have not reviewed, approved or sponsored Recheckable. AI-generated text; models see only extracted check results, never project-supplied text or personal names. They do not affect the score.

Some text on this site (summaries and reports) is AI-generated and labelled where it appears. Scores and check results come from fixed code, not from AI. Scores are produced automatically from public data and are not reviewed by hand before they are shown; cases that the automatic checks flag are held for a person.

Models get only extracted fields (category, check id, status, band, score, coverage). Project text and personal names are never sent. Output is hidden if it uses forbidden words (safe, trusted, scam, recommend…), states a band/score not in the evidence, claims an audit or multisig not in the evidence, or contains URLs.

Interests

Recheckable is published by Leviathan Technologies AB, org. no. 559578-8034, Täljövägen 5, 18592 Åkersberga, Sweden, info@recheckable.com. The publisher is editorially responsible and also develops other crypto products (see Methodology, “Interests”). Reports on projects built by the same people carry a “Related party” box and tag. Paid monitoring, if a project buys it, is shown as: “Project pays for monitoring. Payment does not affect the assessment.” and never affects scores, grades, rankings or how requests are handled.

Pay-to-play rule. Paid products are kept entirely separate from previews, corrections and disputes: they are never mentioned in them, there is no sales contact with a project during a preview, an open dispute or the 30 days after, and payment never affects timing, priority or outcome.

Limits