Every lab in this repo that carries a pre-registration carries an identifiable priors or goalposts block — 13 of 13. Where we scored those priors by hand we hit 20 of 27, 74.1%, inside the 65–85% band we registered before counting. That is the easy half. The other half: 12 of 13 registered labs have a results file at all; at least 9 registered items across 6 labs are never scored by the results that were supposed to score them; one lab registered 25 items and published nothing to score them against; another published results with no pre-registration at all. And 27 of about 143 registered items in this corpus carry a hand verdict — an unscored row is not a passing row. Writing the bar down is the easy half. Reading it back afterwards is the half that fails, and our own corpus is the proof.
Granted, not measured: that the backtest a viewer is being shown is almost certainly true — real code, real data, it reproduces, and nobody faked it. The failure named here has nothing to do with lying, and we are not testing whether anybody lied. We also grant that a criterion written after the fact can still be perfectly honest. It simply cannot be evidence, because it cannot lose.
Tested: only our own corpus. 14 lab directories under validation/ as of 2026-08-15, 13 of them carrying a pre-registration, about 143 registered items enumerated from the pre-registration side rather than from whatever the results happened to discuss, and 27 rows hand-scored with a line reference on both sides. Zero new computation and no market data: this is a file-reading census of our own paperwork.
0a05136, before any priors block or scorecard in the corpus had been opened for counting. But no commit lock exists: the authoring session had no commit authority, so the pre-registration and the results landed together, and version control cannot witness the ordering. That is an attestation, not cryptographic evidence — and it is the same limitation this report flags on one of the labs it scores. Manufacturing a hash to close the gap would be the exact defect this episode exists to name.Across every lab in this repo: how many priors and goalposts have we registered, how did they score — and when we deviated, did the deviation run in the direction that flattered us?
It split, and the split indicts the registration rather than rescuing it. On the 27 hand-scored rows the direction bar clears at 62.5% (5 understated against 3 flattered) — over a 60% bar by two and a half points, close enough that one row moving flips it. Add the labs' own post-publication corrections and unregistered deviations and it collapses to 35.3% (6 of 17).
We did not register which set of rows this would be scored against, so we are not permitted to pick the tier that scores better. Both are published in §5. That is an unbounded prior — the precise defect one of the labs in this very table had already written down as a lesson — and we committed it in a prior about our failure to bound priors.
One more thing we owe you about this prediction: we do not claim this was a blind prediction. It generalises a finding one of these labs had already published about itself, and the pre-registration says so, in its own contamination section, written before the count. It is still a real test — that lab's finding was about that lab, and there was no reason it had to hold across the corpus — but it was not blind and may not be described as though it were.
| Parameter | Locked value |
|---|---|
| Enumeration side | from the pre-registration bullets, never from what the results happened to discuss |
| Denominators | three, reported separately — labs with a pre-registration · labs with an identifiable priors block · labs also carrying a results file. A lab with no priors block is a finding, not a skipped row |
| Outcome classes | HIT · MISS · NEAR · UNSCORABLE · UNSCORED |
| Deviation direction | UNDERSTATED vs FLATTERED, assigned only to non-HIT rows, and declared in advance to be a judgement read off quoted text rather than a computed quantity |
| Evidence rule | every row carries the source line reference on both sides; rows that cannot be pinned to a line are excluded from the direction tally rather than guessed |
| Scope | validation/*/PREREG.md only |
| P1 — the primary prediction | at least 60% of direction-assignable non-HIT rows are UNDERSTATED |
| P2 | overall hit rate 65–85% |
| P3 | at least 1 registered prior, beyond the two already known, that its own results never score |
| P4 | the share of registered labs carrying a priors block is below 0.5 |
| Corpus snapshot | validation/ at repo HEAD 575c72b, 2026-08-15 |
| # | Pre-registered goalpost | Measured | Pass |
|---|---|---|---|
| 1 | Pre-registered goalpost — at least 60% of direction-assignable non-HIT rows understate our own case | 62.5% on the 27 hand-scored rows (5 of 8); 35.3% once the labs' own corrections are added (6 of 17) | SPLIT |
| 2 | Pre-registered goalpost — overall hit rate inside 65–85% | 74.1% — 20 of 27 hand-scored rows | YES |
| 3 | Pre-registered goalpost — at least 1 registered prior nobody has caught, never scored by its own results | 9 of them, across 6 labs | YES |
| 4 | Pre-registered goalpost — fewer than half the registered labs carry a priors block | 100% — 13 of 13 | NO |
2 of 4. Two hits, one miss, one split — and the miss and the split are printed above the hits, here and in the lab file, deliberately. The clean failure is the last one: we guessed the priors convention was a recent addition and that fewer than half the labs would carry a block. It is 13 of 13. The convention is older and more uniform than we assumed, and the real gap in this corpus is not registering — it is scoring what was registered.
| Figure | Value | What it means |
|---|---|---|
| Registered items their own results never scored | at least 9, across 6 labs | The finding. Not one of these is a lab that forgot to register — every one wrote the bar down and then published a results file that never came back to it. |
| A lab that registered 25 items and published no results at all | 25 of 25 unscored | Structurally unscored: there is no results artifact anywhere in the repo to score it against. |
| A lab that published results with no pre-registration whatsoever | 1 | It is not counted among the registered labs, because it registered nothing. It is counted here because that is the point. |
| Our own direction prediction, written for this very ledger | 62.5% / 35.3% | SPLIT. It clears the registered 60% bar on one set of rows and fails it on the other, and we never registered which set. An unbounded prior, written by us, inside a report about unbounded priors. |
| Post-publication corrections and unregistered deviations, by direction | 8 of 9 flattered us | The corrections do not run in random directions. They run toward the version that had made our published position look stronger. |
| Registered labs carrying an identifiable priors or goalposts block | 13 of 13 | The discipline is universal at the write-down step. This is the easy half, and we do it. |
| Registered labs that also have a results file to be read against | 12 of 13 | One registered lab has no results artifact of any kind. |
| Hand-scored rows that hit their registered bar | 20 of 27 — 74.1% | Inside the 65–85% band we registered before counting. Breakdown: 20 hit, 4 miss, 2 near, 1 unscorable. |
| Registered items in the corpus that carry a hand verdict at all | 27 of about 143 | The rest are unscored by this pass, and an unscored row is not a passing row. The hit rate above is the rate among rows whose lab published a per-item verdict — it is not the corpus hit rate, and excluding the unscored is exactly how a hit rate flatters itself. |
The instrument here is a file reader, so the stress test is a question about reach: what could it not see?
The mechanical count is a floor, not a census, and it is published as a floor. The enumerator finds 92 registered items by pattern-matching labelled bullets, numbered lists and bold table rows inside a detected block. The hand pass finds about 143 (112=12 · b01=27 · held lab 1=11 · d03=11 · d05=8 · d16=18 · held lab 2=25 · held lab 4=31). The gap is not an error in either: several labs register much of what they register as free prose inside a paragraph, and no regular expression is going to find that.
The one green the mechanical pass produced is narrow, and must not be over-read. Its registered-but-never-mentioned check came back clean on 12 of 12 scorable labs. That check asks only whether a named label appears as a token somewhere in the results file. It cannot tell mentioned from scored, and it cannot speak at all to prose-form registrations. Every unscored prior below was found by hand, not by that check. A green gate answers only the question it measures.
| Lab | Registered item its own results never score | How we checked |
|---|---|---|
| held lab 1 | the registered "Mixed → report honestly as inconclusive" third branch | held until this lab’s episode ships |
| held lab 1 | registered null of 200 draws; RESULTS reports 120, unreconciled | held until this lab’s episode ships |
| d16_mortgage_prepay | survive-clause: near-retirement / short horizon | retire/horizon occur 0 times in its RESULTS |
| d16_mortgage_prepay | survive-clause: liquidity cuts for investing | no liquid/locked equity hits |
| d03_leverage_concentration | kill-condition 3 — forced liquidation as "mercy" vs holding through | no hold-through counterfactual in RESULTS |
| held lab 4 | M7 / M13 / M14 / M15 (falsification clause F2, two E1 accounting clauses, the D2 re-license condition) | held until this lab’s episode ships |
| 112_bear_trap | registered bootstrap CI — no CI of any kind appears in its RESULTS | agent pass |
| 112_bear_trap | registered buffer ∈ {12/15/18/22%} sweep axis — RESULTS sweeps delta | agent pass |
| held lab 2 | 25 of 25, structurally — no results artifact exists | held until this lab’s episode ships |
The corpus moved underneath the count, and that is disclosed rather than smoothed over. A concurrent session was writing this repo while the census ran: HEAD advanced 0a05136 to 575c72b in the first four minutes, and one lab's results file did not exist at the start of the enumeration and did exist at the end. That lab's row is a snapshot of a lab mid-build. Everything on this page is dated 2026-08-15 and is a snapshot, not a current count — the validation folder has grown since, and re-running the census today would answer a different question about a different corpus.
The enumerator has a negative control, because a guard only ever seen green is untested. Its self-test removes a registered label from a results file and asserts the diff goes red, then asserts the untouched corpus stays green for that same label. It passes both. So the mechanical check works — it is simply asking a smaller question than the finding needed, which is the paragraph above.
This report has one too. Running its generator with --selftest perturbs a single scored row and asserts the integrity gate refuses to write the page. That gate is what stands between the headline above and the table below: it recomputes the outcome tally, the direction tally, the hit rate and all four verdicts from the 27 rows, checks them against the counts the lab file already published, and refuses to emit a byte if they disagree. On a report about results that cannot lose, a page that could not reproduce its own headline from its own ledger would be self-refuting.
Independent corroboration, read back from the labs' own published scorecards: 4 hits, 1 miss; 6 hits, 1 near-hit, 1 UNSCORABLE, 0 clear misses; Prediction scorecard: 6 hit / 1 partial. Those lines corroborate the hand scoring; the 20-of-27 figure itself is assembled from the §7 rows and not from these scorecards (one of them belongs to a lab with no row in the 27), and each was opened and re-read against its own file rather than carried forward from memory.
“The people grading these priors are the people who wrote them.” That is the right objection, and there is no way to answer it fully from the inside. Three things are done about it, and none of them is a promise to be careful.
One: every row is evidenced on both sides. All 27 rows in §7 carry a pre-registration line reference and a results line reference, printed so the check is mechanical rather than a matter of trust. Until the lab repository is published (§6 says why it is private today) those references are our attestation, which is a weaker thing than what this page asks of everybody else; the CSV below carries every row, so the arithmetic at least is yours to check now.
Two: the direction column is declared a judgement, in advance. The pre-registration says the flattered/understated axis is read off quoted text and is never a computed quantity. It is labelled an opinion because it is one.
Three: we were not allowed to choose the set of rows that scored better. Here is the split, both halves.
| Row set | Understated us | Flattered us | Share understated | Against the 60% bar |
|---|---|---|---|---|
| Tier 1 — the 27 hand-scored rows in labs that published a per-item verdict | 5 | 3 | 62.5% | HIT |
| Tier 2 — Tier 1 plus the labs' own post-publication corrections and unregistered deviations | 6 | 11 | 35.3% | MISS |
The 9 rows Tier 2 adds, each verified against a line:
| Correction or deviation | Direction | Evidence |
|---|---|---|
| D22 G1 — published KILL reversed | flattered us | d22_congress/RESULTS.md:116,120 |
| D22 G2 — "no breakeven account size" now false | flattered us | d22_congress/RESULTS.md:100 |
| D22 G4 — concentration sign-flip does not survive | flattered us | d22_congress/RESULTS.md:110,116 |
| D13 E1/E1a — magnitudes moved in the specimen's favour | flattered us | d13_buy_borrow_die/PREREG.md:151 |
| D13 — "unpassable by construction" argument is dead | flattered us | d13_buy_borrow_die/RESULTS.md:19 |
| held lab 3 — held until this lab’s episode ships | flattered us | held |
| held lab 3 — held until this lab’s episode ships | flattered us | held |
| held lab 1 — held until this lab’s episode ships | flattered us | held |
| D13 Q5.5 — pre-run prior wrong, published anyway | understated us | d13_buy_borrow_die/RESULTS.md:164-166 |
8 of the 9 run in the direction that had flattered us. That is the sentence worth more than either percentage: our corrections are not random-signed. When a published result of ours moved after publication, it moved toward the version that had made our position look stronger. One of these labs says it plainly in its own results file — that the correction moved the result in the product's favour, and that we published a verdict our own corrected lab does not support.
There is no outside specimen in this report, at any level, and that is by construction rather than by omission. This channel's standing rule is that the practitioner whose work is under test gets named. Here nobody outside is under test: the subject is our own registration corpus. We did go looking for an outside specimen — somebody who publishes a timestamped bar and then publishes a loss against it — and the nearest candidate applies its correction after the search rather than before it, which is the whole distinction this report is about. Naming somebody anyway, to fill a slot, is the retrofit our own rules forbid. So the slot stays empty and the bounty in §8 stays open.
This ledger carries the same defect it scores other labs for, and said so before the count. Its pre-registration was written at 2026-08-15 17:52 PDT, against repo HEAD 0a05136, before any priors block or scorecard had been opened for counting. But no commit lock exists for it: the authoring session had no commit authority, so the pre-registration and the results were not separated by a commit, and version control cannot witness the ordering. What stands behind the timestamp is a written attestation, not cryptographic evidence. That is exactly the limitation this report flags on one of the labs in its own table, and it is stated here rather than discovered later. Filling the gap with a hash would be the defect this episode exists to name, committed on the page that names it.
And two sessions built this lab at once. A second session registered a competing pre-registration for the same question two minutes after this one, and deliberately left it unrun. Two registrations and one corpus is a real problem; that registration's blind-arm design is better than this lab's; and reconciling them is a merge neither session should perform unilaterally. It is recorded, not resolved.
Our work lives in git. Every commit carries a timestamp and the exact files that went with it. A commit date can be set by whoever writes it, so this is not a notarised clock — it is an ordering, and a history that cannot be quietly rearranged once somebody else holds a copy. The rack below was read from the log by the generator that writes this page, not typed, and the build refuses if what git says stops matching what the episode says. Commit hashes are printed; file names are not, because counts are the claim and one registration commit’s subject line names a person this report has no business naming.
| Envelope | Lab | Registration commit | First result commit | Gap | Clock? |
|---|---|---|---|---|---|
| one | the politician-trading labd22_congress | 9159677 · 2026-08-04 00:49:45 -07004 files, 536 lines: the registration, the raw filings and the parser that read them | 427dddf · 2026-08-04 00:54:57 -07003 files: the result and the code that produced it, the very next commit to touch the lab | 5 min 12 s | YES |
| two | the trade-copying labd21_copytrade_subscription_bar | b5425de · 2026-07-28 13:55:02 -07001 file, 109 lines: the registration alone | b0c0048 · 2026-07-28 14:00:26 -07004 files: the model, its console output, its results and its write-up | 5 min 24 s | YES |
| three | the life-insurance lab — its amendmentd13_buy_borrow_die | c918df0 · 2026-07-28 13:34:29 -07001 file, 54 lines: the amendment and nothing else | f8fedc1 · 2026-07-28 13:39:26 -07003 files: the run of the arm the amendment registered | 4 min 57 s | YES |
| four | the leverage study (a separate research repository, not published) | 6beaa55 · 2026-07-02 12:26:24 -07001 file, 83 lines: the registration alone | a47a952 · 2026-07-02 12:33:28 -07004 files: the engine, the runner, the data client and the result | 7 min 04 s | YES |
| five | the lump-sum-versus-gradual labd05_dca_vs_lumpsum | 2109f09 · 2026-07-28 14:15:50 -07007 files in ONE commit: the registration, the model and the results together | — | none: the same second | NO |
| six | the life-insurance lab — its original registrationd13_buy_borrow_die | df4e1d9 · 2026-07-06 21:54:48 -07007 files in ONE commit: the registration, the model, the results and the stress arm together | — | none: the same second | NO |
4 of 6 have a clock behind them, and the timestamps line up to the second. And here is the part that costs us: our lab repository is private, so not one of those 4 is a link you can open today. You have the hashes and you have our word, and that is a weaker thing than what this report asks of everybody else. On the other 2 we cannot prove the order at all, in either direction: the registration, the model and the results entered history in a single commit, at the same second, so the ordering exists only in the file itself and in our telling you about it. The case this episode leans on hardest — the prediction we lost on camera — is one of those two.
Envelope two was then edited 5 more times over the next 4 days (b09f1ff, 0a4e68d, b11bc18, 499fe45, bf3f0c8), every one of them after the results already existed. Each edit is in the history with its own timestamp, which is the only reason we can tell you about them. A bar you can rewrite is still a bar, but only if the rewriting is as visible as the writing.
Envelope four is the study whose registered bar caught a sizing defect in our own engine; it has its own episode and its own report, here. It is the strongest ordering we have and the one furthest out of your reach: that repository is not going to be published at all.
Envelope one is the lab whose kill our own errata reversed (§5). Its bar is as checkable as anything on this page, and it still did not save the verdict, because a bar can only check the number it was handed, and the number it was handed was wrong. A timestamp is the floor, not the ceiling.
| # | Lab | Registered item | PREREG ref | RESULTS ref | Outcome | Deviation direction | How it was scored |
|---|---|---|---|---|---|---|---|
| 1 | d05_dca_vs_lumpsum | P1 | PREREG.md:64-75 | RESULTS.md:11-16 | HIT | — | Scored in the RESULTS prior table; overall line at RESULTS.md:8 'Prior scoring — 4 hits, 1 miss.' |
| 2 | d05_dca_vs_lumpsum | P2 | PREREG.md:64-75 | RESULTS.md:11-16 | HIT | — | Per the RESULTS prior table. |
| 3 | d05_dca_vs_lumpsum | P3 | PREREG.md:64-75 | RESULTS.md:11-16 | HIT | — | Per the RESULTS prior table. |
| 4 | d05_dca_vs_lumpsum | P4 | PREREG.md:70-72 | RESULTS.md:15 | MISS | understated us | RESULTS.md:15 'median win +7.29%, median loss -6.02% -> backwards | X'. Direction quoted from RESULTS.md:8 'The miss moved in the specimen's favour.' and RESULTS.md:111 'My P4 prior said the opposite and was wrong.' Published as a loss, on camera (the D05 script, line 159). |
| 5 | d05_dca_vs_lumpsum | P5 | PREREG.md:64-75 | RESULTS.md:11-16 | HIT | — | Per the RESULTS prior table. |
| 6 | d21_copytrade_subscription_bar | Q0 | PREREG.md:49 | RESULTS.md:183 | HIT | — | flat-equivalent 0.451% inside the registered 0.2-0.5% band. |
| 7 | d21_copytrade_subscription_bar | Q1 | PREREG.md:50 | RESULTS.md:184 | HIT | — | RESULTS marks it 'arithmetic - low information'. |
| 8 | d21_copytrade_subscription_bar | Q2 | PREREG.md:51 | RESULTS.md:185 | HIT | — | predicted ~$333,000; actual $333,333. |
| 9 | d21_copytrade_subscription_bar | Q3 | PREREG.md:52 | RESULTS.md:186 | NEAR | understated us | RESULTS.md:186 'near - I predicted it *harder* to explain than it is' (12-16%/yr registered vs 11%/yr measured). Direction corroborated at RESULTS.md:196. |
| 10 | d21_copytrade_subscription_bar | Q4 | PREREG.md:53 | RESULTS.md:187 | UNSCORABLE | understated us | RESULTS.md:187 'UNSCORABLE per Amendment 2'. Two independent reasons at RESULTS.md:177-179: an unbounded hedge clause AND a denominator the lab later banned. Direction from RESULTS.md:192 'the informative clause missed low ... in the understating direction'. |
| 11 | d21_copytrade_subscription_bar | Q4a | PREREG.md:54 | RESULTS.md:188 | HIT | — | reproduces within 2.5 pp. |
| 12 | d21_copytrade_subscription_bar | Q4b | PREREG.md:55 | RESULTS.md:189 | HIT | — | Scored HIT but RESULTS.md:189 annotates it '(understated)' - predicted 'tens of percentage points', measured 95.6 pp. Counted as HIT per the file's own verdict; the understatement is noted at RESULTS.md:196 as part of the same directional pattern. |
| 13 | d21_copytrade_subscription_bar | Q5 | PREREG.md:56 | RESULTS.md:190 | HIT | understated us | OMISSION ROW. Registered in the PREREG, absent from the scoring table for three doctor rounds / 27 lens-runs (RESULTS.md:169,171); added by Amendment 3 on 2026-08-01 and it is a HIT. Direction from RESULTS.md:173 'D21's hides a HIT and under-sells us.' Direction is assigned to the OMISSION, not to the prior, which hit. |
| 14 | d20_app_venture_bar | Q0 | PREREG.md:42 | RESULTS.md:137 | HIT | — | $20,171, low end of the registered $20-24k band. |
| 15 | d20_app_venture_bar | Q1 | PREREG.md:42 | RESULTS.md:138 | HIT | — | H* infinite at his run-rate. |
| 16 | d20_app_venture_bar | Q2 | PREREG.md:42 | RESULTS.md:139 | MISS | understated us | RESULTS.md:139 'missed low' - registered $100-150k, measured $96,569. Direction from RESULTS.md:144 'One miss (Q2), and it moved in the specimen's favour'. |
| 17 | d20_app_venture_bar | Q3 | PREREG.md:42 | RESULTS.md:140 | HIT | — | both clauses held. |
| 18 | d20_app_venture_bar | Q4 | PREREG.md:42 | RESULTS.md:141 | HIT | — | $365, inside the registered $350-450 band. |
| 19 | d20_app_venture_bar | Q5 | PREREG.md:42 | RESULTS.md:142 | MISS | flattered us | THE FLAGSHIP FLATTERING ROW. RESULTS.md:142 still shows Q5 as a HIT; the same file's superseded banner at RESULTS.md:9 says it is a MISS and the correct score is four of six. Ground truth: results.json:188 'q5_direction_holds': false. Caught at the D20 script review, round 2, line 39 'Q5 is a miss. The script says Six predictions. Five held. Truth: four of six.' Direction from d21_copytrade_subscription_bar/RESULTS.md:173 'D20's omission hid a MISS and flattered us'. |
| 20 | held lab 3 | P1 | PREREG.md:41-43 | RESULTS.md:65 | HIT | — | held until this lab’s episode ships |
| 21 | held lab 3 | P2 | PREREG.md:44-46 | RESULTS.md:66 | HIT | — | held until this lab’s episode ships |
| 22 | held lab 3 | P3 | PREREG.md:47-48 | RESULTS.md:67 | MISS | flattered us | held until this lab’s episode ships |
| 23 | held lab 3 | P4 | PREREG.md:49-50 | RESULTS.md:68 | HIT | — | held until this lab’s episode ships |
| 24 | held lab 1 | P1 | PREREG.md:32 | RESULTS.md:8 | HIT | — | held until this lab’s episode ships |
| 25 | held lab 1 | P2 | PREREG.md:33 | RESULTS.md:8 | HIT | — | held until this lab’s episode ships |
| 26 | held lab 1 | P3 | PREREG.md:34 | RESULTS.md:8 | HIT | — | held until this lab’s episode ships |
| 27 | held lab 1 | P4 | PREREG.md:35 | RESULTS.md:23 | NEAR | flattered us | held until this lab’s episode ships |
The portable version is three questions, and each takes about five seconds on any backtest anybody shows you.
Where is the bar, and when was it written? Not whether the result is impressive — whether a criterion existed before the result did. If the success criterion cannot be dated earlier than the number it blesses, the number is a description, not a test.
Is the bar bounded on both sides? A criterion with an open end cannot lose in the direction the result actually lands. This is the one we failed on ourselves: our own direction prediction never said which rows it would be scored against, so it scored 62.5% one way and 35.3% the other, and we had no principled way to choose.
Which way do the corrections run? Everybody publishes errata. The question is whether they are random-signed. Ours are not: 8 of the 9 post-publication corrections and unregistered deviations we found moved toward the version that had flattered us.
And the thing worth carrying out of our own numbers: 13 of 13 of our registered labs wrote the bar down, and at least 9 registered items across 6 of them were never read back. Writing it down is the cheap half. The discipline is not self-executing — not theirs, and not ours.
Everything we make is free — the reports, the ledgers, all of it. The only thing that costs us real money is the market data.