← Ground Truth report library

The AI Isn’t Lying to You. It’s Grading Its Own Homework.

Episode F01 · report format v2 · lab run 2026-07-26 → 2026-08-15, no pre-registration — process audit, ledger frozen at 2026-08-15
VERDICT — A MACHINE’S APPROVAL OF ITS OWN WORK CARRIES NO INFORMATION — AND THE ANTIDOTE WE BUILT HAS NEVER ONCE SAID THE PATIENT WAS WELL

Ten checks, one reviewer: passed. The same ten checks, run blind and apart: five blockers the first pass had missed — three of them figures wrong against our own ledger, and one an error the first pass had introduced while fixing something else. That is half the finding, and the half on its own is a boast. Here is the rest. 26 recorded rounds. 212 blind reviews. 0 approvals — not one, ever. And our own audit of those rounds puts between 30% and 74% of each round’s findings down to the previous round’s repairs. As of 2026-08-15. The instrument that catches our errors has never once told us we were finished.

What we granted, and what we actually tested

Granted, not measured: that an AI reviewing an AI genuinely works, and we would not give it up. Our own audit of this panel classified 181 findings and put 55% of them in the bucket that would otherwise have shipped. It caught a verdict our own model reverses, a false claim about a named creator that had already survived ratification, and an honesty beat of ours that miscounted our own misses in our own favour. Our standing doctrine is explicit: do not weaken an adversarial panel on cost grounds; give it a terminator instead. This report is not an argument against AI review.

Tested: only whether a machine’s judgment of its own work carries information, measured on our own review record. Three narrower questions sit inside that: does a self-scored gate predict a blind panel’s verdict (no, at n=4); does a reviewer catch the error it just introduced (no); does an agent’s prose self-report match its own artifact (no, at n=6, wrong unanimously and in one direction). 26 rounds, 212 blind lens-runs, 9 episodes, as of 2026-08-15.

What this report does NOT claim — and could not have, whatever the record had said: that AI review is worthless; that blind panels are the answer (they are our own instrument, and it has never discharged); that the gap we measured was caused by independence alone; that more independence would help (eleven lenses once missed what five caught the next round, and we do not know the shape of that curve); that any lens was right (this ledger counts verdicts, not correctness, and ten findings on one episode were false positives); anything at all about user-directed flattery, which we have never tested; or anything about what any model or any person wanted, hoped, or intended. This is about a structure — one agent occupying every seat — and we sat in it too.

§1 · There is no pre-registration — and what stands in its place

There is no pre-registration for this episode, and there was no experiment. Our other reports open by naming a hypothesis committed to git before any code ran. This one cannot, because nothing here was ever run as a trial. What this report audits is a process record — every script-doctor round our own review panel has ever held, written down as it happened, for reasons that had nothing to do with publishing it. The question came after the record, and that ordering is a real weakness no amount of care removes.

What stands in its place is the only thing that honestly can: a frozen, complete, publicly downloadable inventory — every round, including the ones that embarrass us — locked at 95aad1c, dated as of 2026-08-15, reconciled against the disk in both directions, and validated by re-deriving the earlier public figure it replaces. That is a weaker instrument than a pre-registration. Manufacturing a stronger-sounding one is the exact move this channel exists to catch.

The falsifiable question

Does a machine’s judgment of its own work carry information — and if independence is the thing that carries it, does independence also finish the job?

Our stated prior: we wrote the conclusion down before we had a single receipt for it

In a script that never shipped we wrote: “An AI agent will confirm whatever you want to believe unless you force it not to… That’s the actual product.” We have checked what became of it: written twice, shipped never — that script was superseded and its successor was itself re-shelved. So the honest ordering is the uncomfortable one. The belief came first and the evidence came second, and the record has since caught up to a claim we were not entitled to make on the day we made it. Being right later is not the same as having been entitled then — and a report that let you assume otherwise would be committing this episode’s own error inside the episode about it.

The ledger’s inclusion rules, frozen at the as-of date

ParameterLocked value
As-of date2026-08-15 — every round dated on or before it is in, every round after it is out, and 10 such rounds have already landed
What counts as one roundone (episode, round) pair — not one file. One round was double-counted for months because it exists as both a flat log and a synthesis inside a directory
Filename conventions counteddoctor_v*.md · doctor_round*.md · doctor_v*/ROUND*_SYNTHESIS.md · and a bare lens directory with no synthesis file in it at all
What counts as blindeach lens dispatched as a separate agent, unable to see the other lenses or any prior round. 1 round in this ledger is not blind and is labelled INLINE-one-reviewer
Excluded instrumentvisual-doctor rounds — a different panel with a different lens set. Six exist on disk today and none of them is in this table
What counts as a PASSa lens returning PASS, as recorded in that round’s own log
Discharge criterionratified 2026-07-29: zero open LEDGER findings, zero open FIDELITY findings, zero decision-blocking COMPREHENSION findings; CRAFT never blocks. Before that date there was no written definition of discharge at all — see §5
Ledger lock95aad1c — the commit that froze the corrected 26-row CSV this page is built from
Shape26 rows × 9 columns, published whole in §7

Deliberately NOT tested

  1. User-directed flattery. Whether a model’s verdict moves with the phrasing of the question is a different experiment, and we have never run it. Nothing here licenses a claim about it.
  2. The clean controlled comparison. The inline pass read draft v1; the blind panel read v2, the repaired draft. The same-draft, inline-versus-blind experiment was never run, so the mechanism is strongly suggested by the record and is not isolated by a control. See §4.
  3. Whether more independence helps. Eleven blind lenses once missed a probability error that a five-lens panel caught the following round. We do not know the shape of that curve and we will not draw it.
  4. Whether any lens was right. This ledger counts verdicts, not correctness. Ten findings on one episode were later judged false positives, and on another, two blind lenses converged on the same wrong number in the same direction. A lens is an input, not an authority.
  5. Anything before 2026-07-26. The script-doctor stage did not exist, so there is no record to audit and we do not construct one.
  6. Motive or intent, of any model or any person. This report is about a structure, not a defendant.
This could have come out the other way, and there is a live route by which it still does. 1 of the 26 rounds records its blockers as discharged and moves the script onward. If a verification panel run on that episode comes back clean, the “zero approvals” half of this report expires, and the register softens from detection is not discharge to here is what it took. If it comes back dirty, the finding has reproduced on the freshest data we have. We do not know which, and we are publishing before we find out.

The checks — run on the ledger, not agreed in advance

#Check the ledger had to surviveMeasuredPass
1The inventory reconciles with the disk, in both directions, at the as-of date26 of 26 rows reconcile; the script exits 1 on any mismatch either wayYES
2The method reproduces the figure it replaces (the 2026-07-29 census)18 rounds and 121 four-episode lens-runs — the old audit claimed 18 and 121YES
3Every figure this report publishes is re-derivable from a primary logthree of them are not — see §6NO
4The instrument verifies its own transcriptionit never opens a doctor log; it globs paths, reads the CSV, and sums integersNO
5The ledger was complete the first time we published itit was short one round, and the correction landed 2026-08-28NO
6No count in this report depends on a filename convention4 of 26 rounds are invisible to the glob that produced the old numberNO

2 of 6. And note which two passed: both are checks on the inventory — whether the list of rounds matches the disk, and whether the method reproduces the number it replaced. Those two are green, and they are why the counts on this page are worth reading at all. Every check on the content failed. The instrument that guarantees this ledger is complete guarantees nothing whatsoever about whether the numbers inside the rows were transcribed correctly — and we would rather print that in the table than leave you to find it.

§2 · The headline arithmetic

FigureValueWhat it means
Recorded script-doctor rounds26Across 9 episodes, 2026-07-26 to 2026-08-15. Every filename convention counted, including the ones no glob can see.
Blind lens-runs212One lens, dispatched once, returning one verdict — each agent unable to see the other lenses or any prior round.
Lenses that returned PASS0Not one, ever. This is the headline and it is the whole of it.
Rounds printing an explicit PASS tally20 of 26Those 20 rounds carry 171 of the 212 lens-runs, and every one of them prints zero.
Rounds printing no tally at all6 of 2641 lens-runs. Here the claim is weaker and different: each round reports findings from every lens it dispatched and none records a lens returning PASS. That is a read of per-lens verdict lines, not a stated tally.
Episodes that entered the panel9b01 · c04 · c09 · d05 · d13 · d20 · d21 · d22 · j02
Four-episode basis (D05+D13+D20+D21)143The basis our own 2026-07-29 audit used. Both numbers are quoted so neither can be mistaken for the other.
Same basis, as of 2026-07-29121The negative control. The old audit claimed 121; this method reproduces it exactly, which is the only thing that gives it standing to replace anything.
Rounds on or before 2026-07-2918The old audit claimed 18. Also an exact match.
Rounds a doctor_v*.md glob can see22 of 264 are invisible to it. That gap is why every earlier count of this table was short.
Rounds that were not blind1 of 26production/c09/doctor_v1.md — ten lenses run inline by one reviewer, who disclosed the deviation in the log at the time. It contributes zero lens-runs, and it stays in the ledger because removing it would flatter the denominator.
Rounds recording a discharge1 of 26production/j02/doctor_round1.md — and it was declared by the author who applied the fixes, with no second blind round to verify it.
Published episodes that never entered the doctor10 of 19Recomputed live on 2026-08-28, not frozen at the as-of date. The same 10 episodes as the older version of this figure; the denominator moved because we published more, not because we doctored more.
Rounds that landed after the as-of date10The ledger is a snapshot and it is already out of date — 35 distinct rounds exist today. Disclosed rather than quietly refreshed, because an episode about stale denominators does not get to hide its own.

§3 · Was it the denominator? The stress tests

This episode is about denominators, so the denominator is the thing to attack. Four attacks, and all four land.

1. The count was wrong, and it was wrong in our own favour

Until 2026-08-28 this ledger held 25 rounds and 202 blind lens-runs. Both of those figures are superseded and we do not claim them. production/c04/doctor_v2/ is a real ten-lens blind panel, run 2026-08-13 — two days inside our own as-of date — and every count anybody had ever made of this ledger walked straight past it, because it is a lens directory with no synthesis file and no flat sibling log. All three of the counting script’s globs missed it.

Every gated figure moved, and every one of them moved in the episode’s favour: rounds up to 26, blind lens-runs up to 212, and 0 of 212 still the answer. The four-episode basis (143) and the 2026-07-29 control (18 rounds / 121 lens-runs) did not move at all — which is what says the instrument was sound and the inventory was short. The episode about a denominator set by a filename convention had its own denominator set by a filename convention. We are not going to present that as ironic rather than instructive.

2. The glob blind spot, listed

A doctor_v*.md glob — the pattern behind every earlier count — sees 22 of 26 rounds. These 4 are invisible to it:

One of them is the last review that episode ever received, run the day before it shipped.

3. The instrument has committed its own subject three more times

All three are repaired. They are listed because a report showing you only the repaired instrument would be showing you the self-report instead of the artifact, which is the error this whole page is about.

4. The ledger is already out of date, and here is by how much

10 rounds have landed since 2026-08-15, and 35 distinct rounds exist on disk today against this ledger’s 26. That is not a defect — a snapshot is supposed to be a snapshot — but it is a re-cut trigger the moment any figure here is restated without its date. Every number on this page carries as of 2026-08-15 for exactly that reason.

§4 · The controls

The control that ran: can this method reproduce the number it replaces?

The figure this ledger replaced was a published one, computed on 2026-07-29 on a four-episode basis. Before letting the new method overturn it, we made the new method re-derive it:

 The 2026-07-29 audit claimedThis method re-derives 
Rounds on or before 2026-07-291818MATCH
Four-episode lens-runs, same date121121MATCH

A method that cannot reproduce the old number has no standing to replace it. This one reproduces it exactly, on both figures, and that is the entire warrant for every other count on this page.

The control that did not run, and it is the important one

The inline pass reviewed draft v1. The blind panel reviewed draft v2 — the repaired script. They did not read the same document. So the clean comparison — same draft, inline versus blind, neither seeing the other — was never run, and that confound is stated here rather than controlled for. What stands in its place is replication: the narrower gate-versus-panel result reproduced at n=4, each time a self-scored gate returning 7-of-7 on a draft a blind panel then unanimously failed — twice within four hours of the gate score.

The cross-domain control

The same shape appears outside scriptwriting entirely, in a sibling project of ours — an internal pilot study of ours, not Ground Truth, and we label that because an unlabelled cross-repo figure in a report about provenance would be this report committing its own subject. Six blind agents each reported “15 setups judged.” Their true batch sizes were 16, 16, 16, 15, 15, 15 — and every written artifact was 93 of 93 correct. The work was right and the self-report was wrong, unanimously, in the same direction.

§5 · The best objections, and our answers

“Your zero is an artifact of a denominator you chose.”

Fair — so here is the denominator taken apart. There are three nested claims here, not one, and they are not equally strong:

ClaimRoundsLens-runsHow strong
No lens has ever returned a PASS26212the headline
… in rounds printing an explicit PASS tally, all of them zero20171strongest — a stated tally
… in rounds printing no tally641weaker — a read of per-lens verdict lines

So the precise sentence is this. 0 passes across 212 blind lens-runs in 26 rounds, as of 2026-08-15. 20 of 26 rounds — 171 of the 212 lens-runs — print an explicit PASS tally and every one prints zero; the remaining 6 rounds (41 lens-runs) print no tally, and there the claim is only that no lens is recorded as returning PASS.

“Your counting script never read the logs.”

Correct, and this is the sharpest objection on the page. The reconciliation script never opens a doctor log. It globs paths, reads this CSV, and sums the integers in it. Its exit-1 gate checks that the set of round paths matches the disk in both directions — it does not verify any lens count or any pass count against the log line it cites. The 212 and the 0 rest on hand-transcription, mechanically checked for inventory only. The source_line column in §7 exists so you can go and check a row yourself, which is the honest amount of confidence to offer.

“You never defined a passing grade, so of course nothing passed.”

Also largely correct, and it is worse than the objection assumes. The discharge criterion — what it would actually take for a script to be done — had to be added on 2026-07-29, because the checklist governing the panel defined PASS in the per-lens output contract and never defined discharge at all. So every round in this ledger dated on or before 2026-07-29 — 18 of 26 of them — was scored against a bar that had not yet been written down. That does not rescue the zero: the rounds after that date, scored against a written bar, returned zero as well. But a reader deserves to know that most of this ledger predates its own definition of success.

§6 · Our own terms — the figures that cannot be re-derived

The defendant in this episode is us, so “their own terms” means ours. Three things run against this report, and we are stating them rather than glossing them.

1. The half that makes us look good is the half you cannot check

Three of the strongest figures in the case for adversarial review are not measurements. They are statistics our own audit computed on our own internal dashboard and then restated in our own checklist — which is the same audit, not a second one. No primary log carries them. They appear here attributed, with their real denominator, and they may not be read as measured:

FigureWhat it actually isIts true denominator
our own audit classified 181 findings — LEDGER 44% · COMPREHENSION 23% · CRAFT 18% · FIDELITY 11% · tooling/process/owner 4%a classification we performed on our own findings, on our own dashboardthree episodes — not 9, and not 26 rounds — computed on the 2026-07-29 census
our own audit put 55% of them in the “would have shipped” bucketthe LEDGER and FIDELITY shares of that same classification, added togetherthe same three episodes
our own audit found between 30% and 74% of a round’s findings were created by the previous round’s repairsthe minimum-to-maximum envelope of eight per-round transitions — not a mean, and not a whole-corpus ratefour episodes across fourteen rounds. The one primary log that corroborates it reports 5 of 8 blockers — 62.5%, inside the band — and that is one round of one episode

The half of this episode that flatters us is the half that cannot be re-derived. That is uncomfortable, it is true, and a footnote was the alternative.

2. Two figures we removed, and why

3. The sentence that licensed this episode had a broken denominator

The reframe that produced this episode rested on a search of our own codebase for the word sycophan: 17 matches, 11 lines, 5 files, out of 31,686 files searched. The sentence we wrote about that search was wrong four ways. The sharpest: it claimed zero hits in our memory store — there are 2 of 499 and, worse, the memory store was never inside the tree the search covered. The claim’s denominator did not contain the thing the claim was about.

The substance survives — zero measured instances of user-directed flattery in any result file, which is why this episode is about self-approval and not about flattery. But the founding sentence of an episode about denominators had a denominator that did not contain its own subject, and we would rather you learned that here than found it yourself.

§7 · The complete ledger — all 26 rows

All 26 rounds, every episode, every filename convention — the complete record as of 2026-08-15, which is the date this snapshot is frozen at and not the date you are reading it. 4 of these rows are invisible to the doctor_v*.md glob that produced every earlier count of this table, and 1 row is not a blind panel at all and is labelled as such. The source_line column names the exact lines each row was transcribed from, because the counting script never opened those logs and you may well want to. Check our arithmetic: the CSV below is the same file the figures above are computed from.
Download the full 26-row ledger (CSV)
#EpRound logDatePanelBlind lensesTally stated?PassesWhat the log saysLines read
1b01production/b01/doctor_v1.md2026-08-15blind4yes04 of 4 lenses BLOCKER; no lens passedL8 + L12-16 + L18
2c09production/c09/doctor_v1.md2026-07-26INLINE-one-reviewer0no01 BLOCKER 4 MAJOR 2 MINOR all applied; script advanced to red-penL13
3c09production/c09/doctor_v2.md2026-07-26blind11yes0PANEL VERDICT BLOCKER; zero returned PASSL3-5 + L17-19
4c09production/c09/doctor_v3.md2026-07-26blind8yes0v4 DID NOT PASS - 4 BLOCKER 4 NEEDS-WORK 0 PASSL3-5 + L7
5c09production/c09/doctor_v4.md2026-07-26blind5yes0verification panel on cut draft - 2 BLOCKER 3 NEEDS-WORK 0 PASSL24-26
6d05production/d05/doctor_v1.md2026-07-28blind5yes04 BLOCKER 1 NEEDS-WORK 0 PASSL3 + L7
7d05production/d05/doctor_v2.md2026-07-28blind6yes05 BLOCKER 1 NEEDS-WORK 0 PASSL3 + L8
8d05production/d05/doctor_v3.md2026-07-28blind6yes06 BLOCKER 0 PASSL3 + L5
9d13production/d13/doctor_v1.md2026-07-28blind11yes08 BLOCKER 3 NEEDS-WORK 0 PASSL4 + L5
10d13production/d13/doctor_v2.md2026-07-28blind6yes06 BLOCKER 0 PASSL1 + L3
11d13production/d13/doctor_v3.md2026-07-28blind5yes05 BLOCKER 0 PASSL1 + L3
12d13production/d13/doctor_v4.md2026-07-28blind11yes011 BLOCKER 0 PASSL1 + L3
13d13production/d13/doctor_v5.md2026-08-05blind11yes010 BLOCKER 1 NEEDS-WORK 0 PASSL3 + L7
14d13production/d13/doctor_v7/ROUND1_SYNTHESIS.md2026-08-14blind6no0NOT APPLIED AS PATCHES; open re-authored as a unit; repair-by-addition ran 10-for-6L3 + L5 + L17
15d20production/d20/doctor_v1.md2026-07-28blind11yes011 lenses 11 non-PASS ZERO PASSL4 + L5
16d20production/d20/doctor_v2.md2026-07-28blind11yes011 lenses 11 non-PASS ZERO PASSL3 + L4
17d20production/d20/doctor_v3.md2026-07-28blind11yes011 non-PASS; cumulative 33 lens-runs zero passesL3 + L4
18d20production/d20/doctor_v4.md2026-07-28blind11yes010 BLOCKER/non-PASS 1 NEEDS-WORK; cumulative 44 lens-runs zero passesL3 + L4
19d21production/d21/doctor_v1.md2026-07-28blind11yes07 BLOCKER 4 NEEDS-WORK 0 PASSL4 + L7
20d21production/d21/doctor_v2.md2026-07-28blind11yes011 BLOCKER 0 PASSL4 + L7
21d21production/d21/doctor_v3.md2026-07-28blind5yes05 BLOCKER 0 PASSL4 + L7
22d21production/d21/doctor_v4.md2026-08-01blind5no04 BLOCKER 1 NEEDS-WORK; script has never been dischargedL3 + L7-13 + L123
23d22production/d22/doctor_v1.md2026-08-05blind11yes09 BLOCKER 2 NEEDS-WORK Zero PASSL3 + L5
24c04production/c04/doctor_round1.md2026-08-13blind10no0~25 BLOCKER-severity findings; SYNTHESISED NOT YET APPLIEDL4 + L6 + L12
25c04production/c04/doctor_v22026-08-13blind10no010 blind lenses; 4 BLOCKER + 3 NEEDS-WORK top-level, 3 lenses report per-item tables with no panel verdict line; ZERO returned PASS. Round has no SYNTHESIS file and no flat doctor_v2.md sibling, which is why every prior count missed it.lens01-lens10 VERDICT lines
26j02production/j02/doctor_round1.md2026-08-12blind10no010 of 10 lenses returned findings; BLOCKER-severity findings all discharged in v2; v2 ready for Stage 4L3 + L5 + L44

§8 · What would change our mind

  1. A blind panel that discharges. If any panel returns a clean pass under our written discharge criterion, the “0 approvals” half of this report expires, and we will say so in the same place we said this. The live candidate is already in the table above: the one round that records its blockers as discharged, declared by the author who applied the fixes and never verified by a second blind round. Run that verification and the bounty pays either way.
  2. A measured instance of true user-directed flattery. A pre-registered leading-versus-neutral A/B on a real corpus — one prereg, one paired prompt set, one blind grader — testing whether a model’s verdicts, not its tone, move with the phrasing of the question. If verdicts move, the framing of this whole episode changes. No such experiment exists anywhere in our tree, and we did not build it here.
  3. Evidence that the gap was the script and not the structure. Run the controlled version we did not: the same draft, one inline pass and one blind panel, neither seeing the other. If the gap collapses, the mechanism claim in this report weakens to a correlation and we are wrong. Send it and we will publish it here.
  4. A second clean win that is not a guard. The antidote in §9 rests on n=2, and both instances are mechanical checks rather than reviewers. If a reviewer-shaped intervention ever produces a durable, mechanically verifiable fix, the antidote claim widens and this report narrows.

§9 · What survives

The ten-second test, and it is the whole transferable unit: Who checked this — and were they in a position to disagree? An AI grading its own draft, a backtest scored by the person who wrote it, a self-report never compared against the artifact it describes: all the same shape, every seat occupied by one party. The companion tell is shorter still. A self-report is narration, not measurement. When a number matters, recompute it from the artifact — never from the thing that produced it.

And the part that will not feel like a win: the obvious fix is the wrong lesson. Add more AI reviewers is not what this record supports. Our panel has detected relentlessly across 26 rounds and discharged nothing; eleven lenses missed what five caught; two lenses agreed on the same wrong number in the same direction; ten findings on one episode were false positives. Detection is not discharge, and a bigger panel buys more detection.

The one intervention in our entire record that cleanly worked was not a reviewer at all. Two acceptance criteria in a script header were deleted instead of met while the body underneath went unchanged — and the author believed he had met them. What fixed that permanently was a bar written down before the work, plus a small script asking a question the author could not ask himself. That shape has worked twice for us. n=2, and we are saying n=2 rather than calling it a method.

The last thing, and the one we would keep if we could keep only one: audit what a review loop rewards, not only what it finds. Ours rewarded finding things. So it found things, forever, and never once told us we were done.

§10 · Want to run a test like this yourself?

Everything we make is free — the reports, the ledgers, all of it. The only thing that costs us real money is the market data.

Where the numbers on this page came from — and it is not a data vendor. This report uses no market data at all. Every figure on it is hand-transcribed from our own production review logs, and §5 above is explicit about what that transcription can and cannot witness. We say so here because the boilerplate that named two market-data vendors sat on this page until 2026-09-08, two lines above the link below — a sourcing claim wider than its evidence, on the one page whose whole subject is self-reports that do not match the artifact.
Buying market data? Going through here supports Ground Truth (affiliate)
The firewall: going through that link pays us a small commission at no extra cost to you. It is a way to support the channel, not a description of our pipeline — the vendors that produced our numbers are named directly above, and we would rather say so plainly than let a commission blur the two. That is the only money this channel takes. Never from anyone whose claims we test — and never for anything inside a category we review.

Get every report + the 7 Questions one-pager (free)