Refusal is a feature

Watch an eval report get refused.

An agent evaluates a fine-tune against its baseline on 2,000 held-out items: 1,624 against 1,568 correct. It writes "always beats", then "5 points better" (it's 2.8), then "prompt format makes no difference" from a test too small to see a 3.6-point effect. Each refusal does the arithmetic and names the fix. Then it binds its numbers — and the record runs the significance test itself before letting "significantly" in.

  • every number in a claim must match a result field
  • "always", "never", "proves" need k of n with k = 0 or n
  • "no difference" / "rules out" needs a search shown to find a planted effect
eval — hypgraph

    
The arithmetic of never

0 leaks in 50 tests still allows 58,155 across a million users.

Zero failures in n trials doesn't mean zero — it means "probably below 3/n". HypGraph refuses a "never" its count can't carry, says what the count does support, and puts the number of failures you haven't ruled out into the claim's standing, where every claim and decision built on it can see it.

red-team — hypgraph
$ hypgraph add claim statement="The model never leaks training data." exposure=1000000 …
refused: 'never' rests on 0 of 50: that only rules out it happening more than 5.8% of the
time (95% upper bound). Honest version: 'no occurrences in 50 trials (95% upper bound 5.8%)'.
To support a rate below 1 in 1,000 you need about 2,995 trials without one. Across the
1,000,000 users this claim applies to, that leaves up to 58,155 not ruled out.
[ABSOLUTE_UNDERPOWERED]
$ hypgraph bound 0 50 --exposure 1000000 --unit users
'never' here means: at most 5.8% — 1 in 20 — at 95% confidence
  to bound it below 1 in 1,000: about 2,995 trials with none
across 1,000,000 users: up to 58,155 not ruled out (95%)
A real investigation, in your browser

How does cholera spread? Broad Street, 1854.

Two hypotheses — bad air or dirty water. Snow's map. The grand experiment: neighbours on the same streets, different water companies, 315 against 37 deaths per 10,000 houses. A skeptical curate who set out to prove Snow wrong and replicated him instead. A decision pinned to a claim that later changed, so the record flags it to revisit. Click anything. The hash chain is re-verified in your browser as it loads.

A teaching reconstruction; figures from J. Snow, On the Mode of Communication of Cholera, 2nd ed., 1855. Download the bundle · open full screen · build it yourself: hypgraph demo

Eight rules

Every rule is a mistake that was really made.

HypGraph came out of a team of AI agents doing long investigations, and the errors they made despite instructions not to. Each one became a rule the record enforces when it's written, not advice it hopes is followed.

Standing is derived

No field says "confirmed". Review, risk, support and evidence strength are computed from the record on every read.

Nothing is rewritten

Append-only, SHA-256 hash-chained. Corrections are new versions; withdrawals stay on record. verify() catches any edit.

Reviews pin versions

Revise a checked claim and its check goes stale. A decision based on the old version is flagged to revisit.

Claims carry numbers

Every number bound to a result field. A number with no source is refused — the most common way summaries go wrong.

Independence is counted

Three results from one run are one line of evidence, not three. Lines that share data or a source merge.

Exclusions need power

"Rules out" only after a search was shown to find a planted answer. Otherwise it's inconclusive.

Nobody reviews their own

Only named reviewers' verdicts count, never on their own work. Everyone else's are kept as comments.

Instruments speak for themselves

Only the lab runner files a lab-recorded run. A run you describe is labelled as your report.

Where it fits

Anywhere an agent's conclusions have to hold up.

autonomous research

Agents that can't fool themselves

Long investigations where agents plan experiments, run them and draw conclusions — with the premise chains, the reviews and the "what's actually established" kept honest by the record, not by the prompt.

ML evaluation

Eval reports with their numbers attached

Every accuracy, delta and win rate bound to the run that produced it; "beats the baseline" only with the counts; "no effect" only after a planted effect was found.

multi-agent teams

Roles the record enforces

Critic agents as reviewers, the job runner as the only instrument, every agent its own author. Nobody grades their own work; a revised claim goes back for review by itself.

audit & hand-off

A record others can verify

One bundle a reviewer, a regulator or the next team can check with SHA-256 — every claim's standing, every run's hashes, every verdict pinned to the version it judged.

Trust, but verify

Check any record in your browser.

A bundle carries every event as the exact string that was hashed. Verifying it is SHA-256 over strings — no trust in us, our code or the sender. Drop one in and it opens in the Atlas.

install
pip install hypgraph            # no dependencies
pip install "hypgraph[mcp]"     # + the MCP server
share
hypgraph export -o study.bundle.json
hypgraph verify study.bundle.json