Research journal / Session 34Notebook updated 12 Oct 2026
Session 34 / 73

Short cycles do not close the frequency gap

Result: none of the six short-cycle variants can produce a single-rune distribution like our solved LP1 benchmark. No unknown key or new plaintext. Alternating the rule raises the maximum possible frequency of one output rune, but only to 7.07% in the most permissive tested case. The solved sample contains 12.67% E.

All six constructed controls decrypt exactly with supplied keys. Randomly partitioning the real transitions gives similar loosening of the bound. That loosening alone supplies no evidence of a hidden cycle.

What was tested

This session adds cycles of two or three positions to Session 33's one-rune ciphertext feedback, using three counters:

  • Section: restart at zero in each marked section.
  • Original page: restart at zero on each original LP2 page, preserving correct offsets when a section begins midpage.
  • Global: count through LP2 pages 0–55, including the nine-rune section omitted from scoring.

These six variants were fixed before calculating their results. No larger periods or individually selected section phases were searched. Phase belongs to the current rune being decoded. A common phase shift merely renames the rules and leaves the bounds unchanged.

The tested family deliberately gives more freedom than a specific keyed-difference cipher:

plaintext[i] = G[phase[i], previous_ciphertext_rune](current_ciphertext_rune)

Each combination of phase and previous ciphertext rune can choose any fixed one-to-one mapping of the 29 possible current runes onto the plaintext alphabet. These mappings are shared across the selected sections. They need not arise from a consistent alphabet permutation, and diagonal pairs need not map to the same output across phases. Relaxing those restrictions favors the candidate.

Previous ciphertext carries across internal page and word boundaries. A page reset changes the phase only. The first rune of each substantial section is excluded because its preceding state is unspecified. Every variant scores the same 12,939 transitions, including 86 repeated neighbors.

The exact bound

For each context, decoding can rearrange its transition counts among plaintext symbols but cannot change those counts. Sorting each row from largest to smallest and aligning those ranks across rows gives the most concentrated possible output histogram in this relaxed family. This yields an exact minimum output entropy and maximum single-rune frequency, as derived in Session 33.

Counter Cycle length Minimum entropy, bits/rune Maximum output-rune frequency
Fixed-rule baseline 1 4.7894 5.53%
Section 2 4.7458 6.35%
Original page 2 4.7488 6.38%
Global 2 4.7460 6.19%
Section 3 4.6978 6.97%
Original page 3 4.7008 7.06%
Global 3 4.7004 7.07%
Solved LP1 benchmark Not applicable Observed: 4.2606 Observed E: 12.67%

None reaches the benchmark's less even distribution. These are exact empirical bounds, not probabilities of a cipher being correct or population entropy estimates.

Separate checks agree in direction. Across the six variants, output-rune frequency is capped at 9.01% or less in the first four sections and 8.42% or less in the remaining four. Both portions' entropy bounds stay above the benchmark. This is retrospective analysis of previously examined sections, not fresh blind validation. No key was fitted on either portion.

Does dividing the data create apparent progress?

Splitting 29 previous-rune contexts into 58 or 87 phase-and-rune contexts gives each row fewer observations and allows more independent rearrangements. The bound therefore becomes more permissive even without a meaningful cycle.

Each variant received 999 random phase partitions. Phase labels on scored transitions were shuffled within each section, retaining every ciphertext transition and the count of positions assigned to each phase. These are arbitrary partitions used to measure sample fragmentation, not newly generated valid periodic ciphertexts.

Counter Cycle Actual entropy bound Central 95% of random-partition bounds
Section 2 4.7458 4.7424–4.7511
Original page 2 4.7488 4.7422–4.7508
Global 2 4.7460 4.7423–4.7508
Section 3 4.6978 4.6966–4.7093
Original page 3 4.7008 4.6964–4.7088
Global 3 4.7004 4.6971–4.7088

All six actual entropy bounds lie inside these descriptive ranges. Peak-frequency comparisons and every simulation value are also saved. These intervals are neither confidence intervals for plaintext nor a multiple-testing-adjusted significance test.

Controls

For each counter and cycle length, a constructed cipher uses a random alphabet permutation at each phase:

p[i] = (pi[phase, c[i]] - pi[phase, c[i-1]] + r) mod 29

Here r = EA. Solved LP1 runes are cycled to match the eight observed section lengths. Every control has the same rare-repeat rule: ciphertext repeats occur exactly where the next plaintext rune is EA.

Counter Cycle Actual plaintext entropy Bound with correct cycle Bound under an incorrect fixed rule
Section 2 4.2458 4.1880 4.5043
Section 3 4.2458 4.1411 4.6099
Original page 2 4.2458 4.1847 4.5251
Original page 3 4.2458 4.1536 4.5933
Global 2 4.2458 4.1876 4.5165
Global 3 4.2458 4.1541 4.5973

All six supplied-key round trips recover the source exactly. The correct cycle permits the actual plaintext distribution; treating it as fixed would exclude that distribution. These checks verify the encoder, decoder and bounds on constructed examples. They do not demonstrate unknown-key recovery or a general detection threshold.

A small fixture exhaustively checks 1,296 row assignments for four three-symbol contexts. Both the minimum entropy and maximum count agree with the sorting calculation. Page counters are independently checked against a character scan, including midpage section starts. The period-one baseline reproduces Session 33.

The repeated phrase under these counters

Counter Period-2 anchor phases Period-3 anchor phases
Section 0 and 0 1 and 1
Original page 0 and 0 1 and 1
Global 1 and 0 0 and 2

When phases match, the final five plaintext runes must match: each has the same phase, previous ciphertext rune and current ciphertext rune. The first plaintext runes need not match because their predecessors differ. For the more specific keyed-difference control family, those first runes must differ. Different phases supply no such equality without further assumptions.

These are conditional constraints, not a translation or evidence selecting a counter.

Decision and limits

Two- and three-position alternation do not rescue a shared one-rune-memory decoder as a direct route to the solved LP1 frequency profile. No unknown-key search is needed to establish that limitation.

This does not prove that every English passage must resemble the sample. Balanced text, other languages, intermediate encodings, different section keys, extra state and other reset rules remain outside the conclusion.

Increasing the period indefinitely would eventually loosen the bound simply by fragmenting the data. That would not identify a cycle or prove a decryption. The next experiment should test a different, specifically defined state mechanism rather than keep extending periods until this constraint disappears.

Reproduce

Run python -B short_cycle_feedback_audit.py beside the existing corpus and helper scripts, using Python and NumPy. No network calls. Results retain transition tables, separate section-split bounds, simulations, control keys, counter definitions and hashes.