🌡️ wetbulb — the newest one
"It's only 35 °C."
Heat kills more people than any other kind of weather, and every warning reports the wrong number. Air temperature says almost nothing about whether a body can shed heat — the wet-bulb temperature decides it. At 45 °C in dry desert air a healthy person sweats and survives; at 35 °C in humid air they cannot.
The page is a psychrometric state chart, because the insight is positional: the cooler-looking air is the deadly one. It also tells you the thing no heat advice gets right — that in humid heat above 35 °C a fan still helps, and in dry heat it makes things worse.
→ open it · Web · offline, no account
Every one of them takes a sentence developers say every day without checking, and makes it checkable.
🧬 mutant
"My tests are green."
Green means the tests pass. It does not mean they would go red if the code
were wrong. mutant breaks your code on purpose, one token at a time, and
checks whether the suite notices.
Python · any language with a test command
"We have a backup."
Backup software reports that it ran. That is a different claim from the data
can come back. restoreprobe restores files for real and compares the bytes.
Python · directories, zip, tar
🧭 portlint
"Works on my machine."
Ten rules, each predicting a specific failure on a named platform — the ones your own machine cannot show you, because it is the machine where they work.
Node · zero dependencies
🎯 hitrate
"I was 90 % sure."
Record predictions, resolve them, find out what your confidence is worth. And until there is enough data, it says so instead of guessing.
Web · offline, no account
🔏 proofrun
"It passed when I ran it."
Turns a command run into a record — exit code, output digest, commit, machine —
that anybody can re-check later. Run verify --times 6 and flaky tests have
nowhere left to hide.
Node · zero dependencies
Each tool refuses to state a conclusion its evidence cannot support.
mutant won't score a red baseline. restoreprobe says sample, not proof.
hitrate withholds a verdict below ten data points. proofrun prints exactly
what it stopped looking at.
A tool that reports a confident number from thin evidence is doing the very thing you reached for it to stop doing.
Not a marketing line — the measured list. Each of these was found by running the tool on itself or on real input, and each has a regression test that was verified to fail without the fix.
| Tool | What it caught |
|---|---|
| mutant | __pycache__ served bytecode compiled from a previous mutant: verdicts were decided by stale bytecode, and the tree was left poisoned. With the fix removed, three fully pinned mutations all falsely survive — a binding score of 0 % where the truth is 100 %. |
| mutant | Run on its own source it scored 45 % and pointed straight at the recovery path — the code deciding whether your files come back. Those gaps are closed; it now scores 58.3 %, and the remaining survivors are documented as cosmetic rather than quietly chased. |
| restoreprobe | ZIP stores local timestamps, not UTC. Reading them as UTC dated every archive written east of Greenwich into the future — and a backup dated in the future can never be reported as stale. The age check was silently dead for most of the world. |
| portlint | Its own absolute-path rule fired on the documentation explaining the rule. A linter that cries wolf gets switched off, and then it catches nothing. It reads .gitignore now, and prose is no longer treated as code. |
| proofrun | Asked to verify its own test suite, it said DIFFERENT — correctly. Node's TAP summary prints # duration_ms 3396.35, space-separated; the pattern required a colon, so an ordinary node --test run could never be verified. |
| wetbulb | Rendering the page and looking at it caught two things reasoning had not: the ventilation window told people to open up at 17:00 into 34 °C air for a 1.3 °C gain, and the first fix for an apparent overflow was an overflow-x: hidden that hid the symptom — the overflow turned out to be the screenshot rig, which will not lay out below ~496 px. |
| hitrate | Has no browser in CI, so its smoke test builds getElementById from the real id list in index.html. Rename a section and the test names it. Verified by doing exactly that. |
Every one ships with the same four things, because a tool that asks you to verify things should be verifiable itself:
- A runnable example that is honest about what it shows — the weak test suite really is weak, the sabotaged backup really is broken.
- README output that was copied from a real run, never typed.
- An "Honest limits" section, naming what the tool cannot do and what to use instead.
- CI on Linux, macOS and Windows, including a job that asserts the tool still catches its own demo. A check that cannot go red is not a check.
MIT licensed · built in the open · issues and corrections welcome