# Cicada 3301: transition-preserving comparisons and changing alphabets

**Result: no verified new plaintext.** Completed a stricter repeated-phrase comparison and two bounded families of stateful decoding experiments. The established two-word repetition remains unusual under the new comparison. All three constructed positive controls recovered correctly, but no unsolved section yielded a readable continuation.

## 1. Resolve the novelty question

Inspected the [Cicada Solvers bigram page](https://www.cicadasolvers.com/wiki/n-gram/bigram/) and its [published chart](https://www.cicadasolvers.com/wp-content/uploads/2025/04/Bigram_table.png). Its diagonal already displays the shortage of identical neighboring runes.

Visually transcribed all 29 diagonal counts and compared them with our calculation for the continuous rune stream on LP2 pages 0-55. **Every diagonal entry matches**, totaling 86 equal-neighbor pairs when all runes are read continuously and delimiters are ignored. Of these, the earlier word analysis found 63 inside words. The two totals measure different scopes and do not conflict.

This is confirmation of a publicly visible property, not a new discovery. The page does not identify the cipher responsible. Reviewing these public structural pages was not an exhaustive literature search. The earlier report's uncertainty about novelty is now resolved narrowly: the repeat deficit is visibly present in the existing chart.

Saved the image and comparison in `community_bigram_table.png` and `community_transition_check.json`.

## 2. Preserve adjacent-pair counts in the null comparison

The earlier shuffles preserved each page's rune inventory and word layout but destroyed its adjacent-pair structure. This pass generated **999 versions that preserve, separately for every page**:

- Exact rune counts and page length.
- Every ordered adjacent-rune pair count, including repeated neighbors.
- First and last rune.
- The original positions of all word and larger delimiters when inserting the randomized rune sequence back into the layout.

The sampler represents adjacent pairs as directed edges. For each nonterminal rune, it selects a final outgoing edge, rejecting choices until those edges form paths to the page's terminal rune. It then shuffles the remaining outgoing edges and follows them from the original starting rune. This is a last-exit-tree construction of an Euler trail. Every generated page is checked against all four numerical invariants: length, rune histogram, ordered-pair histogram and endpoints. Page endpoints being fixed also preserves cross-page rune pairs.

The statistic counts **any repeated two-word phrase totaling at least six runes**, within a paragraph and section. It does not search only for the already known `ᛞᛄᚢ ᛒᛖᛁ` pattern.

| Data | Repeated two-word phrase pairs, at least six runes |
|---|---:|
| Original corpus | 1 |
| Each of 999 adjacent-pair-preserving versions | 0 |

Thus the repeated phrase is not accounted for by preserving adjacent-pair counts alone in these simulations. This is an exploratory comparison of an already known pattern, not an independent discovery or a probability that a particular interpretation is true. It supplies no plaintext and does not prove that the phrase carries the same meaning at both locations.

RNG seed: 3301005. All 999 statistics and sampler attempt counts are retained in `transition_surrogate_results.json`.

## 3. Changing-alphabet hypotheses

Tested alphabets that rearrange after every rune. Each starts in natural rune order or reversed order, with all 29 cyclic offsets. Two decoding directions were included:

- Treat a ciphertext rune as a symbol, and output its position in the current alphabet.
- Treat a ciphertext rune's value as a position, and output the symbol at that position.

After processing each rune, update the alphabet by one of five specified operations:

1. Move the selected symbol to the front.
2. Move it to the back.
3. Swap it with the first symbol.
4. Rotate until it is first.
5. Rotate until the following symbol is first.

Tested continuous state, word resets and paragraph resets. Decoded values then receive either sign and a shift of 0-28 modulo 29. These are explicit research hypotheses, not authenticated Cicada instructions.

**807,360 parameter settings** across the eight substantial unsolved sections. Counts include equivalent settings; they are not counts of distinct cipher families.

For each section, selection used only a complete-word prefix ending at or before 256 runes and at or before 60% of the section. The selected rules then decoded the remainder unchanged. Leading candidates remained unreadable on their continuations.

Positive controls used the held-out LP2 page-57 plaintext. One was encrypted with a reversed, offset-7 alphabet and move-to-front updates. The other used natural order, offset 11, rotate-after updates and word resets. The full search recovered both exact plaintexts at rank 1.

This does not test arbitrary initial permutations, arbitrary final substitution alphabets or every possible state update. Negative findings cannot rule out changing-alphabet ciphers generally.

## 4. Previous-symbol exclusion hypothesis

Tested a rule designed specifically to make immediate repetitions rare:

1. Relabel ciphertext as `(a*c+b) mod29`, with `a=1..28`, `b=0..28`.
2. Remove the preceding ciphertext symbol from the ordered alphabet.
3. Output the current symbol's rank among the remaining 28 symbols.
4. If the current symbol equals the previous one, output reserved rank 28 instead.
5. Apply either sign and a final shift of 0-28 modulo 29.

Under an encoder of this form, repeats represent one reserved plaintext value. The initial previous-symbol state is zero. Continuous, word-reset and paragraph-reset variants were tested, with the same prefix-selection and unchanged-continuation protocol.

**1,130,304 settings** across eight sections. No readable continuation emerged. A constructed control encrypted the held-out page-57 plaintext using input relabeling `a=17, b=7`, final sign -1 and shift 3, with paragraph resets. It recovered exactly at rank 1.

The reserved-symbol rule is a proposed mechanism, not evidence that any particular rune is an escape symbol in the real puzzle. Other symbol orderings, initial states, state rules and additional layers remain untested.

## Interpretation

This pass adds 1,937,664 direct parameter settings, three successful synthetic controls, and 999 stricter randomized comparisons. None produced a verified new translation.

The useful constraints now are:

- Immediate repeated neighbors are substantially suppressed throughout the substantial unsolved sections; this is already visible in the community's published chart.
- The established two-word repetition remains unusual even when the exact per-page adjacent-pair structure is retained.
- The tested simple linear feedback, ordered-alphabet update and previous-symbol exclusion rules did not decode the text.

A next proposed mechanism should be checked against both structural properties and required to produce coherent, independently held-out plaintext. The repeated phrase can constrain experiments, but guessing its English meaning without a working rule would not be a solution. Expanding arbitrary key searches alone would add little evidential value.

## Reproduction

Python 3 and NumPy; local source snapshots only:

```bash
python transition_surrogates.py
python changing_alphabet_pass.py
```

`word_core.py` and `lp_core.py` provide parsing, rune values and the boundary-aware scorer validated in session 4. Full output is in `transition_surrogate_results.json` and `changing_alphabet_results.json`. Failed candidate texts are retained for audit and are not proposed translations. No background task remains running.

Sources:

- [Community bigram chart](https://www.cicadasolvers.com/wp-content/uploads/2025/04/Bigram_table.png)
- [Community structural overview](https://www.cicadasolvers.com/wiki/liber-primus/liber-primus-structural-overview/)
- [Master rune transcription](https://github.com/cicada-solvers/iddqd/blob/master/liber-primus__transcription--master/liber-primus__transcription--master.txt)

The original transcription limitations and absence of independent PGP authentication still apply.
