Documentation menu

Get verified

A published BetterBench page is self-reported: anyone with a key can publish any numbers. A Launch80 verifier can stamp it verified, meaning a complete cold-cache run described well enough to reproduce, and, when they chose to, reproduced.

What verified means

Three roles, all ordinary publish keys:

rolecan
PublisherThe key that published the page asks for verification and follows the decision.
Any other keySees the request in its queue, opens it, and can reproduce the run on its own hardware.
VerifierA key Launch80 marked as a verifier stamps the page verified or rejects it. Reproducing first is optional; when they did, the comparison goes with the stamp.
  • bench.betterbench.v1 pages are eligible, and from L80 1.2 scan.pwdet.v1 pages (pwdet scans). A scan published as generic.report.v1 carries no report to re-run; publish it again with L80 pwdet publish.
  • A scan is verified by re-running it: L80 verify reproduce <id> runs pwdet reproduce on the same Hub files at the same commits. A verifier can stamp it only with a re-run that matches (E_REPRODUCTION_REQUIRED otherwise); there are no tolerances to accept.
  • A key never sees its own requests in the queue and may never decide on them.
  • Quick runs (--quick, or anything under 20 passes) can be verified. The reviewer sees a full_run warning and the badge reads “Verified by Launch80 · quick run”. L80 1.0's own verify check still fails a quick run, so send the request with --skip-checks.
  • Pages stay immutable. Verification changes the badge, never the stored payload. A run that needs fixing is published again and the new page is verified.

Tiers and badges

tiermeaningbadge on the page
unverifiedThe default for every page.Self-reported — not verified by launch80
pendingA request is open.Self-reported — verification requested
verifiedA verifier stamped it.Verified by Launch80 · <date>, with "quick run" for a run under 20 passes and "· reproduced" when the stamp carried a reproduction. A scan reads "Verified by Launch80 · <Level> scan reproduced · <date>", linked to the reproduction on the page
rejectedA verifier declined it, or the server checks failed. The reason goes to the publisher only.Same as unverified

L80 history --tier verified lists your verified pages. When results are exported to the AwesomeList catalog, verified maps to maintainer_verified and every other tier to author_reported.

Publisher1. Check the run

$ L80 verify check results.json        # exit 0 if the run qualifies, 4 if not$ L80 verify check <page url>          # the same, plus provenance from your local ledger

The CLI runs the same checks the server applies, plus one only it can: provenance, that the page was published from this machine from a file that has not changed since. It works with no token and no network.

Publisher2. Request review

$ L80 verify request <page url> --note "vLLM 0.9.3, --max-model-len 32768, launch command in the README of …"$ L80 verify status <page url>$ L80 verify mine                       # your requests and their decisions

Only the key that published the page can ask. The note is for the reviewer: the engine version and launch flags, or a link to a recipe. The request carries your local checks and the hashes from ~/.config/L80/history.jsonl; the server recomputes every check from the stored page and never trusts the client's results alone.

  • Passes: the page turns pending and the request joins the queue.
  • Fails a server check: the attempt is recorded and closed at once, the page stays unverified, and the CLI prints which checks failed (E_VERIFY_INELIGIBLE). Fix the run, publish again, request again.
  • A page with an open request answers E_VERIFY_EXISTS. Ten requests per key per day.

A rejection's reason is shown to you through verify status and verify mine; a rejected page reads like an unverified one to everyone else.

Any key3. Anyone can reproduce

$ L80 verify queue                       # other keys’ requests, oldest first$ L80 verify show <id>                   # model, engine, hardware, settings, published figures$ L80 verify reproduce <id> --endpoint http://127.0.0.1:8000/v1

The queue is open to every valid key so the community can check runs. It shows each requester's label, never their key. reproduce reads the published results file (GET /api/v1/artifacts/<guid>/payload), reruns BetterBench with the same model, notes and settings against your endpoint, and compares the headline figures:

metrictolerance
Combined decode±10%
ITL 1% low±15%
TTFT p50±25%
Peak aggregate (concurrency)±15%
Prefill±20%

Verifier keys4. A verifier decides

$ L80 verify approve <id> --note "matched on 1x RTX 4090"$ L80 verify reject <id> --reason "TTFT is 3x what this hardware does"

Verifier keys A verifier may stamp on review alone. When they reproduced the run, the comparison goes with the stamp and the badge adds “reproduced”. A reproduction outside tolerance needs --accept-differences and a note. A rejection always needs a reason, which the publisher sees. Once decided, a request is closed (E_VERIFY_CLOSED).

A suggested review:

  • the numbers are plausible for the stated hardware and engine;
  • the engine version and launch flags are stated, in the note or a linked recipe;
  • there is no sign of a warm cache or batching games;
  • for headline claims, reproduce on matching hardware.

The checks

The server recomputes these from the stored page, so a modified client cannot talk its way past them. A fail makes the page ineligible; a warning is shown to the reviewer.

checkfails whenwarns when
full_runThe file does not record how many passes ran.A quick run: fewer than 20 measured passes per category, or no warmup. It can be verified, and its badge says quick run.
phasesSingle-stream, prefill or concurrency is missing.—
cold_cacheThe run asked for a warm cache (unique_nonce false), or any request reports cached_tokens > 0.No request reported cached_tokens, so a cold cache cannot be confirmed.
requestsMore than 2% of single-stream requests failed.Any single-stream or concurrency request failed.
truncation—Any run stopped at max_tokens.
versionbetterbench_version missing or older than 0.6.1, the first that records cached_tokens.Newer than 0.6.1, the newest this server has been checked against.
notesNo engine note, or no hardware: neither --note hardware=… nor a GPU BetterBench detected.—
sample_gate—Some percentiles rest on too few samples. Normal: a TTFT p99 from 20 passes always is.
provenancebody_sha256 or content_hash from the publisher's ledger does not match what the server stored.Either side has no hash (an older L80, or a page published before bodies were stored).

Any pwdet scan (scan.pwdet.v1) can be verified. Its checks, recomputed from the stored report, only warn the reviewer about how easily the scan can be re-run; the stamp itself needs a re-run that matches. L80's own verify check still fails some of these, so send the request with --skip-checks.

checkfails whenwarns when
report—The report is not schema 2 (pwdet 0.2+), or records no inputs or digest to compare a re-run against.
level—No assurance level, or Basic: it compares nothing against a reference.
subject—The scanned model is a local folder or an endpoint; a verifier re-runs it from their own copy.
references—A parent or base reference is a local folder.
files—Some of the model's files were not hashed; a re-run compares their sizes only.
verdict—The report has no verdict, or it is inconclusive.
provenancebody_sha256 or content_hash from the publisher's ledger does not match what the server stored.Either side has no hash.

In the console

L80 tui has a Verify screen with other keys' requests: p reproduces, and verifiers stamp with a or reject with x. The History screen's v requests verification for the selected page.