On this page
Dates
Recorded
Record idRS-20260902T082726Z-75606ce7

No explanation has been written for this record yet.

Technical recordMetrics, gate checks and limitationsRS-20260902T082726Z-75606ce7
valid runoutcome: passsupported-as-testedtier: mechanics-onlyRS-20260902T082726Z-75606ce7

The shipped Klein-Friedmann code (github.com/ekreate/cs221-final-project @ 8cc8a0edfa04f1a93088c951e217d3cd3d6013f0) reproduces its report in its own simulator: uniform-random means 31.657, 31.733, 31.851 over 5,000 games each (report 31.2), and the Q-learner's 10,000-game test means 49.080, 49.053, 49.015 moves with standard deviations near 11.7 (report 49.61, sd 11.18) after 50,000 training games each, so both preregistered bands pass. Two of the theory's clause-(ii) checks were decided here. (ii-a) Front-loading holds: a learner stopped after 300 training games (13,796 updates) tests at 49.0796 moves against 49.0795 for the 50,000-game learner (2,406,211 updates) on the same 10,000 test games, a difference of -0.0001; the per-1,000-game training curve is already at 46.8 in its first block and 48.2 in its last. (ii-b) The report's regularisation claim does NOT hold for the shipped configuration: with lambda = 0 the learner tests at 48.967 moves, indistinguishable from the lambda = 0.1 arm and far above random, where the report's Figure 5 says the unregularised agent fell below random. With eta = 1/t counted per move, the ridge step eta*lambda*w is of order 1e-5 for almost all of training, so the term cannot act; the report's divergence must come from a schedule the shipped code no longer contains. Units are the upstream simulator's (one point per surviving move, 200-move cap, empty starting board, dropping on a full column ends the game); nothing here is a corrected-Hardcore score or a repository cohort.

What it had to pass
  • Random: 5,000-game uniform-random mean within [30.2, 32.2] for each of the three seeds — observed: means ['31.657', '31.733', '31.851']
  • Agent: 10,000-game test mean within [47.6, 51.6] for each of the three lambda = 0.1 seeds — observed: means ['49.080', '49.053', '49.015'] (report 49.61)
  • Clause (ii-a): the 300-game arm's test mean is within 2.0 moves of the seed-10 50,000-game arm on the same test seeds — observed: 50,000-game 49.080; 300-game 49.080; difference -0.000
  • Clause (ii-b): the lambda = 0 arm's test mean compared with the random mean (report's Figure 5 predicts below random) — observed: lambda = 0 test mean 48.967; random 31.657; lambda = 0.1 test mean 49.080; 'passed' here means the report's prediction held
Technical recordRecorded metricsRS-20260902T082726Z-75606ce7
report
randomMean
31.2000
randomSd
5.1200
agentTestMean
49.6100
agentTestSd
11.1800
humanMean30Games
73.2000
arms
seed10
randomMean5000
31.6572
randomSd
5.3286
trainMean
48.1242
testMean10000
49.0795
testSd
11.7475
testMedian
45
testMax
145
testCapped200
0
updateCount
2,406,211
trainBlockMeans1000First2
  1. 46.8300
  2. 47.5320
trainBlockMeans1000Last2
  1. 48.3090
  2. 48.2310
weights
min_eq_elem_True
175.6754
row_dets
33.0892
col_dets
123.9736
max_eq_elem
15.4247
1_dets
49.1437
elem_det
138.6679
wallSeconds
526.0967
seed11
randomMean5000
31.7332
randomSd
5.3181
trainMean
48.1982
testMean10000
49.0531
testSd
11.6803
testMedian
45
testMax
195
testCapped200
0
updateCount
2,409,908
trainBlockMeans1000First2
  1. 47.2940
  2. 47.5400
trainBlockMeans1000Last2
  1. 47.3910
  2. 48.4650
weights
min_eq_elem_True
292.4652
row_dets
55.0005
col_dets
206.3903
max_eq_elem
24.7546
1_dets
82.4603
elem_det
229.4302
wallSeconds
527.6854
seed12
randomMean5000
31.8510
randomSd
5.3634
trainMean
48.1870
testMean10000
49.0147
testSd
11.7404
testMedian
45
testMax
125
testCapped200
0
updateCount
2,409,352
trainBlockMeans1000First2
  1. 46.6090
  2. 47.2890
trainBlockMeans1000Last2
  1. 48.7050
  2. 48.2640
weights
min_eq_elem_True
330.0664
row_dets
62.0981
col_dets
233.1830
max_eq_elem
28.3817
1_dets
92.1482
elem_det
260.4667
wallSeconds
528.1099
seed10-noreg
randomMean5000
randomSd
trainMean
48.1237
testMean10000
48.9671
testSd
11.8369
testMedian
45
testMax
180
testCapped200
0
updateCount
2,406,185
trainBlockMeans1000First2
  1. 46.4940
  2. 47.4820
trainBlockMeans1000Last2
  1. 48.3950
  2. 48.4630
weights
min_eq_elem_True
440.5682
row_dets
91.6883
col_dets
331.4956
max_eq_elem
32.2473
1_dets
111.6859
elem_det
332.4404
wallSeconds
501.3658
seed10-300
randomMean5000
randomSd
trainMean
45.9867
testMean10000
49.0796
testSd
11.6295
testMedian
45
testMax
130
testCapped200
0
updateCount
13,796
trainBlockMeans1000First2
  1. 45.9867
trainBlockMeans1000Last2
  1. 45.9867
weights
min_eq_elem_True
33.1054
row_dets
6.2036
col_dets
26.0357
max_eq_elem
4.7284
1_dets
9.2904
elem_det
28.6006
wallSeconds
72.7772
smokeRunDisclosed
pythonSeeds
  1. 0
  2. 1
  3. 2
testMeansLambda0p1
  1. 48.9150
  2. 49.2441
  3. 49.1112
lambda0TestMeanSeed0
48.9674
randomMeans5000
  1. 31.7044
  2. 31.8152
  3. 31.8732
note
unregistered scratchpad run preceding preregistration; no phase reseeding; not evidence
Limitations
  • CHECK/validation tier: an external simulator with its own rules (survival score, 200-move cap, empty opening board, full-column drops end the game, sequential within-wave reveal semantics). No repository seed was read and no Hardcore score exists here.
  • The gate on clause (ii-b) is recorded as failed because the report's prediction (unregularised below random) did not hold; this is a finding against the report's explanation, not a defect of the run.
  • The 300-game and 50,000-game arms share their 10,000 test seeds by phase reseeding of Python's global RNG, a harness convention the upstream code lacks; the upstream flow would have compared different test games.
  • An unregistered smoke run at the identical configuration (Python seeds 0-2) preceded preregistration and is disclosed in metrics.smokeRunDisclosed; the registered arms used disjoint seeds 10-12.
  • Five arms ran concurrently on a 12-core laptop; wall times are indicative only. The upstream repository has no license, so its files are not retained in this repository; the run directory keeps a fetched copy and the manifest records its hashes.
  • Three training seeds cannot estimate the between-seed spread of the agent mean more precisely than about 0.03 moves; the bands, not the spread, are the gate.

Recorded against Reproduce the Klein-Friedmann Q-learning report in its own simulator at pinned commit 8cc8a0e.

Agent contextHow to extend this record

To add a reader-facing explanation, write web/content/research/RS-20260902T082726Z-75606ce7.mdx; it renders above this record on the next request. The recorded metrics, gate checks and limitations are in the technical record above.

Record file: research/results/RS-20260902T082726Z-75606ce7.json, validated against research/schemas/result-v1.schema.json.

Run ids
  • RUN-20260902T081648Z-f0c96f48
Contribution ids
  • CT-20260902T082510Z-4af4b77b
Per-game artifact
runs/RUN-20260902T081648Z-f0c96f48/kf-reproduction/seed10.json (sha256 03d4db87000832bc93bd43905ff791b4e45fb8b45d270fbb4f28ed665224c2e7, 65000 records)
Artifact manifest
runs/RUN-20260902T081648Z-f0c96f48/kf-reproduction/manifest.json
Machine profiles
  • research/system-profiles/MACH-20260902T080517Z-dec42aab.json