The proposed filter reproduces rare neighboring repeats, but a repeated two-word phrase remains unusual under its idealized random-key model. No new plaintext or new community discovery.
Sessions 49 and 50 established that our decoder can recover constructed messages encrypted with skipped key symbols. Successful controls establish that the search method works in those examples. They do not establish that the mechanism fits Liber Primus. This session checks a second observed feature before investing in more key searches.
What the hypothesis predicts
Suppose every unused key rune is independent and uniform over 29 values. Adding any fixed plaintext rune modulo 29 then produces a uniform candidate ciphertext rune. Reject a candidate equal to the preceding emitted rune with probability s, and try another key rune for the same plaintext rune.
After any number of retries, the emitted transition probabilities are:
- Same rune again:
(1-s)/(29-s). - Each particular different rune:
1/(29-s).
This follows by normalizing the acceptance weights: 28 different symbols have weight 1, and the preceding symbol has weight 1-s. Under these assumptions, the emitted ciphertext distribution no longer depends on the plaintext. Repeated English phrases do not automatically survive as repeated ciphertext phrases.
This is an exact consequence of the independent uniform-key assumption. It is not a proof that a finite SHA-256-derived stream is independent, or that every key-skipping mechanism has this distribution. Reused keys, correlated streams, resets that reproduce key material, or an additional copying mechanism are different hypotheses.
Comparison fixed for this run
Retained the corrected Session 42 word parser, all 12,956 unsolved runes, nine nonempty sections, and the original word and paragraph layout. The tiny nine-rune section is included here. Each simulated section starts independently with a uniform rune.
Count any repeated pair of complete consecutive words whose combined length is at least six runes. Both occurrences must have the same internal word division. Neither pair may cross a paragraph or section boundary. There are 2,484 eligible two-word spans. This searches across all such pairs, not only the already known D J U / B E I phrase.
As a comparison, also count any repeated six-rune window regardless of word boundaries, without crossing sections: 12,911 eligible windows.
Two models were specified before simulation:
- The previously used rejection probability
s=0.82, implying a neighboring-repeat probability of approximately 0.006388. - The same symmetric transition model with its repeat probability fitted to the observed
86/12,947 ≈ 0.006642eligible within-section neighbors.
Each model generated 4,999 complete simulated corpora. Sampling the derived transition distribution is equivalent to ideal uniform-pad rejection sampling for the emitted runes; it avoids generating discarded candidates. It does not simulate any particular SHA-256 seed or impose exact empirical rune inventories.
Results
| Measurement | Real corpus | Fixed rejection model | Fitted repeat-rate model |
|---|---|---|---|
| Neighboring identical runes | 86 | Mean 82.87 | Mean 85.79 |
| Central 95% simulated interval for that count | — | 65–101 | 68–104 |
| Repeated eligible two-word phrase pairs | 1 | Present in 0 of 4,999 corpora | Present in 2 of 4,999 corpora |
| Repeated six-rune windows, ignoring word boundaries | 1 | Present in 706 of 4,999 corpora | Present in 693 of 4,999 corpora |
The neighboring-repeat count is ordinary under both models. A six-rune match somewhere in the rune stream also occurs fairly often, in about 14% of simulated books. The complete-word repetition is much rarer, even after fitting the adjacent-repeat rate.
Zero simulated occurrences does not mean impossible. Two occurrences in the second batch also show why rare-event estimates at this sample size are noisy. These counts are exploratory model checks, not the probability that the hypothesis is false.
What changed in our assessment?
The simple random-key filter explains one feature but leaves another unexplained. That is a reason to lower the priority of expanding its seed dictionary. A mechanism worth prioritizing should explain both the neighboring-repeat shortage and the word-aligned phrase recurrence, or specify why the latter is an incidental coincidence.
This is not an independent discovery of the repeated phrase. Session 5 already found it unusual in a different comparison preserving exact per-page adjacent-pair counts. Session 32 confirmed its two occurrences in the archived images. We are testing a newly considered mechanism against that same known observation, using the corrected word parser. The two results must not be multiplied together as independent evidence.
The phrase was noticed before this test, and many structural features have been explored during the investigation. This run does not correct for that entire research history. It also cannot exclude structured key streams merely by approximating them as independent random symbols.
Controls, scope and next step
The statistic detects a deliberately planted two-word six-rune match in a constructed corpus. It also finds exactly the one known match in the retained real transcription. The phrase's meaning remains unknown: identical ciphertext does not imply identical plaintext under an unknown cipher.
The next useful question is whether the two locations share a local reset or state-reuse condition that could reproduce a short ciphertext segment without repeating the surrounding text. Session 32 already found different immediate predecessors and different distances from the red marks, so a simple common red-mark reset is not supported. Any new reset hypothesis needs an explicit rule and checks at other locations before another key search.
Reproduce
- Simulation and counting code
- All 9,998 simulated counts and source hash
- Corrected word parser, rune utilities, and word utilities
Run python -B keyskip_phrase_test.py with NumPy and the companion files in the same directory. Random seeds are 51001 and 51002; the planted counting control uses 5100. The transcription is unchanged.