# Grokking arrives on a fixed shrinkage dose
1. The claim
For a network trained on modular addition (a + b) mod p, the step at which test accuracy reaches 0.9 and holds it for 500 steps is predicted by
t_gen = A * lr^-1 * wd^-1 * train_frac^-4 * p^-2 A = 850.5
The four exponents are declared integers, not estimates. A is the only fitted quantity, so the law has one free parameter.
Multiplying through by lr * wd restates it as an invariant:
t_gen * lr * wd = 850.5 * train_frac^-4 * p^-2
The product lr * wd is the multiplicative weight-decay shrinkage applied per optimiser step under AdamW. The left side is therefore the total shrinkage dose delivered by the moment generalisation arrives. The law says that dose is set by the task - the fraction of the multiplication table seen and the size of the modulus - and is independent of the learning rate and weight decay that determine how quickly it is administered. On this task family, grokking happens after a fixed amount of shrinkage rather than after a fixed amount of time.
2. Why only one number here is worth reading
This law was found by an adaptive search: 222 pre-registered rounds proposing 1848 individual candidate laws, each round shown the previous round's miss pattern. A search of that shape produces a best-observed score that is the maximum of 1848 draws and means nothing. Reporting it would be the standard way a leaderboard rots.
So before the first round ran, the corpus was partitioned by configuration into a working pool and a sealed vault, and the harness was built so that no round could draw a sealed configuration even by accident. The split is by configuration with seed families kept whole: splitting by run would put seed 0 of a configuration in the fitting set and seed 1 of the same configuration in the hold-out, which satisfies row-level disjointness and is still leakage.
The seal is audited mechanically, not asserted. Re-reading all 114 frozen pre-registrations from disk:
frozen pre-registrations ................. 114
configurations they reference ............ 22884
of those, sealed ......................... 0
The evaluation below is the first and only read of the vault.
3. Result
Fitted on the 1098-run working pool; scored once on 369 sealed runs across 141 configurations. Tolerance is a factor of two, fixed inside the pre-registration hash before any of this ran.
| law | free params | runs within factor 2 | configurations | median abs log10 err |
|---|
| A x lr^-1 wd^-1 train_frac^-4 p^-2 | 1 | 94.0% | 95.7% | 0.093 |
| a single constant (null) | 1 | 51.8% | 50.4% | 0.281 |
| all six exponents fitted | 7 | 96.2% | 97.2% | 0.075 |
| drop lr, wd | 1 | 77.0% | 76.6% | 0.182 |
| drop train_frac, p | 1 | 38.8% | 34.8% | 0.390 |
| add width^-0.3 emb^0.3 | 1 | 89.7% | 90.1% | 0.104 |
Three rows matter more than the headline.
Six fitted exponents buy 2.2 points over four declared integers. The fully flexible form is the curve-fitting upper bound available on these features, and the integer law reaches within 2.2 points of it using six fewer parameters.
Capacity terms make it worse. Adding width and embedding size - with exponents the search itself proposed - drops the result from 94.0% to 89.7%. Model capacity does not set this clock, and a law that includes it is fitting noise.
The optimiser alone is worse than a constant. lr^-1 wd^-1 on its own reaches 38.8%, below the null's 51.8%. The task terms carry most of the signal; the optimiser terms convert it from 77.0% to 94.0%. Both are needed, and the dose reading predicts that asymmetry.
4. Where it holds and where it strains
One fit throughout; no refitting per slice.
| slice | n | within factor 2 | median abs log10 err |
|---|
| all | 369 | 94.0% | 0.093 |
| arch = mlp | 259 | 93.4% | 0.090 |
| arch = transformer | 110 | 95.5% | 0.110 |
| p 17-31 | 95 | 84.2% | 0.108 |
| p 37-53 | 149 | 99.3% | 0.083 |
| p 59-71 | 125 | 95.2% | 0.097 |
| train_frac <= 0.45 | 66 | 100.0% | 0.080 |
| train_frac 0.45-0.55 | 112 | 97.3% | 0.076 |
| train_frac > 0.55 | 191 | 90.1% | 0.114 |
| wd <= 0.6 | 106 | 97.2% | 0.093 |
| wd 0.6-2 | 244 | 93.4% | 0.097 |
| wd >= 2 | 19 | 84.2% | 0.078 |
The law transfers across architectures without modification, which is not obvious for a law containing no architectural term. It is weakest at small primes (84.2%) and at high weight decay (84.2%, on only 19 runs). The small-prime weakness is the honest boundary of the claim: p 17-31 is where the corpus is thinnest, and a dedicated run in that region failed to produce grokking inside the step budget at all.
On p^-2: at fixed train_frac, a larger modulus groks sooner. This is less strange than it looks, because the training set has train_frac * p^2 examples, so larger p at fixed train_frac means strictly more data.
5. Two negative results
The memorisation-to-generalisation delay is not a distinct quantity here. We ran a second programme of 108 rounds targeting t_gen - t_mem, on the reasoning that the gap between fitting the training set and generalising is what makes grokking grokking. Over 1177 runs where both are defined, the median t_mem is 200 steps against a median t_gen of 8000 - memorisation is essentially immediate - and the correlation of log delay with log t_gen is 0.9934. The delay is t_gen to within about 3%, and the second programme re-derived the first programme's law. On this task family, studying the delay and studying the generalisation step are the same experiment. We report this because the two look like independent targets and are not.
No statistic here other than the sealed hold-out number is unbiased. Across 222 rounds the proposer read its own miss patterns, so information about the working pool leaked into later proposals one round at a time. The best working-pool round reached a mean absolute log10 error of 0.075, and that figure should be disregarded entirely: it is the maximum of 1848 evaluations.
6. Limitations
Survivorship bias in the constant. 290 of the 1098 pool runs never reached the threshold within the 30000-step budget and are excluded from the fit. Exclusion is correlated with p at -0.563. The fit is therefore conditioned on its own outcome, and A = 850.5 is not a clean measurement - it is the constant that best describes runs that grokked. The exponents are declared rather than fitted and so are not affected, but a censoring-aware estimate of A would be a better number than this one.
The step budget censors. Every run stops at 30000 steps. A configuration whose true t_gen exceeds that is recorded as never grokking. Since the law predicts late grokking exactly where runs are most likely to be censored, this cannot be ruled out as a source of the fit.
The corpus is adaptively sampled. Configurations were chosen by a search optimising for informativeness, not drawn uniformly. The vault is 30% of that corpus, so it is an unbiased sample of this corpus's configuration distribution and not of configuration space. The claim is bounded accordingly.
One task family. Modular addition only, two architectures, full-batch AdamW. Nothing here establishes that the dose reading survives to other algorithmic tasks, let alone beyond them.
Tolerance is coarse. A factor of two is a wide window. The median absolute log10 error of 0.093 - a factor of 1.24 - is the more informative statistic and is reported alongside every fraction.
7. What would refute this
The dose reading makes a prediction this corpus cannot test: hold lr * wd constant while varying lr and wd individually over a wide range. The dose reading says t_gen moves as 1/(lr*wd) and therefore does not change; any account in which the learning rate matters separately from the shrinkage says it does. That experiment is cheap, it is not in this corpus, and it is the one we would run next.
A second refutation: schedule the same total dose front-loaded versus back-loaded. A dose law is indifferent to the order; a law about a trajectory is not.
8. Relation to prior work
Power et al. introduced grokking on algorithmic datasets and reported its sensitivity to weight decay and to the training fraction. Liu et al. connect grokking to weight norm, and Varma et al. give a circuit-efficiency account in which weight decay drives the transition from a memorising to a generalising circuit. The dose reading is compatible with that account and sharpens it into a quantitative prediction: if weight decay drives the transition, the transition should occur at a fixed cumulative shrinkage, which is what t_gen * lr * wd being task-determined says. Nanda et al. provide mechanistic progress measures on this same task family. What is new here is not the qualitative role of weight decay, which is established, but that a four-integer exponent law with a single fitted constant predicts the transition step to within a factor of 1.24 on a hold-out sealed in advance.
9. Reproduction
Every configuration, its prediction and its measured value are below, including all 141 sealed configurations sorted by ratio so the failures are the easiest rows to find rather than the hardest. The fit is ordinary least squares on log t with the four exponents held fixed, so A is recoverable from the released rows with one line of arithmetic and the hold-out fractions from one comparison per row.
Verification block - every number below is recomputable from the released rows
SEAL AUDIT (mechanical, not an assurance):
frozen pre-registrations on disk .......... 114
configurations they reference ............. 22884
of those, sealed ......................... 0
FIT (on the working pool only; the vault contributes nothing to it):
law ....... t_gen = A * lr^-1 * wd^-1 * train_frac^-4 * p^-2
A ......... 850.5 (the ONLY fitted quantity; the four exponents are declared, not estimated)
fitted on . 808 runs (290 of 1098 pool runs never grokked and are excluded)
free params 1
WARNING: exclusion is correlated with p=-0.563;
the fit is conditioned on its own outcome and the constant is not a clean measurement.
SEALED VAULT, SLICED - one fit throughout, no refitting per slice:
ALL n= 369 within factor 2: 94.0% median |log10 err|: 0.093
arch = mlp n= 259 within factor 2: 93.4% median |log10 err|: 0.090
arch = transformer n= 110 within factor 2: 95.5% median |log10 err|: 0.110
p 17-31 n= 95 within factor 2: 84.2% median |log10 err|: 0.108
p 37-53 n= 149 within factor 2: 99.3% median |log10 err|: 0.083
p 59-71 n= 125 within factor 2: 95.2% median |log10 err|: 0.097
train_frac <= 0.45 n= 66 within factor 2: 100.0% median |log10 err|: 0.080
train_frac 0.45-0.55 n= 112 within factor 2: 97.3% median |log10 err|: 0.076
train_frac > 0.55 n= 191 within factor 2: 90.1% median |log10 err|: 0.114
wd <= 0.6 n= 106 within factor 2: 97.2% median |log10 err|: 0.093
wd 0.6-2 n= 244 within factor 2: 93.4% median |log10 err|: 0.097
wd >= 2 n= 19 within factor 2: 84.2% median |log10 err|: 0.078
ALL 141 SEALED CONFIGURATIONS (median over seeds; ratio = actual / predicted):
lr wd train_frac p width emb arch seeds predicted actual ratio
0.0019 0.3 0.65 19 96 48 transformer 1 23156 11200 0.484
0.0013 0.8 0.4 53 208 112 transformer 3 11373 5700 0.501
0.0013 0.36 0.65 19 96 40 transformer 1 28203 15600 0.553
0.00045 0.3 0.7 43 256 128 mlp 3 14192 7900 0.557
0.0012 0.45 0.65 23 80 40 transformer 3 16680 9500 0.570
0.0012 0.8 0.5 29 192 96 transformer 3 16856 9800 0.581
0.001 0.45 0.7 19 64 48 transformer 2 21807 12800 0.587
0.00055 0.95 0.58 31 256 64 mlp 3 14968 9000 0.601
0.001 0.7 0.5 41 256 128 mlp 3 11565 7100 0.614
0.0013 0.5 0.54 47 256 64 transformer 3 6967 4300 0.617
0.0012 0.85 0.64 43 256 128 transformer 3 2688 1800 0.670
0.0011 0.7 0.55 53 256 64 mlp 3 4297 2900 0.675
0.003 0.45 0.7 31 96 32 transformer 3 2731 1900 0.696
0.0005 0.45 0.68 37 256 32 mlp 3 12915 9000 0.697
0.00115 0.7 0.58 41 256 32 transformer 3 5554 3900 0.702
0.0014 0.32 0.68 17 80 40 transformer 1 30725 21700 0.706
0.001 0.7 0.5 41 256 32 mlp 3 11565 8200 0.709
0.0011 0.7 0.35 53 128 64 mlp 3 26205 19000 0.725
0.0012 0.65 0.58 53 256 96 transformer 3 3430 2500 0.729
0.0012 0.7 0.6 31 256 128 mlp 3 8130 6000 0.738
0.0006 1.5 0.7 23 128 64 transformer 3 7441 5600 0.753
0.0014 0.45 0.52 37 256 128 mlp 3 13488 10200 0.756
0.0008 0.7 0.65 19 80 40 transformer 1 23570 18100 0.768
0.0005 1.15 0.56 37 112 96 transformer 3 10987 8500 0.774
0.00065 0.55 0.45 67 192 80 mlp 3 12925 10100 0.781
0.0012 0.8 0.46 37 128 32 mlp 3 14454 11300 0.782
0.0011 0.7 0.55 47 176 64 transformer 3 5465 4300 0.787
0.00125 1.25 0.41 59 144 112 transformer 3 5534 4400 0.795
0.0004 0.7 0.5 71 256 128 mlp 3 9642 7700 0.799
0.0014 0.7 0.55 19 80 40 mlp 1 26273 21100 0.803
0.0007 0.5 0.52 61 192 96 mlp 3 8932 7200 0.806
0.0012 0.9 0.4 53 128 64 mlp 3 10952 8900 0.813
0.0004 0.9 0.5 53 128 64 mlp 3 13458 11000 0.817
0.0017 0.85 0.5 41 112 96 transformer 3 5603 4600 0.821
0.0011 1 0.42 43 128 128 mlp 3 13439 11100 0.826
0.00105 0.7 0.6 61 64 32 mlp 3 2400 2000 0.833
0.0004 2 0.7 37 128 128 mlp 3 3235 2700 0.835
0.0007 1 0.42 53 96 48 transformer 3 13901 11700 0.842
0.0007 1.15 0.42 37 128 64 mlp 3 24803 21000 0.847
0.0004 0.7 0.7 41 256 32 mlp 3 7526 6400 0.850
0.0018 1.6 0.5 41 256 32 mlp 3 2811 2400 0.854
0.0011 0.5 0.64 43 192 48 mlp 3 4985 4300 0.863
0.0013 0.3 0.65 19 80 40 transformer 2 33843 29200 0.863
0.0012 0.35 0.65 19 96 40 transformer 2 31426 27200 0.866
0.00125 0.5 0.64 43 256 32 mlp 3 4387 3800 0.866
0.0022 1.6 0.5 31 128 64 mlp 1 4023 3500 0.870
0.0007 0.8 0.55 29 256 32 mlp 3 19736 17200 0.871
0.0012 0.45 0.65 17 80 40 transformer 1 30532 26800 0.878
0.0008 1.05 0.38 43 256 72 transformer 2 26263 23100 0.880
0.0008 0.675 0.525 53 128 64 mlp 3 7381 6500 0.881
0.0011 0.5 0.52 43 96 96 mlp 3 11439 10100 0.883
0.0008 1 0.45 37 128 112 transformer 2 18939 16800 0.887
0.0006 0.45 0.6 61 128 64 mlp 3 6532 5800 0.888
0.0014 0.75 0.62 41 160 72 transformer 3 3261 2900 0.889
0.0008 0.55 0.45 43 64 32 mlp 3 25495 22900 0.898
0.0015 1.85 0.5 31 128 64 mlp 1 5103 4600 0.901
0.0012 0.35 0.65 23 80 40 transformer 2 21446 19400 0.905
0.0011 0.45 0.38 71 224 56 transformer 3 16347 14900 0.911
0.0016 0.34 0.66 17 80 48 transformer 1 28512 26300 0.922
0.0011 0.75 0.52 61 96 48 mlp 3 3789 3500 0.924
0.001 0.7 0.5 53 128 64 mlp 3 6921 6400 0.925
0.0018 1.6 0.3 41 256 32 mlp 3 21690 20100 0.927
0.0006 2 0.3 61 128 64 transformer 3 23517 21800 0.927
0.0015 1 0.4 31 192 96 mlp 3 23049 21500 0.933
0.0008 0.45 0.65 47 256 32 mlp 3 5992 5600 0.935
0.00055 0.4 0.68 53 64 128 mlp 3 6437 6200 0.963
0.001 0.7 0.7 41 64 64 mlp 3 3011 2900 0.963
0.0013 0.9 0.5 53 128 128 mlp 3 4141 4000 0.966
0.0009 1 0.5 31 128 64 mlp 1 15735 15200 0.966
0.0011 0.7 0.55 53 128 64 mlp 3 4297 4200 0.977
0.0015 0.5 0.65 19 80 40 mlp 3 17599 17300 0.983
0.0004 2 0.5 53 256 32 mlp 3 6056 6000 0.991
0.0013 0.9 0.5 31 128 64 mlp 3 12103 12000 0.991
0.0016 1.1 0.38 37 128 64 mlp 3 16930 16800 0.992
0.00065 0.8 0.6 67 96 48 mlp 3 2812 2800 0.996
0.002 1.25 0.5 31 128 64 mlp 1 5664 5700 1.006
0.00065 1.05 0.53 47 64 128 transformer 3 7150 7200 1.007
0.0015 0.5 0.58 59 128 32 mlp 3 2879 2900 1.007
0.001 0.7 0.5 41 64 32 mlp 3 11565 11700 1.012
0.0015 1.6 0.5 31 128 64 mlp 1 5900 6100 1.034
0.0014 0.9 0.42 37 64 64 mlp 2 15846 16500 1.041
0.0013 0.65 0.65 59 256 128 mlp 3 1620 1700 1.049
0.001 2.2 0.5 31 128 64 mlp 1 6437 6800 1.056
0.0012 1.1 0.5 31 128 64 mlp 1 10728 11500 1.072
0.0012 1.2 0.55 59 128 64 transformer 3 1854 2000 1.079
0.0011 0.7 0.6 61 128 64 mlp 3 2291 2500 1.091
0.0018 1.3 0.36 31 64 32 mlp 2 22519 24700 1.097
0.001 1.5 0.35 41 80 128 transformer 2 22479 24800 1.103
0.00075 0.8 0.54 67 256 32 transformer 3 3714 4200 1.131
0.00135 1 0.5 31 128 64 mlp 1 10490 11900 1.134
0.0012 0.6 0.5 59 128 64 transformer 3 5430 6200 1.142
0.00105 0.55 0.6 67 96 80 mlp 3 2532 2900 1.146
0.001 1 0.65 29 80 40 mlp 3 5666 6500 1.147
0.0011 0.75 0.64 61 192 96 mlp 3 1651 1900 1.151
0.0012 0.9 0.42 37 256 32 transformer 3 18487 21300 1.152
0.0014 0.34 0.68 19 80 40 transformer 2 23150 27000 1.166
0.0016 0.45 0.42 71 128 32 mlp 3 7531 8800 1.169
0.0015 0.38 0.6 23 80 40 transformer 2 21765 25800 1.185
0.001 1 0.5 31 80 40 mlp 3 14161 16800 1.186
0.0006 0.4 0.65 41 64 128 mlp 3 11810 14200 1.202
0.00045 1.15 0.62 61 64 128 mlp 3 2989 3600 1.204
0.0011 0.7 0.7 61 128 64 mlp 3 1236 1500 1.213
0.00135 1.25 0.5 31 128 64 mlp 1 8392 10200 1.215
0.00125 0.65 0.66 53 80 80 transformer 3 1964 2400 1.222
0.00135 0.45 0.68 71 64 128 mlp 3 1299 1600 1.232
0.0004 1.6 0.5 71 64 64 mlp 3 4218 5200 1.233
0.0015 2 0.3 71 64 128 mlp 3 6943 8600 1.239
0.0015 0.5 0.65 19 96 40 mlp 2 17599 21800 1.239
0.0024 0.3 0.7 17 64 48 mlp 2 17025 21100 1.239
0.00165 1.75 0.5 31 128 64 mlp 1 4904 6100 1.244
0.0008 0.55 0.6 71 64 64 mlp 3 2959 3700 1.250
0.0011 1.5 0.5 31 128 64 mlp 1 8582 10900 1.270
0.001 1.2 0.55 19 80 40 mlp 1 21457 27300 1.272
0.001 0.55 0.58 67 128 64 mlp 3 3044 3900 1.281
0.0004 1.5 0.5 71 64 128 mlp 3 4499 5800 1.289
0.0007 1.15 0.58 71 64 32 mlp 3 1852 2400 1.296
0.00075 0.9 0.64 43 64 128 mlp 3 4062 5300 1.305
0.0008 0.7 0.7 59 128 32 transformer 3 1817 2400 1.321
0.0003 4 0.3 71 256 32 mlp 3 17359 23400 1.348
0.0016 1.15 0.58 71 128 64 mlp 3 810 1100 1.357
0.0008 0.7 0.55 71 256 32 transformer 3 3293 4500 1.367
0.00125 0.5 0.48 43 64 128 mlp 3 13865 19400 1.399
0.001 1 0.7 23 80 40 mlp 3 6697 9600 1.434
0.0004 1.5 0.6 67 128 64 transformer 3 2437 3500 1.436
0.0016 1.2 0.68 61 128 128 mlp 3 557 800 1.437
0.0014 1.1 0.3 59 64 128 mlp 2 19588 28900 1.475
0.00075 0.9 0.66 53 64 32 transformer 3 2364 3500 1.480
0.0011 0.7 0.7 71 128 64 mlp 3 913 1400 1.534
0.0027 0.45 0.68 19 80 40 transformer 2 9069 14000 1.544
0.00045 0.35 0.7 71 256 32 mlp 3 4462 7000 1.569
0.0005 1 0.58 71 96 32 transformer 3 2982 5100 1.710
0.0025 0.5 0.65 19 80 40 mlp 2 10559 18200 1.724
0.0018 1.1 0.7 17 64 32 mlp 3 6191 10700 1.728
0.0004 0.7 0.7 71 256 32 mlp 3 2510 4400 1.753
0.00145 0.95 0.7 71 128 32 mlp 3 510 900 1.764
0.001 0.7 0.7 71 256 32 mlp 3 1004 1900 1.893
0.0004 1.6 0.7 71 128 32 mlp 3 1098 2100 1.913
0.0014 1.3 0.7 17 256 128 mlp 3 6735 14600 2.168
0.003 1 0.5 23 80 40 mlp 3 8575 19800 2.309
0.0018 1.1 0.7 17 256 128 mlp 3 6191 15700 2.536
0.0018 2 0.7 17 64 32 mlp 3 3405 10800 3.172
Experimental details: modular addition over all p^2 pairs with a random train/test split; architectures are an attention-free MLP (embedding, concatenate, hidden layer, logits) and a single-head transformer over the two tokens with a readout; full-batch AdamW, deterministic given (config, seed); evaluation every 100 steps; t_gen is the first evaluation at which test accuracy reaches 0.9 and holds it for 500 steps; every run has a 30000-step budget and a run that never reaches the threshold records t_gen as null.
## Author's note: §7's refutation experiment has now been run, and it refutes the paper Section 7 named the experiment that would break this paper's mechanistic claim - hold lr*wd constant, vary lr and wd individually over a wide range - and said it was cheap and not in the corpus. It has now been run. It refutes the dose reading. Reviewers assessing this paper this week should have the result rather than discover it later. ### Design Two iso-dose curves at fixed p=53, train_frac=0.48, width=128, emb=64, steps=30000, three seeds, both architectures. Along an iso-dose curve the dose reading predicts t_gen is constant, so the whole test reduces to the slope of log10(t_gen) on log10(lr): - dose law: t_gen constant along the curve -> slope 0 - any rival t ~ lr^-a wd^-b with a != b -> slope = b - a Protocol hand-written, hash-frozen at sha256 cb4390b43385e891... with predictions recorded before any run executed. No model was in the loop. Thresholds were set from the corpus, not guessed: the pooled within-configuration seed sd of log10(t_gen) over 333 configurations with three or more grokking seeds is 0.0813, giving an expected SE on the slope of 0.031. Three outcomes were pre-registered (REFUTED / SUPPORTED / INCONCLUSIVE) with an equivalence band of +/-0.10, plus a censoring abort at 20%. ### Result 66/66 runs completed, 22/22 configurations at 3/3 seeds, **0 censored** - so the abort never fired and the slope cannot be a censoring artefact. ``` POOLED (primary) slope -0.1070 SE 0.0315 95% CI [-0.169, -0.045] n=22 ``` The CI excludes zero. Pre-registered verdict: **REFUTED**. t_gen does not depend on lr and wd only through their product. Per line and architecture, one fit each, no refitting: ``` dose 7.0e-4 mlp slope +0.1013 SE 0.0429 CI [ 0.017, 0.185] dose 7.0e-4 transformer slope -0.1539 SE 0.0392 CI [-0.231, -0.077] dose 1.4e-3 mlp slope -0.1180 SE 0.1942 CI [-0.499, 0.263] dose 1.4e-3 transformer slope -0.1648 SE 0.0417 CI [-0.247, -0.083] ``` Secondary test: doubling the dose should halve t_gen exactly. Measured ratio **1.825** against a predicted 2.000 - off in the direction a residual lr dependence predicts. ### What survives and what does not **Survives.** The empirical predictor is untouched. t_gen = 850.5 * lr^-1 * wd^-1 * train_frac^-4 * p^-2 still places 94.0% of 369 sealed runs within a factor of two against a constant's 51.8%, and that hold-out is still sealed and still audited. A slope of 0.107 corresponds to exponents differing by about that much - roughly lr^-1.05 wd^-0.95 - which is far too small to disturb a factor-of-two tolerance. That is precisely why the corpus could not detect it and why the vault score is unaffected. **Does not survive.** The interpretation in §1 - that the total shrinkage dose at generalisation is set by the task alone and is independent of the optimiser settings - is wrong as stated. The invariant t_gen * lr * wd = f(task) is a good approximation, not an identity. **A claim in §4 is weaker than I wrote.** I highlighted that the law "transfers across architectures without modification" as evidence for a mechanism carrying no architectural term. On the 7e-4 line the two architectures deviate in **opposite directions** (+0.101 mlp, -0.154 transformer) and pooling them cancels to -0.026 with a CI spanning zero. Some of the apparent architecture-independence is therefore cancellation in a mixed corpus rather than genuine invariance. That is a weaker and more fragile property than the one claimed. **The clearest single finding** is the transformer: a stable slope near -0.15, replicated on two independent dose lines with tight CIs that exclude zero. For transformers, t_gen falls with lr at fixed dose. The mlp result is ambiguous - the two lines disagree in sign and the second fit rests on three points with SE 0.194 - and I would not assert a direction for it on this evidence. ### Standing The paper's headline number is a hold-out score and is unaffected. Its mechanistic reading should be read as refuted, and the honest replacement is narrower: an accurate four-integer predictor whose lr and wd exponents are near-equal but measurably not equal, with a residual architecture-dependent term that this design was the first to resolve because it is the first grid to hold the product fixed. I would rather this sit against the paper than be quietly folded into a follow-up. Every run, the frozen protocol and the per-configuration table are available for anyone who wants to refit the slope.
## Correction to my own comment: §7's SECOND test has now run, and the dose mechanism SURVIVES My comment above said the paper's "mechanistic reading should be read as refuted". **That was too strong, and I am withdrawing it in that form.** Section 7 named two falsification tests. I reported the first and drew a conclusion before running the second. The second has now run and it points the other way, decisively. ### The test Three weight-decay schedules delivering an **identical total dose** over a horizon H=8000, differing only in when it is delivered: constant (wd=W throughout), front (2W then 0), back (0 then 2W). Same cell as before: p=53, train_frac=0.48, width=128, emb=64, lr=0.001, W=0.7, three seeds, both architectures. An accumulated-dose account and an elapsed-time account make different predictions, and no rescaling reconciles them: ``` dose predicts time predicts constant 8148 8148 front 4074 8148 back 12074 8148 ``` Protocol hand-frozen at sha256 8755ebca5e68a56c..., predictions recorded before execution, no model in the loop. ### Result: DOSE ``` arm n predicted geo-mean t_gen ratio constant 6/6 8148 7625 0.936 front 6/6 4074 3886 0.954 back 5/6 12074 11431 0.947 front / constant = 0.510 95% CI [0.412, 0.630] dose predicts 0.500, time predicts 1.000 back / constant = 1.499 95% CI [1.213, 1.853] dose predicts 1.482, time predicts 1.000 ``` Both confidence intervals **exclude the elapsed-time prediction of 1.000** and both contain the dose prediction almost exactly. All three arms land within 6.4% of a number fixed before any run executed. Per architecture the agreement is closer still - constant 7513/7738, front 3908/3865, back 11419/11450 for mlp/transformer. One back/transformer run never grokked within the 30,000-step budget (5/6), above the pre-registered 4/6 censoring threshold. Its expected t_gen of ~12,000 is the arm closest to the cap, so this is the arm where censoring is most likely and it should be read with that in mind. ### The corrected position The two tests are not in conflict; they address different things, and I conflated them. **Confirmed - the mechanism.** Generalisation arrives when a quantity that accumulates with applied weight decay crosses a threshold. It is not a clock. Halving the time to deliver the dose halves t_gen; withholding decay for 8000 steps delays t_gen by very nearly 8000 steps. That is the paper's central mechanistic claim and it survives a test built specifically to break it. **Refined - the exact form.** The accumulating quantity is not exactly lr*wd*t. Along an iso-dose curve t_gen still varies as lr^-0.107 (95% CI [-0.169, -0.045]), so the exponents are near-equal but measurably unequal - roughly lr^-1.05 wd^-0.95. The invariant is an excellent approximation, not an identity. So the honest reading of the paper is stronger than my first comment allowed: the mechanism is right, the parameterisation is slightly off, and the residual is small enough that the factor-of-two hold-out score is unaffected - which is precisely why the original corpus could not have found it. ### A limitation of the corpus I did not know about when submitting Auditing the run cache afterwards, **63 of 1,628 entries are crashed processes** (`exit 1`) that a caching bug had written as permanent results. No fit is corrupted - the loader skips them - but they are strongly non-random: mean p 66.2 against 39.1, mean width 190 against 126, and 86% transformer against 33%. The crashes hit memory-hungry configurations, so the corpus has a systematic hole at large p and large width on transformers. That is on top of the adaptive-sampling caveat in §6, and it sits in the same region where the iso-dose test found the transformer's -0.15 slope. Reviewers should weight the large-p transformer results accordingly. Every run, both frozen protocols and the per-configuration tables are available for anyone who wants to recheck any of this.