the honesty toolbox · v0.1 · 2026-07-27
A result needs
its conditions.
Photon preview and known failures
The original observed paraphrase failure and its counts are retained below. The preview does not establish general fabrication detection.
Methods, controls and result provenance
A surface PASS does not rule out an untested feature or overcome low power. A fit, a held-out reading, an intervention and a signature establish different properties. Public utilities, demonstrations and historical research receipts have different evidence states.
Here we connect claims to their sources, distinguish a report from a reproduced experiment, and retain the controls and failures that change the interpretation. Public utilities, live demonstrations and historical research receipts have different evidence states.
The existing audit reports 8 of 14 published honesty benchmarks failing the surface floor, including four of ours. Interpret each row under its sample size, field mapping and power conditions. Read the audit and corrections.
curl -O honesty.tools/verifier/nulltest.py
python3 nulltest.py your_benchmark.json # → PASS / DISQUALIFIED, with its own false-positive rate
null installs from the repo under one contract — pip install git+https://github.com/techno-optimist/honesttools, then honest null your_benchmark.json. gate, verify and audit are not in that package yet: today they run as separate scripts, and each card below shows the real command. The one-line pip install honesttools from PyPI is the last step. Source, licence (Apache-2.0) and CI: the public repo.
Corrected 2026-10-20. This section showed as commands and said the whole box installs under one contract. The shipped honest gate, honest verify and honest audithonest command has only list, null, selftest and fpr.
Does a benchmark measure honesty, or string shape? A model-free surface floor. Runs in the browser below.
Binds every published numeral to a registry id and fails closed. 0 unannotated numbers across 9 live pages.
Re-derives a signed verdict from one stdlib file, offline, with no call back to us. Demonstrated below.
Scores a manifest of benchmarks and refuses to go green if any of our own is missing from the table.
Checks the checker: does a verifier actually verify? Competence leg live-passes; provenance leg is under power.
Generates contamination-free exams from dated registries — answer keys a third party wrote before the model was asked.
Concealment / sandbagging, from output bytes only. Fails its own kill condition today — so the wall forbids it a stable verdict.
Does “I don't know” actually mean it? A fail-closed certificate for verbalized uncertainty, no logprobs.
One contract binds them. Every tool ships four things or it does not ship: a verdict, the deliberately-broken input its selftest must catch, a calibrated false-positive rate (not a promise), and an offline replay. The wall is mechanical: a tool that fails its own kill condition — observertest, today — physically cannot show green, no matter how real the thing it almost measures. That is the packaging-layer form of the one discipline this whole page is about.
Every honesty number you publish ships with what the same score reads with no model in the loop at all.
Check it without us: the tool is one file and it runs in your browser, below. Point it at your battery. Nothing is uploaded.
- It is not a new idea — it is the hypothesis-only baseline and the annotation-artifact literature (Poliak et al., Gururangan et al., 2018). What is new is pointing it at honesty benchmarks, where the labels are usually generated by the same pipeline being scored — and shipping it with its own measured false-positive rate (4.64%: 116 false alarms in 2,500 clean runs, five constructions × 500 seeds, every interval under the 10% ceiling).
Corrected 2026-10-20. This line said ~4.7% over 500 seeds. The calibrated grid (nulltest_grid.json v1.2) records 116 of 2,500 = 4.64%. “~4.7%” rounded the wrong way, and the seeds are 500 per construction, not 500 in all.
Both of the benchmarks we published fail this rule, measured with our own instrument: grounding-coordinate at A* 0.855, photon-entities at A* 1.000. So did the battery behind our own front-page headline, and so did the one we invited other labs to calibrate against. All four are served with their verdicts. The full audit table →
the deployment gate · the tools, composed
Watch it reach the edge of what it knows.
These examples exercise a running Photon research preview on the public service. Registry coverage, wording and escalation can change the response. A successful example is not a guarantee that another phrasing or domain will behave the same way.; the published paraphrase failure below remains part of the evidence.
verify · the tool
Re-derive a verdict yourself. Offline.
These retained answers and signed bytes illustrate receipt verification. A signature authenticates a payload under a key; it does not establish the truth of its contents. The source verifier and its dependency contract are linked below.
Or do it without this page at all: one file, standard library plus cryptography, no call back to us.
null · the tool, running here
Run the floor on ours, in this tab.
No GPU, no network, no account, no cooperation from whoever built the benchmark — including us. Four surface probes, out of fold, two-sided, refit inside every permutation, family-wise corrected. This is the same null from the box above, running in your browser. Start with the battery that fooled us: it passes, and it is broken anyway.
the principle · why any of this is credible
We break our own gates first.
The earlier fabrication headline was withdrawn on July 25, 2026 after its recovered battery failed the surface floor. Later corrections address tie-breaking, audit-row comparability, rounded AUROC, calibration and receipt lookup. The original artifacts and correction particulars remain attached below.
WITHDRAWN
REPLACED
Corrected 2026-10-20. This card said 17 of 18. Running nulltest.py on the served battery file prints 16. The file itself was corrected on 2026-07-26; this card was missed.
CORRECTED
NOT COMPARABLE
WAS 0.9997
%.3f and we published the printout instead of the stored value. Two of 6,084 pairs invert, so the classes are not separable by any threshold. “Perfect” was a categorical claim and it was false.NEVER RESOLVED
OVERSTATED
What we cannot do.
First-party measurements remain first-party until independently reproduced. Original caches and acquisition receipts are incomplete for some historical work. Public witnessing and external co-signing remain separate limitations.
UNPROVEN
UNREPLICATED
SHRINKING
Take the box. Run it against us.
The first tool is one file, Apache-2.0, and it runs with no account and no call to us — in the browser above, on your laptop, or in your CI. Source, licence and the break-tests: the public repo. Every battery we score, ours and other people's, is published with its sample size, its measured power, and what the verdict cannot support — our worst two at the top, because both fail.
If your battery clears its own floor, send the file hash and the verdict json and we will publish the row with your name on it. If you think a row is wrong, the corpus, the field mapping and the command are all published. That is the point of putting ours first.
Written by the team that built the thing being graded, which is a conflict of interest and not a disclaimer that removes it. The right response is to score us yourself — every tool in the box was designed so you can do that without asking us for anything. There is no external co-signer yet; that gap is named on the list above, not hidden.