NOITA EYES: CONDITIONAL EXCLUSION OF ONE SPARSE DECK FAMILY
26 October 2026. This is a model exclusion, NOT a decipherment.

RUN
  python verify.py
Python standard library only. Run normally, without Python -O: assertions
enforce the verification checks. Usually under one minute. Reads messages.json
and writes verification.json. No network, installed solvers or prior folders.

THE PRECISE MODEL
83 distinct cards occupy 83 positions. At each step:
  1. Apply the same full 83-cycle position permutation R.
  2. Ordinary plaintext: swap position 0 with its fixed assigned position p.
     One exceptional plaintext type: swap one fixed pair of nonzero positions.
  3. Emit the card at position 0 and retain the resulting deck.
Different messages may start with arbitrary, unrelated decks. Every nonzero
ordinary position is allowed; no 26-letter or 27-letter limit is used here.
Ordinary slot 0 is excluded because it gives the same current output as the
exceptional type, violating the model's unique-decryption requirement.

Any full cycle can be relabeled, fixing position 0, to R(j)=j+1 mod 83.
This leaves 3321 possible unordered off-top pairs, all checked exhaustively.

CONDITIONAL PLAINTEXT ASSUMPTIONS (Python zero-based half-open coordinates)
  E4[70:97] = W4[73:100] = E5[71:98]    (27 actions each)
  W1[38] = W1[68]                       (one action equality)
These are hypotheses motivated by the published ciphertext isomorphs. They
are NOT known plaintext. Equal patterns do not logically prove equal words.
We equate matching positions across windows; repeated ciphertext labels
inside a window are NOT assumed to be equal plaintext letters.

INDEXING CORRECTION
30 matched ciphertext observations naturally provide 29 intervening actions.
The first observation is incoming state, not an additional shared action.
Earlier work in this session used stronger 30-action assumptions. Those old
conditional calculations were mathematically narrower but did not establish
the claimed interpretation of the observed patterns. This package starts
fresh with corrected action windows. A separately reviewed proof compression
then removes the two ends of each 29-action word and 16 of the 17 W1 links.
The final 27/27/1 assumptions above are sufficient; no global minimality is
claimed. See lab/decisions/D003.json
in the full research archive for the audit and primary-source references.

THE RESULT
Under the above assumptions, NO key in this precise family can produce the
nine archived ciphertext messages, even with unrelated initial decks and an
unrestricted ordinary alphabet. This does not exclude general deck ciphers,
bases with multiple cycles, multiple exceptional instructions, changing
output positions, state-dependent instructions, or different plaintext
alignment assumptions. It does not identify the actual Noita cipher.

WHY THE CHECKER IS SOUND
1. One retained equality, W1[38]=W1[68], suffices for a cheap first screen.
   Those emitted cards have immediately preceding return gaps 8 and 9.
   Independently track a card after an output at position 0; forbid it from
   emitting early, and allow all ordinary slots. The two endpoint action
   sets must intersect. This leaves 35 of 3321 pairs. The path calculation is
   deliberately generous, so it can retain impossible models but cannot
   reject a true one.

2. For each of those 35 pairs, track every card separately through complete
   messages, using exact transitions for every possible action. At each
   observed output, that card is at top and every other card is not. Forward
   and backward reachability removes action choices that have no possible
   path. Equal plaintext positions must share their action. We ignore joint
   all-different constraints between cards, making this a relaxation.

3. For a common plaintext word, the same position permutations act on both
   decks. Therefore the card-label correspondence between them is constant
   throughout that word, including its incoming state. Corresponding emitted
   cards must occupy corresponding positions at every such state. Intersect
   their position domains and repeat path consistency. Only pair(1,82)
   remains. Position 1 is the second card; position 82 is the last card, after
   normalization of the cycle. These are not decoded glyph values.

4. Any remaining key must choose exception or ordinary at E4[68], and also
   exception or ordinary at W1[34]. The four combinations exhaust all cases.
   Every branch reaches an empty action or card-position domain. No candidate
   key is discarded merely because a solver timed out or a search failed.

CHECKS AND REVIEW
The packaged checker compares bitset transitions with literal enumeration,
preserves true planted models and rejects an inconsistent correspondence.
Separate research implementations independently verified all 3321 initial
cases, all 35 trajectory cases and all 4 final branches using boolean position
arrays and explicitly enumerated transitions. They do not import this
bitset engine. The initial review chain is T003-R009, T003-R008 and
T003-R010; T003-R017 independently verifies the final 27/27/1 compression.

DATA
1036 outputs across nine archived messages, values 0..82 treated solely as
arbitrary card labels. The SHA256 of messages.json is enforced by verify.py:
ab6c4765c09ccd6dce4aeeba26fb391e5966a3bfe5587c0bf10649ba03a3d849
The original archive compared two published representations, which may share
an upstream source. This is not a fresh in-game transcription audit.
https://github.com/Lymm37/eye-messages/wiki/Data
https://github.com/SirCapybar/NoitaEyeGlyphResearch/blob/master/NoitaEyeGlyphResearchLib/data.csv

NOVELTY
The specific restricted-family exclusion was not found in the inspected
sources. The position-correspondence invariant is existing GAK theory.
No claim of being the first discoverer is made.
