Vol VI · Roots · WP-125 · 2026-09-17 · Self-measurement
Written Down, Unreadable
Sixty-two of 122 producing scripts record what they do not establish. Five do it in a form a tool can read. The corpus knows its limits perfectly well and cannot be asked about them — and the first version of this paper got that wrong by an order of magnitude, in precisely the way its own gap [1] warned it would.
Instruments · a measurement of this corpus, by this corpus, corrected by it
This paper was published saying 4.1% of the corpus's scripts record any limit at all. The true figure is 51%. The error was in the instrument, not the corpus, and the paper had already written down the exact failure mode before making it. What survives is a better finding than the one that was wrong.
1 · The correction, first
Published, then overturned the same day
First version: 515 named checks, 22 recorded gaps, 5 scripts of 122 (4.1%) recording any limit. Conclusion: the corpus does not write down what it does not know.
Corrected: 62 of 122 (51%) record their limits. Fifty-seven do it in prose — honesty blocks, NOT ESTABLISHED sections, refutation conditions — which the detector could not see because it recognised two syntactic shapes and nothing else.
The paper's own gap [1] said: “the gap detector recognises two syntactic shapes, not the idea of a gap … the true count is a floor.” It was written, published, and not heeded.
That is the more useful lesson and it generalises past this paper. Recording a limitation is not the same as acting on one, and nothing in this corpus currently distinguishes the two. A gap list that the author writes and then reasons past is decoration.
2 · What the corpus actually contains
| Quantity | Count |
| producing scripts | 122 |
| named checks | 516 |
| no docstring — unplaceable | 6 |
| How a script records its limits |
| structured gaps = […] — machine-readable | 5 |
| honesty / limits block — prose only | 57 |
| nothing recognisable | 60 |
| records limits in some form | 62 (51%) |
| a tool can read them in | 5 (4%) |
Both halves matter. Half the corpus states its limits, often at length and with more care than the structured lists manage. And half states nothing recognisable at all — 60 scripts, including book4/ch23-verify.py at 28 named checks and book6/wp90-verify.py at 21. VERIFIED
3 · The case that overturned it
book7/ch-feynman-verify.py has 25 named checks and scored zero gaps. Its record of limits is an HONESTY block naming four things it does not establish — that the dm³ system is the Standard Model or a reduction of it; that the Gutzwiller weight applies, since the flow is dissipative and Gutzwiller assumes Hamiltonian; that the cusp result transfers to the full SU(2) × U(1) potential, which has a vacuum manifold rather than isolated critical points; and any statement about mass, coupling or cross-section — followed by a statement of what would refute its own chapter.
That is a better gap record than most structured lists in this corpus, and it is invisible to every tool in it.
4 · What the finding becomes
A gap record has two jobs. It tells a reader what was not checked. It tells a machine what to go and get. The corpus does the first well and the second almost not at all.
The claim, restated so it is true
The problem is not that the corpus fails to know what it does not know. It is that the knowledge has no shape anything can act on — 5 scripts of 122 in a parseable form. A gap list is a request, and a request nobody can parse is not a request.
So the work is not writing limits down. Half of them are already written. It is giving the ones that exist a shape.
The structural consequence is unchanged from the first version, which is why it survives the correction. WP-124's companion in the Spine repository records, machine-readably, that it needs Neurospine 2026;23(3):526–35 and one sentence from its methods. That is a corpus naming its next input in a form a person, a fetcher or another model could act on without being told the context. There are five such scripts. There should be sixty-two, and the material for fifty-seven of them is already written in prose.
5 · The self-count, and four bugs it caught
This script measures a corpus that now contains it, and the chapter you are reading is a file it counts. CLAUDE.md's rule for that case is an explicit ref predating the work and a printed drift, rather than classifying the page out of its own measurement.
| 35a9dd3 | HEAD | drift |
| scripts | 120 | 122 | +2 |
| checks | 509 | 516 | +7 |
| structured gap lists | 4 | 5 | +1 |
Four defects surfaced while writing this, and every one was caught by comparison, none by inspection. Each run exited zero throughout.
- The non-recursive walk. The working-tree side used one os.listdir per book while the baseline used git ls-tree -r, which recurses. HEAD came out four scripts short of a commit it postdates. Scripts do not vanish; only the self-count made that visible.
- The same defect in tools/harvest.py, which was disagreeing with this script about the same corpus. Both now walk recursively.
- The double count. With the walks agreed they still disagreed, 31 against 21, because this script added two overlapping patterns without deduplicating. The published ratio was wrong by 40%.
- The detector itself — the one above, an order of magnitude, and the one the paper had already predicted in writing.
Four instruments, four errors, one corpus. That is the argument for running two things over the same material and requiring them to agree: it is the closest available substitute for a system certifying itself, which is the one thing it cannot do.
6 · What this still does not say
- The prose detector is a keyword list, so it over- and under-counts. SKIPPED catches a script that merely skips a block; a limits paragraph using none of the keywords still reads as zero. The 57 is an estimate with error in both directions, and no entry count is attempted for prose at all. OPEN
- “Named check” means a call to check() — a convention, not a law. Scripts using bare assert are undercounted.
- No claim is made that any particular script should have gaps. Some results are complete. This measures a habit across a corpus; it does not convict a file. wp107-verify.py was backfilled under this paper and no error was found in it — only an unwritten scope.
- The baseline is one commit, not a history. Whether this has been worsening or improving is unmeasured. OPEN
- This paper has been wrong once already, publicly, on its headline. Read the numbers above as the current state of an instrument that has been corrected four times in a day, not as settled.
7 · Sources
- Producing script: book6/wp125-verify.py. Reads source text; executes nothing it measures.
- tools/harvest.py — the inventory, written to docs/corpus-inventory.md and .json.
- tools/placement_check.py and docs/math-placement-map.md — the placement rule this paper serves.
- The case that overturned the first version: book7/ch-feynman-verify.py, HONESTY block.
- Self-count rule: CLAUDE.md, following book7/ch-the-map-on-page-ten-verify.py.