The sealed exam.
Sealed exam
A benchmark you can prove is fresh.
BitGraph A binds a request naming a public question bank. Twenty questions are derived from A’s nonce, unseen until A is bound, so no training set frozen before A can contain them. The model answers, and the answer sheet is bound as BitGraph B, after A in the same sequence. Anyone checks the whole sitting offline, with nothing but Node.
The results
These exact questions could not have existed before BitGraph #14 was bound.
Claude Haiku 4.5 scored 14/20 on 24 October 2026. BitGraph #14 was bound at 20:14:24 UTC and BitGraph #18 at 20:14:43 UTC, by the AWS Nitro attestation’s signed clock; a Base transaction in block 53,041,769 (20:14:45 UTC) carries B, so the answers existed by then. The bank is small and easy on purpose: this is about freshness, not difficulty.
The answers are bound at B.
The claim
What it proves, and what it does not.
- Provesevery question is derived from BitGraph A’s nonce, which the enclave drew and bound in one atomic action and nobody could see before A existed, so the exact questions did not exist before A, and no training set frozen before A was bound contains them; A’s request named the bank, so the bank was fixed before that nonce; BitGraph B bound the answer sheet, which names the paper and A, at a later count in the same epoch; both proofs carry an AWS Nitro attestation of a published BitGraph enclave image; where B’s Base ceiling is in the folder, the answers existed by that block.
- Does not provethat the template families are unfamiliar to the model; that the model worked alone, without tools, or quickly; that the answers came from the model the sheet names.
Check it
Three commands, no network.
Unzip the package (11.2 MB; Node 22.13 or later). Everything it needs is inside it, and the verifier runs in a process where fetch and sockets throw, so turning the wifi off first is a fair test.
node verifier/demo.mjs node verifier/exam.mjs verify demo/claude-haiku-4-5.exam node verifier/exam.mjs selftest
The answers are ACCEPT, REJECT (naming what disagrees) or NO-EVIDENCE (something is not in hand). The package carries nine fixtures that should fail, among them a proof re-signed with a laptop key that a signature check alone passes. The earlier sittings, from September and October 2026, are in archive/ and still verify. The zip’s SHA-256:
e99d692e33c3dc2171f07b365be89cc57fa844de67e29115f654d3be964ac57a
To run a sitting of your own, with your own API key:
npx @mikeargento/exam-cli run --provider anthropic --model <id> --name mine