Drop7 Research
← Docs

Audit 03 — arithmetic and claim integrity of the historical evidence ledger

docs/exploratory/audit-03-claim-arithmetic.md

Audit 03 — arithmetic and claim integrity of the historical evidence ledger

Scope. Independent, read-only audit of docs/research/history.md (4,607 lines, read in full), docs/research/status.md, docs/research/experiment-index.md, and docs/strategies.md, cross-checked against src/core/native/engine.hpp, research/schemas/game-result-v1.schema.json, research/benchmarks/baselines-v1.json, artifacts/protocols/optimistic-phase-ntuple/protocol.json, research/seeds/, and the approaches/ source tree. No file other than this one was modified. No gameplay, training, or benchmark was run. No cohort was opened.

Status of this document. Exploratory audit finding. It changes no frozen protocol, no result record, and no shared status table. Every recommendation in section (d) is a proposal for the coordinator, not an applied edit.


0. Method: the score identity used throughout

From src/core/native/engine.hpp:

ConstantLineValue
kLevelBonus (row rise)2117,000
kClearBonus (board clear)2270,000
scoreForWave(d)204–206popper_count * floor(7 * d^2.5)

so a wave of depth d pays 7 / 39 / 109 / 224 / 391 / 617 per popped disc for d = 1..6. A rise is awarded only when moves_remaining reaches zero and raiseCoveredRow succeeds (playMove, lines 297–322); a failed rise ends the game with no award. Therefore, for any complete game,

score = rises * levelBonus + clears * 70,000 + sum(waves)
moves/5 - 1  <=  rises  <=  floor(moves/5)

Every reported (mean score, mean moves) pair was tested against both candidate level bonuses. A mode is feasible only if the residual score - rises*bonus is non-negative at the upper rise bound and does not imply an absurd chain rate (> ~900 points/move) at the lower bound.

The test is fully discriminating. Because 17,000/5 = 3,400 and 7,000/5 = 1,400 points per move, the two feasible residual bands never overlap for any row in the ledger. All 203 rows that record a move count classify into exactly one mode. Two rows record no move count and are unclassifiable.

Calibration of the rescoring constant. The "Corrected Hardcore scoring replay" (history.md:3327–3347) is a deterministic replay of the same already-consumed seeds. Its move counts are byte-identical to the original 7,000-point run, and the score differences are exact multiples of 10,000:

Cohort7k score (h:962/970)17k score (h:3335/3337)DifferenceImplied mean risesmoves/5
Screen D3 (4 games)141,028.75318,528.75177,50017.75018.600
Screen D4 (4 games)179,951.75399,951.75220,00022.00023.000
Confirmation D3 (8 games)102,571.25235,071.25132,50013.25014.200
Confirmation D4 (8 games)176,925.25400,675.25223,75022.37523.275

This proves two things the ledger never states explicitly:

  1. The level bonus does not change fair-expectimax decisions. Identical trajectories, identical move counts, identical clear/reveal counts. The engine's level award is added after the search has chosen.
  2. Any 7,000-point result in the ledger can be exactly rescored as score_17k = score_7k + 10,000 * rises, with rises ≈ moves/5 − 0.925 calibrated from the four rows above (equivalently Δ ≈ 2,000·moves − 9,250).

Point 2 is what makes several of the findings below actionable rather than rhetorical: three preregistered gate outcomes can be recomputed, and two of them reverse.


(a) Classification of every reported (score, moves, n) triple

205 rows. "Implied non-level pts/move" is the min to max range of non-level points per move (chain waves plus any undisclosed board clears) implied by the inferred mode. The minimum is evaluated at the upper rise bound floor(moves/5) and is routinely slightly negative, because real games almost always end on a failed rise, putting true mean rises near moves/5 − 0.925 (calibrated in section 0). The operative figure is therefore the maximum, which is the residual at the lower rise bound. "Mode stated in ledger?" is whether the surrounding history.md section names the scoring mode at all.

history.md:lineResultMean scoreMean movesnInferred modeMode stated in ledger?Implied non-level pts/moveVerdict
144n-tuple greedy (64-probe)182,057.7356.9696417kno-204 to 94consistent; single mode only
145n-tuple sparse D2 (64-probe)232,107.1670.7666417kno-120 to 120consistent; single mode only
146n-tuple sparse D3 (64-probe)227,975.8669.1416417kno-103 to 143consistent; single mode only
226CFPI iter2 value policy224,621.00not recorded4UNCLASSIFIABLEnoNo move count; scoring mode unrecoverable
226CFPI iter2 paired behavior257,423.00not recorded4UNCLASSIFIABLEnoNo move count; scoring mode unrecoverable
259MC-value heldout behavior246,447.8875.000817kno-114 to 113consistent; single mode only
260MC-value value policy122,100.1240.000817kno-347 to 78consistent; single mode only
296nonlinear-evo exact behavior307,222.7591.250417kno-33 to 153consistent; single mode only
297nonlinear-evo candidate148,349.2547.500417kno-277 to 81consistent; single mode only
336survival-scale exact behavior299,059.7589.3286417kno-52 to 138consistent; single mode only
386structured-NNUE exact behavior247,202.8774.57516017kno-85 to 143consistent; single mode only
451denoised roll-ins (orig run)234,260.7570.9066417kyes-96 to 144consistent; single mode only
514denoised-veto screen ensemble126,146.0085.50047kyes75 to 157consistent; single mode only
515denoised-veto screen veto184,649.25121.25047kyes123 to 181consistent; single mode only
521denoised-veto conf ensemble164,266.00110.62587kyes85 to 148consistent; single mode only
522denoised-veto conf veto161,660.12108.75087kyes87 to 151consistent; single mode only
554counterfactual screen D3166,112.25111.50047kyes90 to 153consistent; single mode only
555counterfactual screen NNUE-leaf102,916.2572.50047kyes20 to 116consistent; single mode only
568privileged oracle single seed (500 cap)2,079,579.00500.000117kno759 to 793consistent; single mode only
607oracle distill fitting roll-ins (200 cap)829,516.75200.000None17kno748 to 833consistent; single mode only
613oracle-distill screen behavior261,871.8879.250817kno-96 to 119consistent; single mode only
614oracle-distill screen hybrid283,850.6284.500817kno-41 to 160consistent; single mode only
616oracle-distill conf behavior249,816.8875.3751617kno-86 to 140consistent; single mode only
617oracle-distill conf hybrid187,542.6257.2501617kno-124 to 173consistent; single mode only
640root-quad ensemble screen cand128,858.7588.75047kyes52 to 131consistent; single mode only
640root-quad ensemble screen base96,304.0067.50047kyes27 to 130consistent; single mode only
642root-quad ensemble conf cand117,066.5080.62587kyes52 to 139consistent; single mode only
642root-quad ensemble conf base162,492.12109.37587kyes86 to 150consistent; single mode only
658nnue-guided screen cand82,169.2558.75047kyes-1 to 118consistent; single mode only
659nnue-guided screen D387,743.7562.00047kyes15 to 128consistent; single mode only
673root quadrature D3205,001.25132.50047kyes147 to 200consistent; single mode only
674root quadrature cand179,243.00120.00047kyes94 to 152consistent; single mode only
687exact-depth4 screen D3149,621.25103.75047kyes42 to 110consistent; single mode only
688exact-depth4 screen D4124,172.2585.00047kyes61 to 143consistent; single mode only
707phase-weight-evo default107,709.7575.12587kyes34 to 127consistent; single mode only
708phase-weight-evo evolved105,534.8872.50087kyes56 to 152consistent; single mode only
721topology audit D390,273.0063.625167kyes19 to 129consistent; single mode only
722topology audit oracle (200 cap)429,182.50200.000167kyes746 to 781consistent; single mode only
735oracle 500-cap 12 seeds1,058,931.50500.000127kyes718 to 732consistent; single mode only
737topology paired public D3132,979.0090.500127kyes69 to 147consistent; single mode only
757accessible-energy screen D3112,318.5077.12587kyes56 to 147consistent; single mode only
758accessible-energy screen cand85,768.0060.62587kyes15 to 130consistent; single mode only
773energy root-prior D3105,767.8873.12587kNO46 to 142consistent; 7k, but section carries no scoring label
773energy root-prior cand90,300.7560.87587kNO83 to 198consistent; 7k, but section carries no scoring label
793hindsight screen D3107,076.0072.50047kyes77 to 173consistent; single mode only
794hindsight screen cand51,500.5037.50047kyes-27 to 160consistent; single mode only
906fair-only screen CFPI D3109,336.7575.62587kyes46 to 138consistent; single mode only
907fair-only screen fair-only142,027.1294.37587kyes105 to 179consistent; single mode only
914fair-only conf CFPI102,612.8171.562167kyes34 to 132consistent; single mode only
914fair-only conf fair-only119,270.7580.500167kyes82 to 169consistent; single mode only
962D4 screen D3 (7k)141,028.7593.00047kyes116 to 192consistent; single mode only
962D4 screen D4 (7k)179,951.75115.00047kyes165 to 226consistent; single mode only
970D4 conf D3 (7k)102,571.2571.00087kyes45 to 143consistent; single mode only
970D4 conf D4 (7k)176,925.25116.37587kyes120 to 180consistent; single mode only
1019root-CVaR screen fair D3176,819.75114.12587kyes149 to 211consistent; single mode only
1020root-CVaR screen risk87,112.0061.50087kyes16 to 130consistent; single mode only
1063full-fair screen fair leaf D3134,923.8889.12587kyes114 to 192consistent; single mode only
1064full-fair screen full-fair94,812.0065.25087kyes53 to 160consistent; single mode only
1091transition-reward fair-only113,772.5078.12587kNO56 to 146consistent; 7k, but section carries no scoring label
1092transition-reward cand96,759.6266.50087kNO55 to 160consistent; 7k, but section carries no scoring label
1150CEM D3 heldout fair120,608.0081.250327kNO84 to 171consistent; 7k, but section carries no scoring label
1151CEM D3 heldout candidate141,523.7593.969327kNO106 to 181consistent; 7k, but section carries no scoring label
1159CEM D3 screen fair149,022.2597.50087kNO128 to 200consistent; 7k, but section carries no scoring label
1159CEM D3 screen candidate148,116.8899.37587kNO90 to 161consistent; 7k, but section carries no scoring label
1220CEM-D4 training stock D4178,289.56114.688167kNO155 to 216consistent; 7k, but section carries no scoring label
1221CEM-D4 training composite200,972.00131.250167kNO131 to 185consistent; 7k, but section carries no scoring label
1229CEM-D4 heldout stock D4177,487.31114.063167kNO156 to 217consistent; 7k, but section carries no scoring label
1229CEM-D4 heldout composite159,652.06103.125167kNO148 to 216consistent; 7k, but section carries no scoring label
1288D4/s7 fitting stock s5118,676.0078.87587kNO105 to 193consistent; 7k, but section carries no scoring label
1288D4/s7 fitting s7118,512.3881.12587kNO61 to 147consistent; 7k, but section carries no scoring label
1452topology-ext screen fair D485,874.5060.00087kNO31 to 148consistent; 7k, but section carries no scoring label
1452topology-ext screen residual95,697.1265.62587kNO58 to 165consistent; 7k, but section carries no scoring label
1458topology-ext conf fair D4196,764.12125.938167kNO162 to 218consistent; 7k, but section carries no scoring label
1458topology-ext conf residual154,934.62101.938167kNO120 to 189consistent; 7k, but section carries no scoring label
1465topology-ext single baseline game476,511.00285.00017kNO272 to 297consistent; 7k, but section carries no scoring label
1465topology-ext single cand game139,399.0090.00017kNO149 to 227consistent; 7k, but section carries no scoring label
1465topology-ext single baseline game 2329,049.00200.00017kNO245 to 280consistent; 7k, but section carries no scoring label
1465topology-ext single cand game 274,172.0055.00017kNO-51 to 76consistent; 7k, but section carries no scoring label
1563fair-D1 rollout-improve base72,526.1753.750127kNO-51 to 80consistent; 7k, but section carries no scoring label
1564fair-D1 rollout-improve best64,304.8345.500127kNO13 to 167consistent; 7k, but section carries no scoring label
1611PPO v1 untrained greedy23,936.5221.720647kNO-298 to 24consistent; 7k, but section carries no scoring label
1613PPO v1 best greedy probe24,503.3422.110647kNO-292 to 25consistent; 7k, but section carries no scoring label
1613PPO v1 deterministic random31,835.2526.940647kNO-218 to 42consistent; 7k, but section carries no scoring label
1633PPO v2 warm-start before18,906.0318.280647kNO-366 to 17consistent; 7k, but section carries no scoring label
1633PPO v2 warm-start after33,539.4728.020647kNO-203 to 47consistent; 7k, but section carries no scoring label
1634PPO v2 random32,143.6927.030647kNO-211 to 48consistent; 7k, but section carries no scoring label
1634PPO v2 fair D169,274.4151.270647kNO-49 to 88consistent; 7k, but section carries no scoring label
1688phase-energy seed1 stock185,341.00105.00017kNO365 to 432consistent; 7k, but section carries no scoring label
1688phase-energy seed1 clear-only151,969.00100.00017kNO120 to 190consistent; 7k, but section carries no scoring label
1689phase-energy seed1 phase-only67,049.0050.00017kNO-59 to 81consistent; 7k, but section carries no scoring label
1689phase-energy seed1 moderate203,191.00135.00017kNO105 to 157consistent; 7k, but section carries no scoring label
1690phase-energy seed1 aggressive193,310.00130.00017kNO87 to 141consistent; 7k, but section carries no scoring label
1697phase-energy 4-game stock143,299.5088.75047kNO215 to 294consistent; 7k, but section carries no scoring label
1698phase-energy 4-game clear-only244,186.50156.25047kNO163 to 208consistent; 7k, but section carries no scoring label
1699phase-energy 4-game phase-only93,784.7565.50047kNO32 to 139consistent; 7k, but section carries no scoring label
1700phase-energy 4-game moderate169,493.75112.50047kNO107 to 169consistent; 7k, but section carries no scoring label
1751clear-reward heldout stock155,655.38101.25087kNO137 to 206consistent; 7k, but section carries no scoring label
1752clear-reward heldout +600106,701.5072.62587kNO69 to 166consistent; 7k, but section carries no scoring label
1819selective-D5 heldout D4120,580.7582.87587kNO55 to 139consistent; 7k, but section carries no scoring label
1819selective-D5 heldout D5w3133,977.1289.75087kNO93 to 171consistent; 7k, but section carries no scoring label
1828selective-D5 screen D4182,041.12115.87587kNO171 to 231consistent; 7k, but section carries no scoring label
1829selective-D5 screen D5w3174,808.38112.37587kNO156 to 218consistent; 7k, but section carries no scoring label
1886cycle-boundary pilot D4231,290.00150.00017kNO142 to 189consistent; 7k, but section carries no scoring label
1886cycle-boundary pilot D5107,668.0075.00017kNO36 to 129consistent; 7k, but section carries no scoring label
1949D5/s3 pilot stock D4/s5269,141.00170.00017kNO183 to 224consistent; 7k, but section carries no scoring label
1950D5/s3 pilot D4/s3151,153.0095.00017kNO191 to 265consistent; 7k, but section carries no scoring label
1950D5/s3 pilot D5/s3182,622.00120.00017kNO122 to 180consistent; 7k, but section carries no scoring label
2003phase5 veto pilot (identical)162,102.00110.00017kNO74 to 137consistent; 7k, but section carries no scoring label
2103D2-only sanity diagnostic119,061.2581.250127kNO65 to 152consistent; 7k, but section carries no scoring label
2104D4 comparator (same 12)115,073.0877.170127kNO91 to 182consistent; 7k, but section carries no scoring label
2167reveal-reward seed1 stock140,681.0090.00017kNO163 to 241consistent; 7k, but section carries no scoring label
2167reveal-reward seed1 reveal-only171,147.00108.00017kNO185 to 250consistent; 7k, but section carries no scoring label
2168reveal-reward seed1 balanced370,588.00225.00017kNO247 to 278consistent; 7k, but section carries no scoring label
2176reveal-reward fit stock110,139.2571.25047kNO146 to 244consistent; 7k, but section carries no scoring label
2177reveal-reward fit reveal-only117,299.2577.50047kNO114 to 204consistent; 7k, but section carries no scoring label
2178reveal-reward fit balanced152,413.2598.75047kNO143 to 214consistent; 7k, but section carries no scoring label
2188reveal-reward heldout stock108,247.5074.37587kNO55 to 150consistent; 7k, but section carries no scoring label
2189reveal-reward heldout balanced101,147.8870.12587kNO42 to 142consistent; 7k, but section carries no scoring label
2255rollout-veto pilot stock D4159,616.00105.00017kNO120 to 187consistent; 7k, but section carries no scoring label
2256rollout-veto pilot veto404,047.00250.00017kNO216 to 244consistent; 7k, but section carries no scoring label
2764quality-ext 3ded0001 stock109,264.0070.00017kNO161 to 261consistent; 7k, but section carries no scoring label
2764quality-ext 3ded0001 veto153,925.00100.00017kNO139 to 209consistent; 7k, but section carries no scoring label
2765quality-ext 3ded0002 both59,004.0045.00017kNO-89 to 67consistent; 7k, but section carries no scoring label
2766quality-ext 3ded0003 stock100,147.0070.00017kNO31 to 131consistent; 7k, but section carries no scoring label
2766quality-ext 3ded0003 veto81,662.0060.00017kNO-39 to 78consistent; 7k, but section carries no scoring label
2768quality-ext mean veto174,659.50113.75047kNO135 to 197consistent; 7k, but section carries no scoring label
2768quality-ext mean stock107,007.7572.50047kNO76 to 173consistent; 7k, but section carries no scoring label
2830ladder probe D2 base98,642.2968.7702567kNO34 to 136consistent; 7k, but section carries no scoring label
2831ladder probe D2 w500103,467.4671.5902567kNO45 to 143consistent; 7k, but section carries no scoring label
2845ladder D4 stock124,934.3883.87587kNO90 to 173consistent; 7k, but section carries no scoring label
2846ladder D4 candidate121,848.6382.12587kNO84 to 169consistent; 7k, but section carries no scoring label
3092TC corrected score-TD66,625.1249.469647kNO-53 to 88consistent; 7k, but section carries no scoring label
3093TC legacy score-TD 10k73,480.4553.766647kNO-33 to 97consistent; 7k, but section carries no scoring label
3098TC corrected MC66,296.9549.312647kNO-56 to 86consistent; 7k, but section carries no scoring label
3099TC legacy MC 10k66,442.0049.453647kNO-56 to 85consistent; 7k, but section carries no scoring label
3099TC legacy MC 100k78,194.2357.031647kNO-29 to 94consistent; 7k, but section carries no scoring label
3178phase-conditioned n-tuple68,463.2550.828647kNO-53 to 85consistent; 7k, but section carries no scoring label
3335CORRECTED replay screen D3318,528.7593.000417kyes25 to 208consistent; single mode only
3335CORRECTED replay screen D4399,951.75115.000417kyes78 to 226consistent; single mode only
3337CORRECTED replay conf D3235,071.2571.000817kyes-89 to 150consistent; single mode only
3337CORRECTED replay conf D4400,675.25116.375817kyes43 to 189consistent; single mode only
3491rainbow StageA random73,670.0626.4103217kyes-611 to 33consistent; single mode only
3492rainbow StageA learned101,324.9733.9103217kyes-412 to 89consistent; single mode only
3502rainbow StageB fair D1168,072.3852.9403217kyes-225 to 96consistent; single mode only
3503rainbow StageB learned 1m111,092.2536.8403217kyes-384 to 77consistent; single mode only
3593evo pilot start137,725.0044.5509617kyes-309 to 73consistent; single mode only
3593evo pilot end151,923.0048.4909617kyes-267 to 84consistent; single mode only
3602evo tournament hand-seeded136,169.1544.15612817kyes-316 to 69consistent; single mode only
3603evo tournament evolved157,528.5050.23412817kyes-264 to 74consistent; single mode only
3619evo search direct162,932.2551.875817kyes-259 to 69consistent; single mode only
3620evo search d2w2s3171,204.5053.625817kyes-207 to 110consistent; single mode only
3621evo search d3w2s3235,950.0071.250817kyes-88 to 150consistent; single mode only
3622evo search d4w2s3170,558.3853.750817kyes-227 to 89consistent; single mode only
3623evo search d3w3s3175,596.2554.875817kyes-200 to 110consistent; single mode only
3624evo search d4w3s3247,404.6375.000817kyes-101 to 125consistent; single mode only
3625evo search d3w2s5234,309.6371.250817kyes-111 to 127consistent; single mode only
3626evo search d4w2s5272,605.1381.750817kyes-65 to 143consistent; single mode only
3627evo search d5w2s3253,689.5076.250817kyes-73 to 150consistent; single mode only
3707public-rollout-PI fair D1151,909.2548.750417kyes-284 to 65consistent; single mode only
3708public-rollout-PI 15-tape162,491.5050.000417kyes-150 to 190consistent; single mode only
3798torch clone-training D2 corpus244,207.9573.54776817kyes-80 to 152consistent; single mode only
3799torch heldout D2 corpus231,063.2270.12125617kyes-105 to 138consistent; single mode only
3800torch DAgger student corpus130,565.0242.29351217kyes-313 to 89consistent; single mode only
3806torch clone dev141,986.9445.1253217kyes-253 to 123consistent; single mode only
3807torch dev random79,307.8827.9693217kyes-564 to 43consistent; single mode only
3807torch dev fair D1181,846.4456.2813217kyes-169 to 133consistent; single mode only
3808torch dev fair D2191,189.3458.6883217kyes-142 to 147consistent; single mode only
3827torch correction dev142,364.0345.3133217kyes-258 to 117consistent; single mode only
4027gradaccum iter1 batch112,175.5237.16851217kyes-382 to 75consistent; single mode only
4027gradaccum iter32 batch136,608.0544.03751217kyes-298 to 88consistent; single mode only
4033gradaccum dev candidate142,677.7845.6566417kyes-275 to 97consistent; single mode only
4033gradaccum dev clone130,797.4142.5006417kyes-322 to 78consistent; single mode only
4034gradaccum dev fair D1180,713.4256.3596417kyes-194 to 108consistent; single mode only
4035gradaccum dev fair D2241,825.2072.5946417kyes-69 to 165consistent; single mode only
4035gradaccum dev random77,674.4127.4846417kyes-574 to 45consistent; single mode only
4143manifold root prior253,798.8873.9381617kno33 to 263consistent; single mode only
4143manifold fair D3301,101.0688.9381617kno-14 to 177consistent; single mode only
4196primal-dual calibration175,834.0055.00651217kno-203 to 106consistent; single mode only
4234corrected-D4 bootstrap (64)308,295.5890.0316417kyes24 to 213consistent; single mode only
4236regen round1 roll-ins110,294.0036.386None17kyes-369 to 98consistent; single mode only
4236regen round2 peak138,229.0044.134None17kyes-268 to 117consistent; single mode only
4237regen round8116,598.0038.046None17kyes-335 to 111consistent; single mode only
4366optimistic n-tuple final chunk176,247.0054.811None17kno-184 to 126consistent; single mode only
4372optimistic StageA direct181,733.4256.3596417kno-175 to 126consistent; single mode only
4373optimistic StageA 2-boundary113,643.9737.3756417kno-359 to 95consistent; single mode only
4375optimistic half1 direct180,667.0056.1253217kno-181 to 122consistent; single mode only
4375optimistic half1 search118,367.0038.7193217kno-343 to 96consistent; single mode only
4375optimistic half2 direct182,800.0056.5943217kno-170 to 130consistent; single mode only
4375optimistic half2 search108,921.0036.0313217kno-377 to 95consistent; single mode only
4399vertical reservoir candidate160,498.0950.89112817kyes-246 to 88consistent; single mode only
4399vertical reservoir fair D1178,554.4455.75012817kyes-197 to 108consistent; single mode only
4409viability controller StageA132,537.0943.2813217kyes-338 to 55consistent; single mode only
4410viability fair D1172,697.6253.9693217kyes-200 to 115consistent; single mode only
4421constructive spectrum StageA266,695.5079.5003217kyes-45 to 168consistent; single mode only
4422constructive fair D1157,198.0649.8753217kyes-248 to 93consistent; single mode only
4425constructive D4 integration283,286.0083.750417kyes-17 to 186consistent; single mode only
4425exact D4 fitting quartet372,870.50106.250417kyes109 to 269consistent; single mode only
4437H12 horizon299,730.5688.3443217kyes-7 to 185consistent; single mode only
4438H7 horizon258,223.9477.2193217kyes-56 to 164consistent; single mode only
4440H17 horizon202,634.0061.9693217kyes-130 to 144consistent; single mode only
4440H27 horizon261,633.0077.9383217kyes-43 to 175consistent; single mode only
4441H12 pareto gate302,114.9189.2813217kyes-16 to 174consistent; single mode only
4441H7 comparator254,541.3476.3443217kyes-66 to 157consistent; single mode only
4469tail-CEM start policy208,940.7064.00425617kyes-136 to 130consistent; single mode only
4470tail-CEM champion214,968.9365.59025617kyes-123 to 137consistent; single mode only

Summary of section (a)

OutcomeRows
Consistent with corrected 17,000-point Hardcore scoring84
Consistent with historical 7,000-point Sequence scoring119
Unclassifiable (no move count recorded)2
Consistent with neither (transcription error)0
Ambiguous between modes0

Positive finding. The ledger's numbers are arithmetically sound. Not one (score, moves) pair is impossible under both bonuses, and not one is compatible with both. There is no detectable transcription error in 205 reported results. Independent corroboration: 26 approach sources carry a kLevelBonus == 7'000 build assertion, and every one of them matches a row this audit classified as 7k from the arithmetic alone.

Negative finding. Of the 119 rows that are 7,000-point Sequence-scored, only 38 sit inside a history.md section that says so. 81 rows across 23 experiment sections carry 7,000-point scores with no scoring-mode label at all. The ledger's own disclaimer (history.md:57, repeated at 3347) scopes itself to "experiments below that identify levelBonus: 7000" — and grep finds that string in exactly two places in the file, both of which are the disclaimer itself. The disclaimer's selector matches zero experiment sections.

The unlabeled 7k sections are:

accessible-energy-root-prior (773) · transition-reward-horizon (1091–1092) · fair-cem-optimizer (1150–1159) · fair-cem-depth4-interaction (1220–1229) · fair-depth4-s7 (1288) · oracle-topology-residual-extension (1452–1465) · fair-d1-rollout-improvement (1563–1564) · ppo.hpp v1 audit (1611–1613) · ppo-v2 (1633–1634) · fair-phase-energy-release (1688–1700) · fair-clear-reward-confirmation (1751–1752) · fair-selective-depth (1819–1829) · fair-cycle-boundary-depth5 (1886) · fair-depth5-s3 (1949–1950) · d4-phase5-value-veto (2003) · scaled-d4-distill D2 diagnostic (2103–2104) · fair-reveal-reward (2167–2189) · d4-d2-rollout-veto (2255–2256) · d4-d2-rollout-veto-quality-extension (2764–2768) · d2-vertical-ladder-probe (2830–2831) · fair-vertical-ladder-depth4 (2845–2846) · ntuple-tc (3092–3099) · ntuple-phase-conditioned (3178).

This is not cosmetic. It means the entire fair-D4 ablation programme — seven-stratum chance, CEM-tuned leaf coefficients, selective D5, cycle-boundary D5, full-width D5/s3, clear reward, reveal reward, vertical-ladder energy, phase-energy release, the 25-move rollout veto, and the phase-5 value veto — was conducted, gated, and rejected under the wrong level bonus, and history.md does not say so at any of those sections.

Two board-clear observations

The 70,000-point board-clear bonus is never counted anywhere in the repository. research/schemas/game-result-v1.schema.json has no boardClears field, no rowRises field, and no scoringMode/levelBonus field; neither does the "Standard per-game record" list in docs/benchmarks.md. The residual column in section (a) therefore cannot be decomposed into chains versus clears for any run.

The residuals nevertheless carry a real signal that the ledger never states. Public fair searches sit at 120–230 non-level points per move. The privileged future-aware oracle sits at 730–830 (history.md:568, 607, 722, 735) — a 4–6× higher chain-scoring density, not merely a longer game. That is a quantitative restatement of the "oracle gap" that is more informative than the raw score comparison, and it is currently invisible because no board-clear or per-depth wave counter is retained.


(b) Seed-range import table

research/seeds/ contains only a README that says "Do not assign a new range until historical usage has been conservatively imported." docs/benchmarks.md repeats the requirement. No registry exists. The table below is the conservative import, assembled from history.md, the frozen protocols, and hard-coded constants in approaches/.

Legend: CONSUMED = the ledger records the range as read; RESERVED = the ledger explicitly records it as declared-but-unopened; UNDOCUMENTED = the constant exists in source with no ledger entry.

Parity, self-test and calibration families

RangeSizeExperimentCitationStated roleAudited state
0x2d7000000x2d7000ff256native/TypeScript parity sweephistory.md:74parityCONSUMED (reproduced in checkout)
0x2e0000000x2e01ffff131,072declared parity/self-test/scale familyhistory.md:175parity/self-testdeclared; no consumer recorded
0xa57000000xa571869f100,000native throughput benchmarkhistory.md:76benchmarkCONSUMED
0xa51d00000xa51dffff65,536source constant, no ledger entryapproaches/unknownUNDOCUMENTED

0x3d10x3d6 — training and fitting lanes

RangeSizeExperimentCitationStated roleAudited state
0x3d1000000x3d10270f10,000n-tuple TC score-TD; replayed by phase-conditionedhistory.md:3091, 3168trainingCONSUMED (twice)
0x3d2000000x3d20003f64burned probe: TC, phase-conditioned, optimistic-phase Stage Ahistory.md:3092, 3169, 4346burned developmentCONSUMED (three times)
0x3d210000TC/phase-conditioned reservedhistory.md:3134, 3217reservedRESERVED
0x3d3000000x3d3fffff1,048,576compiled Torch-env allowlisthistory.md:3838allowlistmixed (see rows below)
0x3d3000400x3d3000434Torch smoke replayhistory.md:3915smokeCONSUMED
0x3d3100000x3d3102ff768Torch clone-training D2 corpushistory.md:3798trainingCONSUMED
0x3d3200000x3d3200ff256Torch held-out validation corpushistory.md:3799validation (dev)CONSUMED
0x3d3300000x3d3301ff512Torch DAgger student corpushistory.md:3800trainingCONSUMED
0x3d3400000x3d3401ff512direct-PPO first collection (run aborted)history.md:3922trainingCONSUMED
0x3d3402000x3d340fff3,584direct-PPO remainderhistory.md:3928trainingRESERVED
0x3d3500000x3d352fff12,288direct-PPO traininghistory.md:3907trainingRESERVED
0x3d3600000x3d36003f64direct-PPO developmenthistory.md:3908developmentRESERVED
0x3d3900000x3d393fff16,384grad-accum PPO traininghistory.md:4024trainingCONSUMED
0x3d3a00000x3d3a003f64grad-accum PPO developmenthistory.md:4032developmentCONSUMED
0x3d400000~0x3d4087de~34,783Rainbow-lite Q training (span not recorded; inferred from 34,783 games)history.md:3476, 3509trainingCONSUMED — span must be reserved conservatively to 0x3d40ffff
0x3d420000source constant, no ledger entryapproaches/unknownUNDOCUMENTED
0x3d500000~0x3d5009ff~2,560evolved-public-policy generation batches (span not recorded)history.md:3573fittingCONSUMED — reserve to 0x3d50ffff
0x3d5000000x3d51ffff131,072compiled evo fitting allowlisthistory.md:3577allowlistmixed
0x3d5100000x3d51007f128evo fitting tournamenthistory.md:3652fittingCONSUMED
0x3d5109000x3d5109078evo selective-search ablation (reuses fitting)history.md:3614fitting reuseCONSUMED
0x3d520000source constant, no ledger entryapproaches/unknownUNDOCUMENTED
0x3d6000000x3d6000034public rollout policy iteration fittinghistory.md:3700fittingCONSUMED
0x3d6b00000x3d6b03ff1,024oracle-manifold negatives; replayed by root priorhistory.md:4079, 4129fittingCONSUMED (twice)
0x3d6b10000x3d6b6fff24,576manifold policy traininghistory.md:4098trainingRESERVED
0x3d6c00000x3d6c001f32manifold Stage Ahistory.md:4099screenRESERVED
0x3d6f00000x3d6f000f16manifold root-prior fittinghistory.md:4142fittingCONSUMED
0x3d6f10000x3d6f101f32manifold root-prior screenhistory.md:4148screenRESERVED
0x3d610000, 0x3d630000, 0x3d640000, 0x3d6500000x3d65ffff, 0x3d660000, 0x3d6700000x3d677fff, 0x3d6800000x3d68001f, 0x3d6900000x3d69bfff, 0x3d6a00000x3d6a7040, 0x3d6d0000, 0x3d6e4000~24 further constants in approaches/ with no history.md entrysource onlyunknownUNDOCUMENTED — must be imported blind

0x3d7… — the collision zone

The n-tuple baseline consumes consecutive seeds (src/core/native/ntuple.hpp:559, training_seed_start + game), so:

RangeSizeExperimentCitationAudited state
0x3d7000000x3d71869f100,000n-tuple base traininghistory.md:99–104CONSUMED
0x3d7186a00x3d77a11f400,000hierarchical warm-start traininghistory.md:111–117CONSUMED

Twelve later ranges that the ledger or source calls "fresh", "training-only", or "collection" fall inside the first 100,000-game training block:

Overlapping rangeDescribed asCitationOffset into training block
0x3d700000privileged-oracle upper-bound seedhistory.md:568game 0
0x3d700000throughput-probe.cpp seed startapproaches/baselines-diagnostics/throughput-probe/throughput-probe.cpp:53game 0
0x3d700000evolution.cpp kTrainingSeedStartapproaches/heuristic-search/evolution/evolution.cpp:32game 0
0x3d700100phase-benchmark.cpp defaultapproaches/baselines-diagnostics/phase-benchmark/phase-benchmark.cpp:122256
0x3d700300 / 0x3d700400edge-priority screen / confirmapproaches/heuristic-search/edge-priority/edge-priority-lab.cpp:29–30768 / 1,024
0x3d704000survival-value-scale collectionhistory.md:34716,384
0x3d706000structured-NNUE collectionhistory.md:38524,576
0x3d706800denoised-value collectionhistory.md:44726,624
0x3d709000 / 0x3d709100nnue-selective screen / confirmationapproaches/tree-search/nnue-guided/nnue-selective-search.cpp:11–1236,864
0x3d70b00003"fresh" nnue-guided screenhistory.md:65845,056
0x3d70c00003"fresh" root-quadrature screenhistory.md:67349,152
0x3d70d…"fresh" root-ensemble traininghistory.md:63853,248
0x3d70e00003"fresh" exact-depth-4 screenhistory.md:68757,344
0x3d70f0000f"fresh" topology-audit seedshistory.md:72161,440

The 0x3d7a…0x3d7f… oracle-distillation ranges (history.md:603–616) end above 0x3d77a11f and do not collide.

RangeSizeExperimentCitationAudited state
0x3d7a0000…, 0x3d7b0000oracle / behavior label fittinghistory.md:603–604CONSUMED
0x3d7c0000…, 0x3d7d0000whole-game label holdoutshistory.md:604–605CONSUMED
0x3d7e00000x3d7e00078oracle-distill policy screenhistory.md:612CONSUMED
0x3d7f00000x3d7f000f16oracle-distill confirmationhistory.md:616CONSUMED

0x3d90x3df — development and fitting cohorts

RangeSizeExperimentCitationStated roleAudited state
0x3d9500000x3d95000b12oracle 500-move feasibility ceilinghistory.md:734training-onlyCONSUMED
0x3d9a00000x3d9a001724transition-reward diagnostichistory.md:1089training-onlyCONSUMED
0x3d9c…topology-residual fittinghistory.md:1332fittingCONSUMED
0x3d9d00000x3d9d00078topology-residual heldout; replayed by extensionhistory.md:1332, 1405heldoutCONSUMED (twice)
0x3d9d00080x3d9d000f8topology-residual extensionhistory.md:1407prediction-onlyCONSUMED
0x3d9e00000x3d9e00ff256vertical-ladder D2 coefficient sweephistory.md:2829trainingCONSUMED
0x3d9f00000x3d9f00078vertical-ladder D4 transferhistory.md:2840training-onlyCONSUMED
0x3da000000x3da0001f32observable-MCTS origin gameshistory.md:814training-onlyCONSUMED
0x3da100000x3da1000f16observable-MCTS disjoint rootshistory.md:819heldoutCONSUMED
0x3da200000x3da2000f16CEM-D4 interaction traininghistory.md:1213trainingCONSUMED
0x3da300000x3da3000f16CEM-D4 interaction heldouthistory.md:1214heldoutCONSUMED
0x3da410000x3da7ffff258,048regenerative expert iteration lanehistory.md:4231sealed training laneCONSUMED
0x3dac00000x3dadffff131,072primal-dual actor-critichistory.md:4194sealed training laneCONSUMED
0x3dae…, 0x3daf…primal-dual gameplay gateshistory.md:4201gateRESERVED
0x3db000000x3db0001f32MCTS-confidence fitting originshistory.md:837fittingCONSUMED
0x3db100000x3db1000f16MCTS-confidence heldouthistory.md:848heldoutCONSUMED
0x3dc100000x3dc1001f32fair-leaf CEM heldouthistory.md:1150heldoutCONSUMED
0x3dd000000x3dd000034selective-depth fitting menuhistory.md:1807fittingCONSUMED
0x3dd100000x3dd100078selective-depth training heldouthistory.md:1818heldoutCONSUMED
0x3de100000x3de100078fair D4/s7 fittinghistory.md:1287fittingCONSUMED
0x3de300000x3de3001f32d4-q-clone gameplayhistory.md:1542training-onlyRESERVED
0x3de400001D5/s3 pilot triplehistory.md:1941–1943fittingCONSUMED
0x3de400010x3de400077D5/s3 fitting remainderhistory.md:1944fittingRESERVED
0x3de500000x3de500034phase-energy fitting (2 arms incomplete)history.md:1695fittingCONSUMED (partial)
0x3de600000x3de600078clear-reward heldouthistory.md:1750heldoutCONSUMED
0x3de700001cycle-boundary D5 pilot pairhistory.md:1881fittingCONSUMED
0x3de700011cycle-boundary fitting remainderhistory.md:1893fittingRESERVED
0x3de800000x3de800078cycle-boundary heldouthistory.md:1894heldoutRESERVED
0x3de900001phase-5 value-veto pilot pairhistory.md:2002fittingCONSUMED
0x3de900010x3de900033phase-5 veto fitting remainderhistory.md:2014fittingRESERVED
0x3dea00000x3dea00078phase-5 veto heldouthistory.md:2016heldoutRESERVED
0x3ded00001rollout-veto pilot — executed at least four times (pilot, trace replay, exact-compressed replay, cache-free replay)history.md:2254, 2285, 2462, 2500fittingCONSUMED
0x3ded00010x3ded00033rollout-veto quality extensionhistory.md:2750fittingCONSUMED
0x3dee00000x3dee00078rollout-veto heldouthistory.md:2273heldoutRESERVED
0x3def00001reveal-reward pre-observed diagnostichistory.md:2166fittingCONSUMED
0x3def00010x3def00033reveal-reward fitting remainderhistory.md:2170fittingCONSUMED
0x3df000000x3df0000b12fair-D1 rollout-improvement fittinghistory.md:1561fittingCONSUMED
0x3df100000x3df1000f16fair-D1 rollout heldouthistory.md:1572one-shot heldoutRESERVED
0x3df200000x3df2001724scaled-D4-distill fitting (0x3df20000 executed twice)history.md:2067, 2073fittingCONSUMED
0x3df300000x3df3000b12scaled-D4-distill holdout; later re-read by an inadvertent D2 sanity runhistory.md:2075, 2101holdoutCONSUMED (twice)
0x3df400000x3df400078reveal-reward heldouthistory.md:2184heldoutCONSUMED

0x3e… — fresh screens and gated confirmations (40 declared subranges)

ConsumedReserved and never read
0x3e820000…, 0x3e830000…, 0x3e840000–003, 0x3e850000–007, 0x3e870000–03, 0x3e890000–07, 0x3e8b0000–03, 0x3e930000–07, 0x3e950000–007, 0x3e960000–00f, 0x3e9b0000–003, 0x3e9c0000–007, 0x3e9d0000–007, 0x3ea10000–007, 0x3ea30000–007, 0x3ea50000–007, 0x3ea70000–007, 0x3ea90000–007, 0x3eaa0000–00f0x3e7b…, 0x3e7c…, 0x3e940000–0f, 0x3e990000–03, 0x3e9a0000–07, 0x3e9e0000–00f, 0x3e9f0000–07, 0x3ea00000–0f, 0x3ea20000–00f, 0x3ea40000–00f, 0x3ea60000–00f, 0x3ea80000–00f, 0x3eab0000–007, 0x3eac0000–00f, 0x3ead0000–007, 0x3eae0000–00f, 0x3eb10000–007, 0x3eb20000–00f, 0x3eb30000–007, 0x3eb40000–00f, 0x3eb50000–007, 0x3eb60000–00f, 0x3eb70000–007, 0x3eb80000–00f, 0x3ebb0000–007, 0x3ebc0000–00f, 0x3ebd…, 0x3ebe…

No two 0x3e… subranges collide. 0x3ea90000–007 / 0x3eaa0000–00f were declared unread by oracle-topology-residual (history.md:1375) and later legitimately consumed by oracle-topology-residual-extension (history.md:1451, 1457); the import table must record them as CONSUMED.

0x3f…, 0x4d…, 0x5d…, 0x6d…, 0x6e…

RangeSizeExperimentCitationStated roleAudited state
0x3f000000~0x3f0003ff~1,024PPO v1 audit training (8×128 games)history.md:1609trainingCONSUMED (span not stated)
0x3f1000000x3f10003f64PPO v1/v2 fitting probehistory.md:1610fitting probeCONSUMED
0x3f200000PPO v2 heldouthistory.md:1640heldoutRESERVED
0x3f010000, 0x3f030000, 0x3f040000source constants, no ledger entryapproaches/unknownUNDOCUMENTED
0x4d4000000x4d40001f32Rainbow Stage A random probehistory.md:3477development probeCONSUMED
0x4d4000200x4d40003f32Rainbow Stage B fair-D1 probehistory.md:3480development probeCONSUMED
0x4d4000400x4d40007f64Rainbow Stage C probehistory.md:3482development probeRESERVED
0x4d5000000x4d50007f128evolved-public-policy probehistory.md:3578, 3634probeRESERVED
0x4d6000000x4d6000078public rollout PI developmenthistory.md:3715developmentRESERVED
0x4d7000000x4d70003f64n-tuple / phase-blend / evolution development probehistory.md:103, 137, 156burned developmentCONSUMED (repeatedly)
0x4d410000, 0x4d610000, 0x4d630000, 0x4d65c000, 0x4d670000, 0x4d690000, 0x4d69c000, 0x4d6a00000x4d6a7000, 0x4d6b0000, 0x4d6b1000, 0x4d6c1000, 0x4d6d0000, 0x4d6e4000, 0x4d6f0000, 0x4d710000, 0x4d730000~17 constants in approaches/ with no ledger entrysource onlyunknownUNDOCUMENTED
0x5d700000phase-blend / phase-fair calibration and tuninghistory.md:156, phase-fair-combination/main.ts:35tuningCONSUMED (span not stated)
0x6d0000000x6dffffff16,777,216optimistic-phase n-tuple fit lane (1,057,844 games used)history.md:4338fittingCONSUMED
0x6e0000000x6e0000ff256optimistic-phase development cohorthistory.md:4341developmentRESERVED (capability absent from binary)

0x7d… protected and 0xd7… final

Declared bankCitationState
0x7d0000000x7d00ffffhistory.md:181UNOPENED — every experiment section that mentions it records it as unread
0xd70000000xd70000ffhistory.md:183UNOPENED — same

I found no ledger statement, artifact, or gate result anywhere that indicates a protected or final seed was read. status.md:11–12 is consistent with the ledger on this point.

However, the declared bank boundaries are too narrow for the constants the sources already use. approaches/ hard-codes protected/final constants far outside the declared banks:

  • 0x7d600000, 0x7d630000, 0x7d65c000, 0x7d660000, 0x7d670000, 0x7d690000, 0x7d69c000, 0x7d6a0000, 0x7d6a1000, 0x7d6a4000, 0x7d6a5000, 0x7d6a6000, 0x7d6a7000, 0x7d6b0000, 0x7d6b1000, 0x7d6c1000, 0x7d6d0000, 0x7d6e5000, 0x7d6f0000, 0x7d700000, 0x7d730000
  • 0xd7600000, 0xd7630000, 0xd765c000, 0xd7660000, 0xd7670000, 0xd7690000, 0xd769c000, 0xd76a0000, 0xd76a1000, 0xd76a40000xd76a7000, 0xd76c0000, 0xd76c8000, 0xd76d0000, 0xd76e5000, 0xd76f0000, 0xd7738000

A conservative importer must reserve the entire 0x7d…… and 0xd7…… top-byte families, not the two narrow banks named in history.md:181–183.

Importer hazards

  1. ASCII domain tags are not seeds. 0x4d435453 = "MCTS", 0x4d504f4c = "MPOL", 0x4d52564c = "MRVL", 0x4d444953 = "MDIS", 0x6e455301, 0x6e4c4301, 0x3d40c0de, 0x3f00c0de are RNG-domain separators, not game seeds. A naive grep-based importer will misclassify them.
  2. 0xd7075eed is the fair-D4 policy salt (baselines-v1.json, algorithm.policySeedHex), not a final-cohort game seed. It nevertheless sits inside the 0xd7 final-seed family — a namespace collision worth fixing in a successor manifest.
  3. Six ranges have no recorded span and must be reserved generously: Rainbow training (0x3d4…), evo generation batches (0x3d50…), PPO v1 training (0x3f00…), phase-blend tuning (0x5d70…), and the 0x3d7a…/0x3d7b…/0x3d7c…/0x3d7d… oracle label families.
  4. Nine complete-game experiments record no seed range at all — see Finding S3.

(c) Findings by severity

CRITICAL

C1 — A frozen protocol embeds a 7,000-point number as the "corrected" D4 reference, making its qualification gate unsatisfiable. artifacts/protocols/optimistic-phase-ntuple/protocol.json:101 requires, at 100 million transitions, that

"corrected D4 reproduces frozen means 176925.25 score and 116.375 moves"

176,925.25 is the 7,000-point Sequence-scored confirmation mean (history.md:970). The corrected-17k mean for the identical cohort and identical trajectories is 400,675.25 (history.md:3337). A corrected-scoring D4 run can never reproduce 176,925.25, so this gate condition is permanently false and the protocol's Stage-B qualification path is dead. The same protocol also demands "search aggregate score and moves are each >= corrected D4 on identical seeds" — which, read together with line 101, is self-contradictory about which "D4" is meant.

AGENTS.md forbids editing frozen protocol artifacts. The correct remedy is a new versioned protocol that names the scoring mode explicitly and cites history.md:3337; the v1 record must be retained with this defect documented.

C2 — Two preregistered gate rejections reverse under corrected scoring. Because the corrected replay proves that the level bonus does not change fair search decisions (section 0), every 7k score-mean gate can be exactly recomputed as score + 2,000·moves − 9,250.

ExperimentCitation7k Δscore / ΔmovesCorrected ΔscoreRecorded outcomeCorrected outcome
Fair D4 seven-stratum (fair-depth4-s7)history.md:1287–1294−163.63 / +2.250+4,336rejected at fitting; "the score-mean failure is decisive"score mean improves; lower-tail-25% score and survival already improved (54,922→63,230; 42.5→47.5) — the fitting gate would have passed
Fair-leaf CEM (fair-cem-optimizer) fresh screenhistory.md:1158–1163−905.38 / +1.875+2,845rejected; "because both means did not improve, 0x3ea40000…00f was never read"both means improve — the confirmation range would have been opened

These are not speculative rescorings. They are arithmetic on the ledger's own paired means, using a rescaling the ledger itself demonstrates. The two rejections are therefore scoring-mode artefacts, not scientific results, and docs/strategies.md:157–162 ("more chance samples … did not reliably improve the whole game") and the corresponding experiment-index.md row ("Seven-stratum D4 … score-neutral to worse") overstate the evidence.

For completeness I recomputed the third close call and it does not flip: the 25-move rollout-veto quality extension (history.md:2754–2775) fails its lower-half-score retention gate at 88.38% under 7k and at 89.62% under corrected scoring — narrower, but still below the 90% floor, and its "2 of 3 new pairs" sub-gate is unaffected. Its rejection stands.

I also checked every other paired comparison in the 7k set for a sign change: these two are the only ones. The rest have Δscore and Δmoves of the same sign, so rescoring strengthens rather than reverses them.

C3 — 81 of 119 seven-thousand-point results carry no scoring-mode label, and the ledger's disclaimer selects nothing. history.md:57 scopes the archival warning to "experiments below that identify levelBonus: 7000"; that literal string appears nowhere in the file except in the two disclaimers themselves (history.md:57, 3347). Twenty-three experiment sections — including the entire fair-D4 ablation programme — present 7k scores as if they were corrected-mode results. See section (a) for the enumerated list.

HIGH

H1 — The fitting selection that opened the reveal-reward heldout is entirely produced by one pre-observed game, and reverses on the three genuinely fresh ones. history.md:2166–2184. Seed 0x3def0000 was run first as "a separately persisted diagnostic", frozen byte-for-byte, and then included in the four-game fitting mean that selected the winner. Removing it:

Arm4-game fitting mean (h:2176–2178)Pre-observed 0x3def0000 (h:2167–2168)Mean of the 3 fresh games
Stock110,139.25 / 71.25140,681 / 9099,959 / 65.0
Reveal-only117,299.25 / 77.50171,147 / 10899,350 / 56.7
Balanced (selected)152,413.25 / 98.75370,588 / 22579,688 / 56.7

The selected arm is 20% worse on score and 13% worse on moves than stock on the three fitting games that were not already observed; 60.8% of its total fitting score comes from the single pre-observed game. The ledger's own lower quartiles corroborate this (balanced Q25 74,179.50 vs stock 74,049.75 — a 0.2% difference against a 38% mean difference). This exactly predicts the heldout reversal that followed. history.md discloses the pre-observation (2166–2172) but never states the dominance, and the gate was not re-evaluated without the pre-observed seed.

H2 — status.md's headline 64-game D4 reference has no identified cohort, no dispersion statistics, and no censoring statement. The number 308,295.578 / 90.031 appears exactly once in the ledger (history.md:4234), as an internal bootstrap comparator inside the regenerative expert iteration experiment, whose seed lane is 0x3da41000…0x3da7ffff. Which 64 seeds were used is not recorded. docs/methodology.md:69–77 requires mean, median, lower quartile, minimum, move Q25, censor count, clears/reveals per move, chain depth, paired deltas, and confidence bounds for a reported cohort; none of these are recorded for the repository's primary reference number. status.md:8–9, status.md:22, experiment-index.md:41–44, README.md:54, and baselines-v1.json.strengthEvidence.broadMeanScore all propagate it.

H3 — Twelve later "fresh"/"training-only" seed ranges overlap the n-tuple training block. See the 0x3d7… collision table in section (b). Five of them are described in history.md with the word "fresh" (658, 673, 638, 687, 721). The scientific contamination risk is low — the colliding consumers are unrelated fair-expectimax and oracle programs that never saw the n-tuple model — but the ledger's freshness claim is factually wrong, and a seed allocator that imports the ledger at face value will re-issue burned seeds.

H4 — Fourteen sources whose ledger results are 7k-scored have no kLevelBonus == 7'000 build lock. 26 sources do carry the lock; experiment-index.md:35–37 implies the lock protects "several Sequence-scored sources". The unlocked 7k-era sources are: fair-clear-reward-confirmation.cpp, fair-reveal-reward.cpp, oracle-topology-residual-extension.cpp, d4-d2-rollout-veto-quality-extension.cpp, d2-vertical-ladder-probe.cpp, fair-vertical-ladder-depth4.cpp, ntuple-tc.cpp, ntuple-phase-conditioned.cpp, scaled-d4-distill.cpp, transition-reward-horizon.cpp, d4-d2-rollout-veto-exact-compressed.cpp, d4-d2-rollout-veto-cache-free.cpp, d2-rollout-teacher-compression.cpp, d2-long-outcome-ranker.cpp. Rebuilding any of them against the current 17k engine will silently produce numbers that disagree with the ledger. (Three of them assert the 7k pilot totals at replay and would abort loudly, which is the desired behaviour — the remainder would not.)

H5 — The 70,000-point board-clear bonus is unaccounted for everywhere. Neither research/schemas/game-result-v1.schema.json nor the "Standard per-game record" list in docs/benchmarks.md retains a board-clear count or a row-rise count, and no history.md entry reports one. Consequently the score identity cannot be verified per game for any existing or future run, and the large oracle residuals (730–830 points/move, history.md:568, 607, 722, 735) cannot be attributed between deep chains and board clears.

MEDIUM

M1 — history.md self-describes as chronological but is not. Line 3: "the unabridged chronological record". The scoring-mode sequence disproves it: 17k (144–617) → 7k (514–555) → 17k (568–617) → 7k (640–3178) → 17k (3335+). Since the 2026-08-15 scoring error and its correction are dated events, the sections are ordered by topic. Readers using the file to reconstruct what was known when a gate was frozen will be misled.

M2 — Nine complete-game experiments record no seed range at all. The entire "Explicit reservoir and constructive-cycle policies" block (history.md:4389–4456) and "Tail-focused complete-game CEM" (4458–4484) cite SHA-256 values for every source and artifact but no seed range for: vertical-reservoir 128-game tournament (4398), viability-controller 32-game Stage A (4409), constructive-spectrum 32-game Stage A (4421), constructive D4-integration fitting quartet (4425), horizon-scale 32 fitting games (4437), H12 Pareto risk gate (4441), tail-survival-CEM 33,792 candidate-games and 256-game tournament (4465–4466). The 477-root, eight-origin H200 deployment panel that underpins the four most recent conclusions (4257–4604) likewise records the corpus SHA-256 but never the origin game seeds. These cannot be imported into a seed registry.

M3 — d4-phase5-value-veto uses the wrong level bonus as a policy parameter, not merely as a score label. history.md:1998–1999: a challenger must have "a completed-D4 root-Q loss no greater than one canonical 7,000-point level bonus". The same 7,000 band is baked into d4-d2-rollout-veto (2250), its exact-compressed variant (2451), the teacher-compression menu (2581), and the long-outcome veto classifier (2901, 2914). Under corrected scoring the analogous band is 17,000, so these are not just mislabeled results — they are policies whose admission thresholds are calibrated to the wrong constant. Any port must re-derive the band, which makes it a new candidate, not a rescoring.

M4 — status.md:21 presents a rescoring replay as a cohort result. The row "Fair D4 vs D3: 400,675.25/116.375 vs 235,071.25/71 over 8 games … Recorded, small confirmation cohort" does not say that these are the same eight already consumed development seeds (0x3e9c0000…007) replayed under corrected scoring, with byte-identical trajectories. docs/strategies.md:102–103 gets this right ("corrected-score replay on an already-consumed eight-game confirmation cohort"); status.md and README.md:51–54 do not.

M5 — experiment-index.md overstates the rollout-veto pilot. Its row reads "Runtime-paused — ledger-recorded; one promising pilot passed quality gates but missed the runtime limit by a wide margin." history.md:2263 says the opposite: "This is only one pair, not statistical evidence." No quality gate was evaluated on the pilot; the four-game quality gate that was later run failed (history.md:2771–2775). The index also describes the "original 404,000-point pilot" without noting that 404,047 is a single 7,000-point-scored game.

M6 — docs/strategies.md:281–283 quotes the 404,047/250 vs 159,616/105 pilot with no scoring label, inside a document that states at 60–64 that 7,000-point absolute scores "are not evidence for the Hardcore target". Same omission in the "Compact evidence map" row (375).

M7 — Small-n claims. Twenty-three reported comparisons rest on n ≤ 4, and eleven on n = 1. docs/benchmarks.md classifies 1–8 games as PILOT with "no strength claim". Single-game rows: history.md 568, 1465 (×4), 1688–1690 (×5), 1886, 1949–1950, 2003, 2167–2168, 2255–2256, 2763–2766. Four-game rows: 226, 296, 514, 554, 640, 658, 673, 687, 793, 962, 1697, 2176, 2768, 3335, 3707, 4425. The ledger is generally honest about this in prose (e.g. 1823–1825, 1830–1832, 922–923, 2263), but experiment-index.md and status.md frequently carry the resulting numbers forward without the caveat.

M8 — Means dominated by one game, disclosed unevenly. history.md discloses the dominance at 1825 (selective-D5 heldout: "removing the single +201,765-point/+120-move pair made the means negative"), 1831 (screen), 922–923 (fair-only confirmation), and 1162 (CEM screen). It does not disclose it at 2768–2771, where the four-game rollout-veto quality mean gain of +67,652 falls to +8,725 once the frozen pilot game is removed — a 7.8× dependence on one game — while the text says only "all four leave-one-out subsets were positive" (technically true, materially misleading). And it does not disclose it at 2176–2178 (Finding H1).

M9 — The 0x4d… family has two contradictory declared roles. history.md:179–180 declares 0x4d70… and 0x5d70… as "historical development/tuning ranges that have already been observed"; history.md:626 and 4099 instead treat the whole 0x4d byte as protected ("every protected 0x4d, 0x7d, and 0xd7 cohort remain unopened"). Both cannot be true: 0x4d700000…3f (103, 137, 156) and 0x4d400000…3f (3477, 3480) were read. status.md's protected/final assertion is unaffected — those are 0x7d/0xd7 — but the seed registry must not inherit the "0x4d is protected" wording.

LOW

L1 — history.md:462–469 is internally contradictory about the denoised-value screen. Line 462 calls it "that legacy-scoring run"; line 467–468 says "its reported absolute point totals use the verified 17,000-point Hardcore bonus". No point totals are reported for that screen or confirmation at all — only move means (78.75/81.25 and 79.5/88.125). The scoring claim is therefore unverifiable from the ledger, and experiment-index.md's "a small confirmation improved means" inherits the ambiguity.

L2 — history.md:891–903 makes a scoring claim about a pilot whose scores were never recorded. "The historical 155/160-move pilot … Its 17,000-point bonus is now verified as correct." Move counts, clears, and reveals are given; no score is. The section also correctly notes n = 2 non-independent training seeds.

L3 — 0xd7075eed (fair-D4 policy salt) sits inside the 0xd7 final-cohort family. No leakage: it is a policy-derived salt, never a game seed. But it will be misclassified by any automated seed importer and should be moved out of the reserved byte in a successor manifest.

L4 — status.md:18 ("122 local tests") was not re-verified by this audit; verifying it requires executing the test suite, which is outside a read-only claim-arithmetic audit.

L5 — Numbers that do check out. For the record, I recomputed and confirmed: the quality-extension four-game means, lower halves, and retention percentages (history.md:2763–2773, all exact); the corrected-replay paired gains of +81,423 / +22 and +165,604 / +45.375 (3336, 3338); and the D2/D4 12-game diagnostic move mean of 77.17 = 926 roots / 12 games (2092, 2104). No arithmetic error was found in any of them.


(d) Claims that should be downgraded, with proposed wording

The coordinator owns these edits; none has been applied.

#LocationCurrent wordingProposed wording
D1status.md:21"Fair D4 vs D3: 400,675.25/116.375 vs 235,071.25/71 over 8 games | Detailed ledger | Recorded, small confirmation cohort""Fair D4 vs D3: 400,675.25/116.375 vs 235,071.25/71 over 8 games | Corrected-scoring replay of the already-consumed 0x3e9c0000…007 development cohort; trajectories identical to the original 7,000-point run | Ledger-recorded; burned development seeds, not a fresh cohort"
D2status.md:22, README.md:54, experiment-index.md:41–44, baselines-v1.json"Fair D4: 308,295.578 points and 90.031 moves over 64 games | Recorded broader reference cohort""Fair D4: 308,295.578 points and 90.031 moves over 64 games | Ledger-recorded as an internal bootstrap comparator inside the regenerative-expert-iteration run (history.md:4234); the 64 seeds, dispersion, censoring, and flow statistics required by methodology.md were not retained | Provisional reference mean pending a re-run under the benchmark contract"
D3status.md:23, README.md:58"One D4 game scored 1,246,684 | Task-record only | Anecdote; not an average or qualification""One D4 game is reported at 1,246,684 points | Task-record only; no move count, seed, cohort, scoring mode, or artifact is recorded anywhere in this repository | Unverified anecdote of unknown scoring mode. Under corrected 17k scoring it implies roughly 68–70 rises and ~340–360 moves; under 7k scoring roughly 140–156 rises and ~700–780 moves. It cannot be classified, and it must not be cited as evidence of anything."
D4experiment-index.md (seven-stratum D4 row)"Rejected — ledger-recorded; it was score-neutral to worse, reduced flow, and cost about 3.8 times more work.""Rejected under 7,000-point Sequence scoring — ledger-recorded. Its −163.63-point mean gap reverses to +4,336 when rescored to the corrected 17,000-point bonus (identical trajectories), so the score-mean rejection does not hold under Hardcore rules. The flow regression (clears 1.8875→1.8598, reveals 1.0349→0.9923) and the 3.79× work cost are scoring-independent and remain valid grounds for not adopting it. A corrected-scoring re-test is a live open question."
D5experiment-index.md (fair-leaf CEM row)"Rejected — ledger-recorded; the D3 screen and D4 heldout/tail gates failed.""Rejected under 7,000-point Sequence scoring — ledger-recorded. The D3 fresh screen's −905-point mean gap reverses to +2,845 under corrected scoring, so that screen no longer rejects the candidate; the independent D4 interaction heldout (−17,835 points, −10,938 moves, worst-quartile regression) fails under both scoring modes and is the surviving ground for rejection."
D6experiment-index.md (25-move rollout-veto row)"Runtime-paused — ledger-recorded; one promising pilot passed quality gates but missed the runtime limit by a wide margin.""Runtime-paused — ledger-recorded. A single 7,000-point-scored game (404,047/250 vs 159,616/105, history.md:2254–2256) was strikingly positive; no quality gate was evaluated on it, and the later four-game quality extension failed its lower-half-score and per-pair gates. The runtime projection exceeded its ceiling by >4×."
D7strategies.md:281–283 and :375"A public 25-move, seven-scenario continuation driven by completed D2 produced a striking single pilot: 404,047 points and 250 moves versus 159,616 and 105 for D4."Insert "under the historical 7,000-point Sequence level bonus" after "single pilot", matching the treatment already given to the oracle result at :307–309.
D8strategies.md:157–162"In particular, more chance samples, explicit clear/reveal rewards, risk-sensitive root aggregation, and learned/tuned leaf changes did not reliably improve the whole game.""…did not reliably improve the whole game on the 7,000-point Sequence-scored evidence available. The seven-stratum and CEM-leaf score-mean rejections do not survive rescoring to the corrected 17,000-point bonus and should be treated as open, not settled."
D9experiment-index.md (fair D3 reference row)"Completed — ledger-recorded; it passed its mean-improvement screen and confirmation.""Completed — ledger-recorded; it passed its mean-improvement screen and confirmation under 7,000-point Sequence scoring (history.md:905–919). Only the D3-vs-D4 comparison was later replayed at corrected scoring; the D3-vs-CFPI qualification itself has never been re-scored."
D10experiment-index.md (denoised public value row)"Completed — ledger-recorded; prediction gates passed and a small confirmation improved means…""Completed — ledger-recorded; prediction gates passed and a small confirmation improved mean survival (79.5 → 88.125 moves); no score means were retained for the screen or confirmation, and history.md:462–468 is internally inconsistent about their scoring mode."
D11history.md:57 and :3347"Experiments below that identify levelBonus: 7000 are preserved as historical Sequence-scored evidence."Replace the selector, which currently matches nothing, with an explicit index: add a per-section Scoring: 7,000-point Sequence (archival) or Scoring: 17,000-point Hardcore (corrected) line to each of the ~40 experiment sections, using the classification in section (a) of this audit. Retain the original disclaimer text alongside it.
D12history.md:3"This is the unabridged chronological record of the Drop7 strategy experiments.""This is the unabridged record of the Drop7 strategy experiments, grouped by strategy family rather than strictly by date; use the per-section scoring label and the mode-correction note to establish what was known when a gate was frozen."
D13history.md:2768–2771"All four leave-one-out subsets were positive, and lower-half moves retained 91.30%."Append: "The aggregate gain is dominated by the frozen pilot game: excluding 0x3ded0000, the candidate mean falls from +67,652 to +8,725 points over the three genuinely new pairs."
D14history.md:2180–2184"Balanced was selected by mean score and improved all three preregistered fitting means over stock."Append: "60.8% of the balanced arm's fitting score comes from the single pre-observed seed 0x3def0000. On the three fitting games opened after that observation, balanced averages 79,688 points / 56.7 moves against stock's 99,959 / 65.0 — i.e. the selection reverses without the pre-observed game, which anticipates the heldout failure."
D15research/seeds/README.md(registry not yet created)Create the registry from section (b) of this audit. Reserve the whole 0x7d…… and 0xd7…… byte families, not the narrow banks at history.md:181–183; mark the six ranges with unrecorded spans as generously over-reserved; and record the nine experiments in Finding M2 as seed range unknown — do not reuse any 0x3d/0x3e range until reconstructed.
D16research/schemas/game-result-v1.schema.json(no scoring or bonus fields)Add required scoringMode (hardcore-17000 | sequence-7000), rowRises, and boardClears. This makes score == rowRises*levelBonus + boardClears*70000 + chainPoints a per-game machine-checkable invariant and retires the whole class of defects in Findings C1–C3 and H5.
D17artifacts/protocols/optimistic-phase-ntuple/protocol.json:101"corrected D4 reproduces frozen means 176925.25 score and 116.375 moves"Do not edit the frozen artifact. Register a superseding protocol whose corresponding clause reads "corrected D4 reproduces frozen means 400,675.25 score and 116.375 moves on 0x3e9c0000…0x3e9c0007 (history.md:3337)", and record the v1 defect in the provenance note.

(e) Verdict

Assessed as an audit of the historical evidence ledger, not of any single experiment.

  • Run validity of the ledger as a record: partial. The arithmetic is sound — 205 of 205 reported results are internally consistent, with zero transcription errors and zero mode-ambiguous rows — but the record is incomplete in three ways that materially affect interpretation: missing scoring-mode labels on 81 of 119 archival results (C3), missing cohort and dispersion statistics for the headline reference number (H2), and missing seed ranges for nine complete-game experiments plus the 477-root deployment panel (M2).

  • Scientific outcome of the audit: fail on claim integrity, pass on computational integrity. Two preregistered rejections (fair-depth4-s7, fair-cem-optimizer) do not survive correction to the mandated 17,000-point bonus and must be reopened as unresolved (C2). One frozen protocol contains an unsatisfiable gate (C1). One fitting selection was driven by a pre-observed game and reverses without it (H1).

  • Highest justified evidence tier for fair D4 as the reference policy: development — and, strictly, reusable/burned development. The 8-game corrected figure is a rescoring replay of already-consumed development seeds; the 64-game corrected figure has no identified cohort and no dispersion statistics. Neither reaches STANDARD under docs/benchmarks.md, and baselines-v1.json is correct not to assign one.

  • Protected and final cohorts: I found no evidence anywhere in the ledger, artifacts, or sources that a 0x7d…… or 0xd7…… game seed was ever read. status.md:11–12 is supported. The declared bank boundaries are, however, narrower than the constants the sources already reserve, and must be widened before a registry is written.

  • The million-point claim: unchanged and unsupported. The only recorded above-million means are the privileged future-aware oracle (history.md:735, 12 games, censored at 500 moves, 7,000-point scored) and its 500-move single-seed run (history.md:568, 17k). No public-information policy has produced a mean above 400,675.25 in any scoring mode on any cohort. The 1,246,684-point single game (status.md:23, README.md:58) is unverifiable and unclassifiable and should be downgraded per D3.

Audit inputs

docs/research/history.md (all 4,607 lines) · docs/research/status.md · docs/research/experiment-index.md · docs/strategies.md · docs/methodology.md · docs/benchmarks.md · README.md · src/core/native/engine.hpp · src/core/native/ntuple.hpp · research/schemas/game-result-v1.schema.json · research/benchmarks/baselines-v1.json · research/seeds/README.md · artifacts/protocols/optimistic-phase-ntuple/protocol.json · seed and kLevelBonus constants across approaches/.

No cohort was opened, no gameplay was run, and no file other than this one was created or modified.

These documents are written for researchers. For the same ideas in plain language, with animations, start at how the game works and the concepts primer; every term is defined in the glossary.