Measurements
Key-free statistics, computed live in your browser, each with the control that makes it mean something.
Live readout · computed in your browser
The cells on this page marked live are computed from the transcription as the page loads. The percentiles against English, the Monte Carlo p-values and the solver scores come from my Python lab and are quoted with the script that produced them.
Symbol frequencies · live
Twenty of the 24 symbols are used; 2nw alone is 11 of 87. Four never appear. For 87
letters of real English, 20 distinct letters sits at the 38th percentile — ordinary.
The rotation test — directions · live
A 45° turn moves a glyph to the next direction but keeps its ring. So if the key advances regularly — every glyph, every second glyph, whatever the step — each plaintext letter is smeared across all eight directions, and the eight counts are pushed towards 87/8 ≈ 10.9 whatever the key or the fill.
Dorabella's counts are 10 8 9 16 15 3 4 22: χ² = 26.6 on 7 degrees of freedom. In a
Monte Carlo of 40,000 simulated rotating-snowflake ciphertexts (English plaintext, random fill) only
12 were this lumpy: p = 0.0003. Rotation also predicts 0.81 unused cells; Dorabella has 4.
A regular rotating key is ruled out. The test needs no key, no solver and no corpus, so nothing later can overturn it. Irregular, text-driven schedules escape the argument and stay open.
Arc counts · live
How often each ring is used. A rotation can never move a glyph between rings.
Same-ring neighbours by angle · live
Ten 180° pairs where shuffling the same glyphs gives 5.2 on average (p = 0.03, lab/analysis.py).
Is it shaped like language?
Each statistic measured on Dorabella and on 400 samples of real English of the same length, reduced to the same
alphabet size by a substitution (lab/run_structure.py). The percentile is where Dorabella falls among
them.
| key-free measure | Dorabella | English percentile | verdict |
|---|---|---|---|
| Index of coincidence | 0.0591 | 12th | inside |
| Entropy (bits / glyph) | 4.018 | 70th | inside |
| Distinct symbols used | 20 | 38th | inside |
| Doubled glyphs | 4 | 74th | inside |
| Repeated bigrams (occurrences beyond the first) | 20 | 55th | inside |
| Letter-frequency profile, rank-matched χ² | 5.01 | 30th | fits |
For the frequency profile: English 87-letter samples have median 6.14, 90% range 3.55–12.47
(lab/run_final.py, 500 samples). On every key-free measure Dorabella sits inside the range of real
English. The common claim that its statistics are anomalous does not survive calibration.
A repeating key? — periodic IC and Kasiski
The standard test for a repeating-key (Vigenère-type) cipher: split the stream into p interleaved
cosets and measure the index of coincidence inside them. A genuine key of length p raises it at p and at
every multiple. Measured on the flat stream, so it does not care whether the note is three rows or one string
(lab/structure.py, 400 shuffles per period).
| period | coset IC | shuffled | pct | period | coset IC | shuffled | pct |
|---|---|---|---|---|---|---|---|
| 1 | 0.0591 | 0.0591 | — | 12 | 0.0506 | 0.0590 | 24.8 |
| 2 | 0.0567 | 0.0593 | 26.2 | 13 | 0.0557 | 0.0593 | 40.5 |
| 3 | 0.0542 | 0.0593 | 14.5 | 14 | 0.0408 | 0.0584 | 9.5 |
| 4 | 0.0582 | 0.0596 | 45.0 | 15 | 0.0489 | 0.0586 | 22.8 |
| 5 | 0.0520 | 0.0591 | 18.2 | 16 | 0.0625 | 0.0585 | 58.5 |
| 6 | 0.0549 | 0.0593 | 31.5 | 17 | 0.0824 | 0.0589 | 90.8 |
| 7 | 0.0421 | 0.0588 | 1.5 | 18 | 0.0278 | 0.0598 | 1.5 |
| 8 | 0.0636 | 0.0601 | 65.8 | 19 | 0.0386 | 0.0595 | 13.5 |
| 9 | 0.0420 | 0.0594 | 5.2 | 20 | 0.0717 | 0.0601 | 72.0 |
| 10 | 0.0643 | 0.0591 | 67.2 | 21 | 0.0413 | 0.0579 | 20.0 |
| 11 | 0.0812 | 0.0599 | 93.2 | 22 | 0.0635 | 0.0617 | 48.5 |
No period shows elevated coset IC (none reaches the 97.5th percentile of its shuffles). That is evidence
against a repeating-key polyalphabetic cipher of any length up to 22. Kasiski agrees: repeated substrings give 25
bigram spacings and only 2 trigram spacings, the longest repeat is three glyphs (2nw 2s 2n, spacing 24),
and the spacings' common factors (2, 4, 3, 5, 8, 11…) point at no single key length.
Vowels — Sukhotin's algorithm · live
In natural language the vowels fall out of adjacency structure alone: vowels and consonants alternate. Sukhotin's algorithm recovers that set without any key.
A port of lab/analysis.py, including its tie-break. Descriptive only — I never
calibrated it against English at this length, so it is a direction to look in, not a result.
Can any substitution make it read?
An annealing solver (lab/solver.py, blended 3- and 4-gram English model) attacks Dorabella under each
reading order, and the same solver at the same effort attacks 40 genuine English ciphertexts of 87 letters.
Matched effort was the hard-won part — the history is on [08].
English baseline (40 true-English ciphertexts, 814 s): min -4.151 5th -3.819 median -3.621 max -3.409 mean -3.645 sd 0.143 letters recovered: median 87/87, 40/40 samples over 70/87 Dorabella, same effort: as written -4.774 0.0th pct z = -7.87 reversed (whole) -4.723 0.0th pct z = -7.52 each line reversed -4.754 0.0th pct z = -7.73 boustrophedon -4.884 0.0th pct z = -8.64 lines 3,2,1 -4.819 0.0th pct z = -8.19 columns (interleave) -5.023 0.0th pct z = -9.61 derotate 4 [every] -4.899 0.0th pct z = -8.74 best candidate plaintext (reversed): AIRATORYAROCUTEMORFUNMOUTOMODINNINCOUTEDESCRTMEEMAPWAITSESEDRIGINUYYTEEVENCEDGWASTHAMYJ
A plain substitution of English is excluded. Every transform sits 7.5 to 9.6 standard deviations below real English solved the same way. This is not a solver failure: on the same controls it recovered a median of 87 of 87 letters. Once the separation is this large the percentile saturates at 0 and stops being informative — the z-score is the number to quote.
The saved report's closing verdict line (“bottom 5%… disfavours…”) was printed by an older verdict branch that did not yet look at z; the script now prints “excluded” for z < −5. The numbers above are unchanged. The best “plaintext” is what a solver squeezes out of 87 glyphs — English-looking fragments, no message.
The five diagnostics used to compare cipher models
Each candidate mechanism is simulated on real English and judged on where Dorabella falls in its own output — the full comparison is on [10].