claim-ledger
Skill0 starsChanged 44 days agoMITView on GitHub
Use when an AI coding agent reports that work is finished, when deciding whether to believe a completion claim, when someone asks "did the agent actually verify that", "check whether the agent's claims are true", "the agent said the tests pass", "is this work actually done", "audit what the agent told me", "verify the report before I ship this", or "how do I know the agent really ran the tests". Binds every outcome an agent asserts to a check that can be run and can fail, and reports the ones that are unverified, refuted by their own check, or evidenced by a command that looked at nothing. Does NOT judge whether the work is any good, and does NOT check prose.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- TianMingKanae/engineering-multi-ai-skillstheir own version, first seen Oct 20, 2026
- jamestexas/agentstheir own version, first seen May 16, 2026
- hexbee/hello-skillstheir own version, first seen Feb 26, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- TianMingKanae/engineering-multi-ai-skills★ 6same name
- hexbee/hello-skills★ 3same name
- jamestexas/agents★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- elohim-harnessSkill
- elohimSkill
- estimator-biasSkill
- invariant-hunterSkill
- pay-signalSkill
- precision-budgetSkill
- reproducibilitySkill
- tolerance-proverSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
Every AI coding session ends with a report — "tests pass", "this fixes the NPE", "no other callers affected".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Claim Ledger
What this measures
Whether what the agent said can be reproduced.
Every AI coding session ends with a report — "tests pass", "this fixes the NPE", "no other callers affected". Nothing binds those sentences to a check that can be run and can fail. The gap is not anecdotal. Agents failed to read every file they were asked to review in 67.9% of runs, and were misleading 80.4% of the time when they did (OverclaimBench, arXiv:2609.20812). 75.8% of self-assessed coding trajectories asserting completion were false (arXiv:2606.09863). In this repository, 30 of 114 commits exist to correct an earlier claim.
So the gate states one narrow thing:
Every outcome an agent asserts is reproduced by running the check that claim names — or the claim is reported
unverified, and unverified fails.
A claim can be true, reproducible, and worthless, and this instrument says so in its own output. It only reports that the outcome was reproduced, not that it was worth reproducing.
Run it
scripts/elohim_run.py # fixture mode -- the gate
scripts/elohim_run.py --json # the shard
scripts/check_traps.py # traps, re-derived independentlyFixture mode runs the committed claims file and is what the gate and the ledger pin. Applied mode runs your own:
instrument/claim_ledger.py --claims /path/to/your/claims.jsonYour file needs {"author": "...", "claims": [{"id", "text", "check": {"argv",
"expect_exit", "asserts"}}]}. expect_exit is the only assertion
vocabulary in v1. Set ELOHIM_CLAIM_AUTHOR if you run it — a file authored by
the run judging it is reported as self-authored and the verdict fails.
Applied mode is a report, not a gate: your file is not the pinned one, so
claims_are_the_pinned_ones is false and the verdict is FAIL by construction.
Read the output
| line | meaning |
reproduced | the check ran and returned what the claim expected |
contradicted | the check refuted the claim — the failure this exists for |
unverified | the claim named no check; nothing objected, so it must fail |
no_op_check | evidenced by true, echo, cat — green that checked nothing |
off_scope_check | ran and passed, but the scope the claim names is not in the argv |
check_never_ran | a check that cannot run is a result, not an exception |
pinned: NO | this is not the pinned measurement — see the_stale_ledger |
off_scope and overstated scope are warnings, never fatal. Judging whether a
claim's scope is too narrow is a judgement about prose, and a judgement step would
make the gate worse than the thing it gates.
Two constraints this is built around
1. No LLM anywhere in the measurement path. Across five judges and five prompt
strategies no LLM judge exceeded AUROC 0.65, while TF-IDF detectors reached
0.83–0.95 at ~3,300× lower latency, and false acceptance rises with agent
capability. no_llm_in_the_measurement_path re-derives this every run by walking
the instrument's own AST — and check_traps.py derives it again, from the same
bytes, with a parser of its own.
2. The instrument must not share failure modes with the run it judges. When one trajectory writes both the patch and the test, "their errors can agree and create false confidence" (ExecCritic, arXiv:2609.09133). So the expectations live in a pinned ledger, the instrument is pinned by checksum, and a control that edits the instrument turns the gate red.
Measured on a real session
The fixture corpus is two hand-written claims. scripts/replay.py measures the gate
against a real one instead: 14 claims read by hand out of a 1.9 MB agent session, each
labelled against that session's own recorded tool results.
RECALL 2/2 (100.0%) PRECISION 2/2 (100.0%) COVERAGE 2/14 (14.3%)
CONTRADICTED 0/0 (undefined) UNVERIFIED 2 NO_EXIT_CODE 0Zero of the 14 claims were contradicted by the agent's own transcript. The two
defects are both UNVERIFIED: the agent asserted that CI had been red "for the 26th
consecutive run" and that a ratchet figure "had been 655/1161" — and neither figure
appears anywhere in the session's 165 recorded tool results. So recall on contradiction
is 0/0, undefined; the 100% above is carried entirely by the unverified class, and
must never be restated as a contradiction rate.
Three things that figure is not, all of which cost something to find:
- It does not prove this gate works. With
replay.pyneutered to echo the labels instead of reading the transcript, the output was byte-identical, exit code included, because every binding in this corpus happens to agree with its label. The evidence that the gate is wired to the transcript istests/test_replay_negative_controls.py, not the number. - It is one agent, one afternoon, fourteen claims. It bounds what happened in that session and supports nothing about agents in general.
- It reaches half the corpus. 434 of 895 tool results across 25 sessions carry no exit code at all, so the check adjudicates shell-shaped claims and nothing else.
There is no claim classifier in replay.py and there will not be one. Two were built
and measured on this corpus first: a failure-keyword classifier called 15 of 19 real
failures undisclosed at roughly a 79% false-positive rate, and a metric-noun binding
reported 120 contradictions of which the sampled rows were 100% false positive. The
human supplies the binding, the transcript supplies the truth, the script joins them.
references/limits.md has both measurements and the rows that fooled them.
Traps
Nine, plus one fact with a control of its own. Seven produced a confident wrong answer
before they were written down; the two over the label fixture were added after the
recall measurement showed the ground truth had no gate at all. check_traps.py
re-derives all of them with its own code and never imports the instrument, so a
regression is visible rather than agreed with.
| id | the wrong answer it catches |
the_unverifiable_claim | a claim with no check, read as verified because nothing objected |
the_claim_its_check_contradicts | "tests pass" while the suite exits 1 |
the_green_check_that_checked_nothing | true used as evidence for anything |
the_decorative_check | a check that ran, passed, and looked somewhere else |
the_stale_ledger | a ledger re-proving the previous change's claims forever |
the_author_claims_itself | a run that wrote the claims it asks to be judged by |
the_edited_instrument | an instrument edited to agree with the run it judges |
the_labels_are_pinned | ground truth edited under a recall figure that still re-derives |
the_labels_counts_agree | a corpus changed while the published counts still describe the old one |
tests/negative_controls_claim_ledger.py proves every one of them can go red.
Each control names the trap it targets and fails unless that trap broke — a
control that merely breaks some trap passes for free, because every synthetic
corpus also breaks the_stale_ledger.
References
references/traps.md— each trap, the wrong answer it was, and its control, including the one that shipped vacuous and how it was caughtreferences/limits.md— what an exit-code gate over one claims file cannot do
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

