| T44 engineering: the CUDA lattice EM reproduces the numba code (E-step to 1e-12, seed-6205 restart and Viterbi identical); session 12's restart numbers depend on the hash seed | Training log-likelihood, expected counts, decoded held-out text and held-out likelihood per glyph of the GPU port against lattice em.py (numba) on the one-sign-per-letter planted control; seconds per EM iteration | float64: E-step from the true channel ll -42,115.3720 both, max |dC| 3.9e-12, max |dCn| 7e-14; seed-6205 restart -41,009.90 both (max |dB| 8e-15), decoded held-out text identical (5,929 characters), null-word share 0.262 both, held-out ll/glyph -1.9505 both. float32: ll -42,115.3711, seed 6205 -41,009.89, max |dB| 3e-6, text identical. Throughput: 1,024 restarts 1.27 s per EM iteration with the CUDA graph (3.9 s eager); 256 restarts 0.78 s. Session-12 seed 6205 on this machine: -40,975.8, -41,037.6, -41,009.9 (PYTHONHASHSEED=0, repeatable), -41,034.1 (1), against -40,851.8 on record; hash-independent: 871 signs, true-key ll -41,653.7, EM from truth -40,504.6, key 0.777 (record: -41,654, -40,505, 0.777) | Session 12 generation 6 (RUN0DCHDDGSSB3H): seed 6205 -40,851.8 · diagnostic (RUN0DCG2Q30P808): true key -41,654, EM from truth -40,505 | The port is faithful: every hash-independent number of session 12 reproduces exactly and the GPU and numba codes agree on the same inventory to rounding. The seed-6205 likelihood on record cannot be reproduced by anyone because lattice_em.Inventory orders tied signs by Python's per-process string hash; the method now breaks ties by the sign string. The rung-1 search starts. |
| T44 generation 1, rung R1: 5,000 restarts, 40 rounds of batched basin hopping and 40 of parallel tempering; key 74 % recovered, coverage 0.44 under the bar of 0.483 | Best training log-likelihood per search; held-out key accuracy by use, dictionary coverage (bar 0.7 x plaintext's = 0.483), character similarity, key-permutation p (200 permutations) | restarts (5,000): best -40,788.8 (key 0.652; quantiles 0/10/50/90/99 %: -42,107 / -41,736 / -41,490 / -41,314 / -41,078); basin hopping from the top 16 (40 rounds x 1,024 proposals): -40,674.8 (key 0.736); parallel tempering from the same states (40 rounds x 1,024 chains, 8 temperatures): -40,698.6 (key 0.666). Decode of the best state: coverage 0.440 (permuted keys mean 0.266, max 0.371, p 0.005), character similarity 0.638, key 0.736, null words 0.154, held-out ll/glyph -1.9368. 'aterescontigititeporiseriasatundentiticunepiciqueiam...' for 'aberenoncontigitcumteporisarboresabundentibipunicaeficiqueiam...' | Session 12: best of 400 restarts -40,852 (key 0.623), 250 hops -40,836 (key 0.691, coverage 0.407) · EM from the true key -40,514 on this inventory (coverage 0.518, key 0.778) | Fails the control gate on coverage alone (0.440 < 0.483; key 0.736 passes its half). Likelihood: batched hopping is the best search (-40,675, 160 nats short of the true key's basin and still improving at round 40); tempering from the same states plateaued at -40,700 after 10 rounds; restarts alone saturate (the best of 5,000 is only 60 nats above the best of 400). Generation 2 doubles the hop rounds and adds the element trigram model (polish of the best states and trigram Viterbi decode), which the ceiling study shows is needed from R3 anyway. |
| T44 ceilings per rung: with the true key the bigram decoder fails R3 and R4 (0.482, 0.450 vs 0.488) and the element trigram decoder passes every rung (R1 0.584, R2 0.581, R3 0.544, R4 0.513, R5 0.275 vs 0.262) | Held-out dictionary coverage of the planted control decoded with the true channel and with EM started from it, against the gate bar (0.7 x the true plaintext's coverage); bigram decoder (numba lattice em) and trigram decoder (lattice gpu3) | bigram EM from truth: R1 0.518 (bar 0.483), R2 0.508 (0.487), R3 0.482 (0.488), R4 0.450 (0.488), R5 0.290 (0.262; vowel-less plaintext covers only 0.374); key 0.78-0.84 throughout. Trigram Viterbi of the true channel: R1 0.584, R2 0.585, R3 0.544, R4 0.513, R5 0.275; character similarity 0.74-0.84 (R5 0.58). Trigram EM from the truth (10-14 iterations) keeps these within 0.01, except R5 where the factored trigram (22 history classes) drifts to 0.242. A near-random key (accuracy 0.11) decoded by the trigram Viterbi still reaches coverage 0.524 (permuted keys 0.475): coverage alone cannot be the gate under this decoder | Session 12 ceiling (RUN0DCG56XXNDPT): one sign per letter 0.518, full T39 setting 0.441 with the bigram decoder | The element trigram model is required from R3, not R5 as planned: under the bigram decoder R3 and R4 cannot pass even if the search finds the true key. From generation 2 the pipeline polishes the best bigram states with trigram EM and decodes with the trigram Viterbi; the key-accuracy half of the gate (>= 50 %) is what keeps the coverage half honest, since the trigram decoder writes Latin-like text from almost any key. R5's bar is reachable only narrowly (0.275 vs 0.262) with the full history collapsed to 22 classes. |
| T44 generation 2, rung R1 PASSES: 80 hop rounds + trigram polish and decode; key 73.7 %, coverage 0.489 (bar 0.483), permutation p 0.005 | Best training log-likelihood per search (bigram), trigram likelihood after polish; held-out key accuracy by use, dictionary coverage (bar 0.7 x plaintext's = 0.483), character similarity, key-permutation p (200 permutations, trigram decoder) | restarts (5,000, seeds 200000+): -40,772.8 (key 0.687); hopping 80 rounds x 1,024: -40,675.9 (key 0.737; stalled after round 55); tempering 20 rounds: -40,724.4 (key 0.687). Trigram polish of the 5 best states (30 iterations): trigram lls -39,848 / -39,831 / -39,868 / -39,850 / -39,838; the chosen state's key 0.737. Trigram decode: coverage 0.489 (permuted keys mean 0.339, max 0.432, p 0.005), character similarity 0.673, null words 0.142, held-out ll/glyph -1.8916. The same state decoded by the bigram Viterbi: coverage 0.413. 'ecereporisercusacundenticipunaciliqueiammalispirimaudatisimaeprigideseodemtratumgenuitercuspinumacie' for 'aberenoncontigitcumteporisarboresabundentibipunicaeficiqueiammalietpirilaudatisimaefrigidaseodemtrac' | Generation 1 (RUN0DCMW01CAK37): -40,674.8, key 0.736, bigram-decoded coverage 0.440 · true key: trigram-decoded coverage 0.584, key 0.778 · session 12's best: key 0.691, coverage 0.407 | R1 passes the control gate (coverage 0.489 >= 0.483 and key 0.737 >= 0.5; permuted keys p 0.005), the first learned-boundary pass in the programme, by a margin of 0.006 in coverage. The search itself did not improve on generation 1 (the bigram optimum is the same -40,675, 160 nats short of the true key's basin): the pass comes from reading the same 74 %-right key with the trigram decoder. Rung R2 (four homophones per consonant) starts with the same effort. The key-accuracy half of the gate is doing the work: a key 11 % right reaches coverage 0.52 under this decoder. |
| T44 generation 1, rung R2 (four homophones per consonant): key 67 %, trigram-decoded coverage 0.468 under the bar of 0.487; hopping stalls 450 nats short of the true key | Best training log-likelihood per search; trigram likelihood after polish; held-out key accuracy by use, dictionary coverage (bar 0.7 x plaintext's = 0.487), character similarity, key-permutation p (200 permutations, trigram decoder) | 1,205 signs. Restarts (5,000): -48,200.0 (key 0.624; median -48,753); hopping 80 rounds: -48,041.3 (key 0.656; stalled from round 50); tempering 20 rounds: -48,098.1 (key 0.608). Trigram polish of 5 states: -47,850.1 / -47,850.7 / -47,869.5 / -47,927.2 / -47,881.3; chosen state's key 0.673. Trigram decode: coverage 0.468 (permuted keys mean 0.320, max 0.409, p 0.005), character similarity 0.537, null words 0.175, held-out ll/glyph -2.021; bigram decode of the bigram-best state 0.392. 'namiceraeomneatraepictasagenimenumarelagonfueraperarinunto...' for 'nevitibusquidemxivceteraeomnesextrapraedictasetenimenumerarelongumestfoliadeperduntobservatumque...' | True key on R2: bigram EM from truth -47,587 (key 0.845), trigram-decoded coverage 0.581 · R1 generation 2 passed at key 0.737, coverage 0.489 | Fails the control gate on coverage (0.468 < 0.487; key 0.673 passes its half). Homophones widen the search gap: the best state is 450 nats short of the true key's basin against 160 on R1, and the 3-pair row swap stops finding improvements after 50 rounds. Generation 2 of R2 drops tempering (worse than greedy hopping in all three runs so far), runs 150 hop rounds with a mixed move set (row swaps of 1-4 pairs, sign-column swaps between two elements, softened restarts) and polishes 8 states for 60 trigram iterations. |
| T44 generation 2, rung R2: mixed hop moves gain 300 nats of likelihood (-47,740) and key 69 %, but trigram-decoded coverage stays at 0.466 (bar 0.487) | Best training log-likelihood (bigram) and trigram likelihood after polish; held-out key accuracy by use, dictionary coverage (bar 0.487), character similarity, key-permutation p (200 permutations, trigram decoder) | restarts (5,000, seeds 400000+): -48,119.1 (key 0.403); hopping with the mixed move set, 150 rounds x 1,024: -47,740.4 (key 0.694; still moving at round 149: -47,866 at 70, -47,772 at 80, -47,752 at 120). Trigram polish of 8 states (60 iterations): best -47,429.4 (from the bigram best; the others -47,542 to -47,944). Trigram decode: coverage 0.466 (permuted keys mean 0.326, max 0.417, p 0.005), character similarity 0.591, null words 0.173, held-out ll/glyph -2.0159; bigram decode 0.388. 'nateraeomneaedinfecetenimenumerarelonpumatroineaerinuntobseretum...' for 'nevitibusquidemxivceteraeomnesextrapraedictasetenimenumerarelongumestfoliadeperduntobservatumque...' | Generation 1 of R2 (RUN0DCP774CN9D7): -48,041.3, key 0.673, coverage 0.468 · true key: -47,587 (bigram), key 0.845, trigram-decoded coverage 0.581 | Fails the control gate on coverage (0.466 < 0.487; key 0.694 passes its half). The mixed move set is a real search improvement (301 nats, two thirds of the remaining gap to the true key's basin, and the key rose from 0.673 to 0.694), yet coverage did not move: with four homophones per consonant the decoded text already reads in stretches ('etenimenumerarelon[g]um', 'observatum') while the remaining wrong rows break enough words to hold coverage under the bar. Generation 3 resumes from this best state, adds fresh restarts, 150 more mixed-move rounds, a longer trigram polish and 20 rounds of hopping under the trigram likelihood itself; it is the third and last generation for R2 under the stopping rule. |
| T44 generation 3, rung R2 abandoned: resumed search reaches -47,651 (64 nats from the true key) and trigram hopping -47,157, key 70 %, coverage 0.471 still under the bar of 0.487 | Best training log-likelihood (bigram), trigram likelihood after polish and trigram-objective hopping; held-out key accuracy by use, dictionary coverage (bar 0.487), character similarity, key-permutation p (200 permutations, trigram decoder) | resumed from generation 2's best (-47,740.4) plus 5,000 fresh restarts (best -48,176.6, seeds 500000+); 150 mixed-move hop rounds: -47,651.2 (key 0.695; -47,685 at round 70, -47,663 at 100, flat from 121). Trigram polish of 8 states: best -47,338.5 (keys 0.575-0.715; the state with key 0.715 had trigram ll -47,726 and was not chosen). Trigram-objective hopping, 20 rounds x 8 proposals x 8 iterations: 12 accepted, -47,336.8 -> -47,156.6, key 0.694 -> 0.698. Decode: coverage 0.471 (permuted keys mean 0.327, max 0.419, p 0.005), character similarity 0.601, null words 0.155, held-out ll/glyph -2.0039; bigram decode 0.389. 'nateraeomnosquisuntraedinfecetenimenumerarelonpumatetineaerinuntobseretum...' for 'nevitibusquidemxivceteraeomnesextrapraedictasetenimenumerarelongumestfoliadeperduntobservatumque...' | Generations 1 and 2 of R2 (RUN0DCP774CN9D7, RUN0DCQ48MV18VH): coverage 0.468 and 0.466, key 0.673 and 0.694, bigram -48,041 and -47,740 · true key: bigram -47,587, key 0.845, trigram-decoded coverage 0.581 | Fails the control gate for the third generation (0.471 < 0.487; key 0.698 passes its half), each generation having improved the search (bigram -48,041 -> -47,740 -> -47,651; key 0.673 -> 0.694 -> 0.698), so rung R2 is abandoned and the programme stops under the brief's rule. The bigram likelihood is now within 64 nats of the true key's basin, yet 30 % of the sign uses still map to the wrong element and coverage has moved only 0.005 over three generations: closing the last nats of likelihood does not buy coverage, which says the remaining errors are between elements the bigram and trigram Latin models hardly separate (homophones of similar consonants). R3-R5 were not started and the manuscript was not decoded. |