An arbitrary substitution selected by the preceding two ciphertext runes escapes the frequency barrier that defeated our fixed linear rules. That is permission to consider a broader family, not evidence for a particular cipher. Its apparent flexibility is also reproduced by repeat-suppressed random text, and a table fitted by frequency on one group of sections fails to carry its concentration into the other group.
There is no recovered key or new plaintext. The useful result is a sharper distinction between a small rule worth testing and a large table that can fit noise.
The candidate family
At each position, the preceding m ciphertext runes select one fixed permutation of the 29 current ciphertext symbols into plaintext symbols. We examine m = 1, 2 and 3.
Every row maps repetition of the immediately preceding ciphertext rune to the same plaintext rune R. The other 28 current symbols map bijectively to the other 28 plaintext symbols. This makes ciphertext doubles occur exactly when the plaintext is R. Its identity is unspecified for the real text.
This model directly links the rare-neighbor observation to a reversible decoder, unlike a purely statistical repeat-suppression generator. However, it is intentionally very flexible: there are up to 29, 841 or 24,389 independent row permutations before accounting for unused contexts. No such table is inferred as Cicada's key here.
The primary bound assumes one fixed table shared across the eight substantial sections. A sensitivity calculation permits independently selected tables by section, while retaining the common repeat channel. Words, punctuation and pages do not reset the state or advance a counter. The first m runes of each section are excluded, avoiding assumptions about initialization. The nine-rune section remains outside the established scope.
Exact bounds, without guessing a key
Count current ciphertext runes separately for each preceding context. A reversible row permutation can rearrange these counts but cannot change them. The repeat-channel count is fixed. For the other 28 bins, align the largest row counts, then the second largest, and so forth.
This construction attains the largest possible output-bin count and the most concentrated possible histogram in the relaxed family. Its cumulative sorted counts bound those of every other permitted assignment; consequently its Shannon histogram entropy is minimal. This is a finite-sample combinatorial bound, not an estimate of language entropy rate.
| Preceding ciphertext runes used | Scored positions | Maximum output-rune frequency, shared table | Minimum histogram entropy | Maximum frequency, separate section tables |
|---|---|---|---|---|
| 1 | 12,939 | 5.5337% | 4.7894 bits | 9.3825% |
| 2 | 12,931 | 15.5827% | 3.7598 bits | 45.4953% |
| 3 | 12,923 | 77.4124% | 0.9680 bits | 95.6047% |
The solved LP1 benchmark, excluding the same number of initial runes per group, has a peak near 12.65–12.68% and histogram entropy near 4.261 bits.
One preceding rune remains insufficient to reproduce that benchmark's peak, even with separate section tables. Two preceding runes have enough capacity to pass these necessary screens. Comparing all cumulative sorted-bin proportions also rejects the one-rune shared table and does not reject the two- or three-rune tables.
Passing these screens does not establish that an exact benchmark histogram, English text or any particular message is attainable. The repeat-channel frequency, integer constraints and language structure still matter. The two-rune bound is much looser than the 4.18% shared-key bound in Session 39 because this family permits arbitrary context permutations, whereas Session 39 required fixed linear arithmetic.
Can a fitted table predict other sections?
We fit a simple frequency-ranking table on sections 0, 1, 2 and 4. In every context, its most frequent non-repeat successor maps to anonymous output bin 0, the next to bin 1, and so on. Ties use the standard ciphertext rune index. Repeats map to bin 28. Empty contexts use that same fixed tie rule.
We then freeze the entire table and apply it to sections 5, 6, 7 and 8.
| Memory | Bin 0 in fitting sections | Same bin in evaluation sections | Largest evaluation bin |
|---|---|---|---|
| 1 rune | 6.4446% | 3.3844% | 4.0021% |
| 2 runes | 23.5562% | 3.6415% | 4.0849% |
| 3 runes | 88.6418% | 3.5897% | 4.0065% |
The two-rune table's apparent concentration does not transfer. Only 30 of its 7,442 evaluation positions have a context absent from fitting, so unseen contexts alone do not explain the drop. This is evidence against this particular frequency-greedy learner as a useful lead, not a theorem excluding every table or key. These sections have been inspected in earlier work; this is retrospective transfer testing, not untouched evidence.
Three-rune tables are especially prone to fitting individual observations. In the pooled corpus, 7,436 positions, or 57.54%, have a context seen only once. There are 9,931 observed contexts, with a median of one occurrence each. Most assignments therefore have very little repeated evidence behind them.
The two-rune case has 840 observed contexts with a median of 16 occurrences; just three contexts occur once. That is more data per context, but it still provides no observed transfer advantage for the tested learner.
A comparison with text containing no plaintext
We generated 199 samples at the original section lengths. Each begins with a uniform rune, then repeats its predecessor with the pooled observed probability, 86/12,939. Otherwise it chooses uniformly among the other 28 runes. There is no plaintext or encryption key in this generator.
| Two-rune diagnostic | Real ciphertext | Simulation median | Individual central 95% interval |
|---|---|---|---|
| Maximum pooled output-bin frequency | 15.5827% | 15.7374% | 15.4729–16.0084% |
| Minimum pooled histogram entropy | 3.7598 bits | 3.7569 bits | 3.7418–3.7719 bits |
| Fitted bin 0 frequency on evaluation sections | 3.6415% | 3.5743% | 3.2377–3.9519% |
All three observed values lie inside these descriptive intervals. The generator uses a repeat probability estimated from the same real text and does not preserve exact rune inventories or model all ciphertext structure. These are individual simulation bands, not a formal model-selection result. They nevertheless show why a favorable two-rune frequency ceiling alone is not a cipher clue.
What the repeated six-rune phrase would force
Sessions 32 and 39 recorded D J U · B E I on LP2 pages 27 and 55, preceded by different runes. Under one shared fixed m-rune context table, the last 6-m plaintext runes of those occurrences must match, because both the current rune and its complete context match there.
For memory two, the final four plaintext runes must therefore agree. For memory three, the final three must agree. Earlier plaintext runes may agree or differ under arbitrary row permutations. In particular, the forced difference of the second rune established for Session 39's linear model does not carry over to this broader family. Separate tables for the two sections remove the cross-section constraint.
This gives a future compact nonlinear candidate a checkable requirement; it does not identify what the phrase means.
Controls and limits
Three constructed ciphers use arbitrary fixed context permutations of memory one, two and three on the five known decoded LP1 streams. In the controls, repetition maps to plaintext X, a rare observed symbol in that sample. All encrypt/decrypt round trips are exact. The decoded histograms equal the known plaintext histograms, repeat counts equal plaintext X counts, and every computed bound admits the true plaintext peak and entropy.
Two independent three-symbol fixtures exhaust all 8 one-rune-context and 512 two-rune-context maps with their repeat channel fixed. Their exact extrema match the sorting bound. These checks validate the algorithm and bound; they do not demonstrate unknown-key recovery.
The next useful target is a compact nonlinear state rule that shares parameters across contexts and predicts longer text without fitting a separate permutation to every row. A large unrestricted table is not justified by the present evidence. Other state variables, plaintext feedback, changing counters, null insertion and alternative boundary models remain outside this pass.
Evidence and reproduction
- Executable audit
- Exact histograms, transfer results, controls and all 199 simulation outcomes
- Earlier one-rune feedback bound
- Earlier two-rune linear feedback bound
Run python context_memory_audit.py with NumPy and the companion notebook source files. The output records script and transcription SHA-256 hashes. No source transcription changes were made.