|X| = 19683, atoms after semantic dedupe = 523 target 'simple' class counts: {'Illegal': 11093, 'XWon': 4435, 'OWon': 4123, 'Draw': 32} target 'legal' class counts: {'Illegal': 18725, 'XWon': 626, 'OWon': 316, 'Draw': 16} sanity ok: XWon = 626 (matches known reachable-terminal count) sanity ok: OWon = 316 (matches known reachable-terminal count) sanity ok: Draw = 16 (matches known reachable-terminal count) D4 orbits: 2862 (Burnside check: 19683 fields total) === target 'simple' === -- sampling=orbit: 4874 train fields, class counts {'Illegal': 2721, 'XWon': 1134, 'OWon': 1003, 'Draw': 16} [simple/orbit] repairs=182 raw_cost=3213.6 (182 rules) -> recompressed=44.6 (3 rules) [learn 0.9s, recompress 7.3s] test accuracy = 100.00% (0 errors on 14809 unseen fields) Illegal n= 8372 acc=100.00% XWon n= 3301 acc=100.00% OWon n= 3120 acc=100.00% Draw n= 16 acc=100.00% baselines: majority=56.53% 1-NN=90.09% [3s] memorize-train=9748 bits, memorize-all=39366 bits, certificate=44.6 bits Learned certificate (recompressed): START: everything -> Illegal [3.00 bits] OVERWRITE #Empty=0 -> Draw [12.81 bits, |S|=512] OVERWRITE N(0, 3, 0)>=1 -> OWon [14.40 bits, |S|=4435] OVERWRITE N(3, 0, 0)>=1 -> XWon [14.40 bits, |S|=4435] TOTAL: 44.61 bits, 3 rules -- sampling=iid: 5000 train fields, class counts {'Illegal': 2805, 'XWon': 1160, 'OWon': 1028, 'Draw': 7} [simple/iid] repairs=147 raw_cost=2456.5 (147 rules) -> recompressed=78.8 (3 rules) [learn 0.4s, recompress 4.1s] test accuracy = 100.00% (0 errors on 14683 unseen fields) Illegal n= 8288 acc=100.00% XWon n= 3275 acc=100.00% OWon n= 3095 acc=100.00% Draw n= 25 acc=100.00% baselines: majority=56.45% 1-NN=89.35% [3s] memorize-train=10000 bits, memorize-all=39366 bits, certificate=78.8 bits === target 'legal' === -- sampling=orbit: 4954 train fields, class counts {'Illegal': 4715, 'XWon': 155, 'OWon': 80, 'Draw': 4} [legal/orbit] repairs=240 raw_cost=5107.0 (240 rules) -> recompressed=102.7 (3 rules) [learn 4.3s, recompress 36.6s] test accuracy = 99.65% (52 errors on 14729 unseen fields) Illegal n= 14010 acc= 99.83% XWon n= 471 acc= 96.60% OWon n= 236 acc=100.00% Draw n= 12 acc= 0.00% baselines: majority=95.12% 1-NN=94.30% [3s] memorize-train=9908 bits, memorize-all=39366 bits, certificate=102.7 bits Learned certificate (recompressed): START: everything -> Illegal [3.00 bits] OVERWRITE #X-#O=1 & N(0, 3, 0)=0 & N(3, 0, 0)>=1 -> XWon [36.95 bits, |S|=626] OVERWRITE #X-#O=0 & N(3, 0, 0)=0 & N(0, 3, 0)=1 -> OWon [36.95 bits, |S|=316] OVERWRITE N(1, 2, 0)>=4 & N(2, 1, 0)>=3 -> Draw [25.80 bits, |S|=44] TOTAL: 102.70 bits, 3 rules -- sampling=iid: 5000 train fields, class counts {'Illegal': 4777, 'XWon': 154, 'OWon': 68, 'Draw': 1} [legal/iid] repairs=209 raw_cost=4572.9 (209 rules) -> recompressed=100.9 (3 rules) [learn 4.0s, recompress 48.0s] test accuracy = 99.91% (13 errors on 14683 unseen fields) Illegal n= 13948 acc= 99.99% XWon n= 472 acc=100.00% OWon n= 248 acc=100.00% Draw n= 15 acc= 20.00% baselines: majority=94.99% 1-NN=94.16% [3s] memorize-train=10000 bits, memorize-all=39366 bits, certificate=100.9 bits -- sampling=orbit+rare: 4958 train fields, class counts {'Illegal': 4715, 'XWon': 155, 'OWon': 80, 'Draw': 8} [legal/orbit+rare] repairs=216 raw_cost=4635.9 (216 rules) -> recompressed=110.5 (3 rules) [learn 3.8s, recompress 36.1s] test accuracy = 99.82% (26 errors on 14725 unseen fields) Illegal n= 14010 acc= 99.87% XWon n= 471 acc=100.00% OWon n= 236 acc=100.00% Draw n= 8 acc= 0.00% baselines: majority=95.14% 1-NN=94.30% [3s] memorize-train=9916 bits, memorize-all=39366 bits, certificate=110.5 bits === train-size sweep (target 'legal', orbit sampling) === [sweep 0.025] repairs=36 raw_cost=525.0 (36 rules) -> recompressed=62.1 (3 rules) [learn 0.0s, recompress 0.4s] frac=0.025 n= 481: cost= 62.1 bits (0.129 b/ex), test acc 86.53% [sweep 0.050] repairs=68 raw_cost=1107.8 (68 rules) -> recompressed=88.0 (3 rules) [learn 0.2s, recompress 4.3s] frac=0.050 n= 989: cost= 88.0 bits (0.089 b/ex), test acc 98.67% [sweep 0.125] repairs=130 raw_cost=2529.0 (130 rules) -> recompressed=101.1 (3 rules) [learn 0.9s, recompress 18.5s] frac=0.125 n= 2457: cost= 101.1 bits (0.041 b/ex), test acc 99.79% [sweep 0.250] repairs=240 raw_cost=5107.0 (240 rules) -> recompressed=102.7 (3 rules) [learn 4.2s, recompress 36.6s] frac=0.250 n= 4954: cost= 102.7 bits (0.021 b/ex), test acc 99.65% === random-label control (target 'legal' marginals) === [control 250] repairs=26 raw_cost=396.8 (26 rules) -> recompressed=193.2 (7 rules) [learn 0.0s, recompress 4.1s] control n=250: 193 bits (0.77 bits/example), test acc 88.18% (majority 95.13%) [control 500] repairs=63 raw_cost=1007.0 (63 rules) -> recompressed=458.2 (17 rules) [learn 0.1s, recompress 29.2s] control n=500: 458 bits (0.92 bits/example), test acc 86.47% (majority 95.15%) [control 1000] repairs=89 raw_cost=1723.4 (89 rules) -> recompressed=938.3 (32 rules) [learn 0.4s, recompress 147.4s] control n=1000: 938 bits (0.94 bits/example), test acc 86.00% (majority 95.11%) total time 404s; wrote /home/nikudaorg/induction_certs/.claude/worktrees/induction-certs-research/experiments/../results/ttt_results.json