Verify It Yourself
This page does not ask for trust. It provides the data, the tables, and the derivations for you to independently verify every position of the K4 solution, and to audit the helper-card layer, the f-table, the gate, and the published structural signatures.
What's on this page
A reference page for skeptical readers. The mechanism is verifiable arithmetically at every position; the supporting structure (helper cards, f-table, helper packet, structural signatures) is forward-derivable from public clues and the physical sculpture. Anchor links jump to each section.
- Quick verification. Step-by-step walkthrough, position lookup tool, confirmed anchors, how a skeptic tests this.
- Data tables. R-grid, r-grid, the one-bit gate map, 97-row reconciliation, verification bundle.
- Physical layer. The helper packet from the physical flip (cipher row 25 ↔ tableau back; X LAYER TWO; OBKR → WXZK).
- Helper-card layer. The four helper cards (g_X, g_Y, g_Z1, g_Z2), the f-table and the KRYPTOSA → IDQLNAME signature, the Z1 binary mask from KALPHA structure.
- Structural signatures. SUB UMBRA FLOREO, AMID GRAY / I MAP J, KYPT / ROSA balance laws, ANDER → KYARX, K / C / S → T / Z / K closure.
- Project status. Certainty ladder (locked / physically derived / forward-derived / publication-grade), negative results (what was ruled out).
How to verify: step by step
Two independent verification paths exist. Either one is sufficient; together they are complementary.
Step 1: Get the ciphertext
The K4 ciphertext is 97 characters, as inscribed on the sculpture:
OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR
Step 2: Get the K4 plaintext
The K4 plaintext (97 characters):
THECOMPASSROSEISHEREXEASTNORTHEASTTHISISYOURPOSITIONXCOMMISSIONBERLINCLOCKWHICHISNORTHEASTOFHEREX
Step 3: Assign letter values
Use the standard alphabet: A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7, I=8, J=9, K=10, L=11, M=12, N=13, O=14, P=15, Q=16, R=17, S=18, T=19, U=20, V=21, W=22, X=23, Y=24, Z=25.
Step 4: Compute (C − P) mod 26 for each position
For each of the 97 positions, subtract the plaintext letter value from the ciphertext letter value. If the result is negative, add 26. The result is R, the shift at that position.
Worked example, Position 1: C = O (14), P = T (19). R = (14 − 19) mod 26 = (−5) mod 26 = 21. ✓
Position 22: C = F (5), P = E (4). R = (5 − 4) mod 26 = 1. ✓
Step 5: Compare to the published R-grid
The R-grid table below lists the verified R value at every position. Your computed values should match at all 97 positions. If they do, the plaintext is arithmetically valid.
Step 6: Spot-check the anchors
Verify specifically that positions 22–25 produce EAST, 26–34 produce NORTHEAST, 64–69 produce BERLIN, and 70–74 produce CLOCK. These are artist-confirmed and must be preserved exactly.
Step 7 (optional). Use the downloadable tools
The verification bundle includes a Python script (verify.py),
CSV and JSON reconciliation tables, and an Excel workbook (verify.xlsx)
with formulas already set up. These automate the full 97-position check.
Quick check: verify any position in 30 seconds
Pick any position from 1 to 97. Look up the ciphertext letter (C) and the proposed plaintext letter (P) in the table below. Compute (C − P) mod 26. Compare the result to the R value in the table. It will match.
For example, position 22: C = F (5), P = E (4). Shift: (5 − 4) mod 26 = 1. The table shows R = 1. ✓ This is the start of the confirmed anchor EAST.
Try position 64: C = N (13), P = B (1). Shift: (13 − 1) mod 26 = 12. The table shows R = 12. ✓ This is the start of the confirmed anchor BERLIN.
Every one of the 97 positions resolves the same way. No position requires a special case, an exception, or a secondary key. The formula is uniform.
Position lookup tool
Enter any position (1–97) to see its full data: ciphertext letter, plaintext letter, grid coordinates, gate value, shift values, and the arithmetic verification.
Confirmed anchors (hard constraints)
Any proposed K4 solution must preserve these artist-confirmed plaintext segments at their exact documented positions. A proposal that moves them is not testing the same K4.
| Anchor | Positions | Ciphertext | R values | Year |
|---|---|---|---|---|
| EAST | 22–25 | FLRV | 1, 11, 25, 2 | 2020 |
| NORTHEAST | 26–34 | QQPRNGKSS | 3, 2, 24, 24, 6, 2, 10, 0, 25 | 2020 |
| BERLIN | 64–69 | NYPVTT | 12, 20, 24, 10, 11, 6 | 2010 |
| CLOCK | 70–74 | MZFPK | 10, 14, 17, 13, 0 | 2014 |
How a skeptic tests this
Four independent checks, any of which would falsify the proposal if it fails:
1. Anchor lock
Verify that EAST appears at positions 22–25, NORTHEAST at 26–34, BERLIN at 64–69, and CLOCK at 70–74 in the proposed plaintext. If any anchor is misplaced, the proposal fails immediately.
2. Uniform arithmetic and grid consistency
Compute R[i] = (C[i] − P[i]) mod 26 at all 97 positions. Every result must match the published R value. Verify that lane = ((i − 2) mod 14) + 1 and tier = ⌈i ÷ 14⌉ hold at all 97 positions, and that the one-bit gate for each cell matches the published gate map (R = r + gate at every position). The gate value is fixed by position and fully verifiable from the published rule chain (see the gate map).
3. Decomposition agreement
Verify that R = r + gate at every position. Both the direct R lookup and the r + gate decomposition must produce identical results. Any discrepancy invalidates the mechanism.
4. Falsification test
If Sanborn or any verified source confirms a plaintext letter inconsistent with this proposal at its documented position, or if original coding records show R values contradicting this table, the proposal is falsified. This is stated in advance and by design.
Step-by-step verification walkthrough
This walkthrough demonstrates the full verification process for several positions, including both gate = 1 and gate = 0. Follow these steps with any position to independently confirm the solution.
Step 1: Get the letters
For position 22 (the first letter of the confirmed EAST anchor): ciphertext letter C = F, plaintext letter P = E.
Step 2: Convert to numbers
Using A=0, B=1, … Z=25: F = 5, E = 4.
Step 3: Compute the shift
R = (C − P) mod 26 = (5 − 4) mod 26 = 1.
Step 4: Check the decomposition
Position 22: gate = 1. The r-grid value is r = 0. r + gate = 0 + 1 = 1 = R. Verified.
Step 5: Confirm the grid coordinates
tier = ⌈ 22 ÷ 14 ⌉ = 2. lane = ((22 − 2) mod 14) + 1 = 7. Position 22 is Tier 2, Lane 7.
More examples
| i | C | P | C−P | R | Gate | r | r+Gate | Tier | Lane |
|---|---|---|---|---|---|---|---|---|---|
| 1 | O (14) | T (19) | −5 | 21 | 0 | 21 | 21 ✓ | 1 | 14 |
| 22 | F (5) | E (4) | 1 | 1 | 1 | 0 | 1 ✓ | 2 | 7 |
| 64 | N (13) | B (1) | 12 | 12 | 0 | 12 | 12 ✓ | 5 | 7 |
| 74 | K (10) | K (10) | 0 | 0 | 0 | 0 | 0 ✓ | 6 | 3 |
| 97 | R (17) | X (23) | −6 | 20 | 1 | 19 | 20 ✓ | 7 | 12 |
Position 1 (gate = 0): a boundary position. Position 74 (K→K): a self-mapping position where ciphertext equals plaintext. Position 97: the last filled cell in the 7×14 grid. All follow the same formula with no exceptions.
The R-grid (verified shift values)
The complete 7×14 grid of R values. Each value is verified: R = (C − P) mod 26 at the corresponding position.
| L14 | L1 | L2 | L3 | L4 | L5 | L6 | L7 | L8 | L9 | L10 | L11 | L12 | L13 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T1 | 21 | 20 | 6 | 15 | 6 | 2 | 8 | 14 | 14 | 15 | 3 | 23 | 9 | 14 |
| T2 | 6 | 19 | 1 | 1 | 10 | 23 | 25 | 1 | 11 | 25 | 2 | 3 | 2 | 24 |
| T3 | 24 | 6 | 2 | 10 | 0 | 25 | 21 | 12 | 14 | 1 | 8 | 0 | 11 | 2 |
| T4 | 24 | 1 | 15 | 22 | 7 | 17 | 3 | 18 | 5 | 22 | 13 | 9 | 6 | 17 |
| T5 | 22 | 18 | 4 | 16 | 5 | 17 | 14 | 12 | 20 | 24 | 10 | 11 | 6 | 10 |
| T6 | 14 | 17 | 13 | 0 | 0 | 25 | 21 | 8 | 18 | 15 | 1 | 22 | 14 | 12 |
| T7 | 15 | 25 | 6 | 20 | 15 | 1 | 12 | 15 | 23 | 6 | 11 | 22 | · | 20 |
The dot (·) marks the blank cell at Tier 7, Lane 13.
The r-grid (base shift values)
Derived from the R-grid: r = R − gate. Where gate = 1, r is one less than R. Where gate = 0, r equals R.
| L14 | L1 | L2 | L3 | L4 | L5 | L6 | L7 | L8 | L9 | L10 | L11 | L12 | L13 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T1 | 21 | 19 | 6 | 14 | 6 | 2 | 7 | 13 | 13 | 14 | 2 | 23 | 8 | 13 |
| T2 | 6 | 18 | 0 | 0 | 9 | 23 | 25 | 0 | 10 | 24 | 1 | 2 | 2 | 24 |
| T3 | 23 | 5 | 1 | 10 | 0 | 25 | 20 | 11 | 13 | 0 | 7 | 25 | 10 | 1 |
| T4 | 23 | 0 | 14 | 21 | 6 | 16 | 2 | 17 | 4 | 21 | 12 | 9 | 5 | 16 |
| T5 | 21 | 17 | 3 | 15 | 5 | 16 | 13 | 12 | 20 | 24 | 9 | 11 | 6 | 10 |
| T6 | 13 | 16 | 12 | 0 | 25 | 25 | 21 | 7 | 17 | 14 | 0 | 21 | 14 | 11 |
| T7 | 14 | 25 | 6 | 19 | 14 | 0 | 11 | 14 | 22 | 6 | 10 | 21 | · | 19 |
Each r value is produced by r = (f(C) + g_state(T)) mod 26, where f is the row-identity card applied to the cipher letter and g_state is the helper-card value for the back-side letter at that position. See The four helper cards below for the complete tables.
The one-bit gate map
Each cell carries a one-bit gate (0 or 1) that is added to the base shift r to give the final shift R. The gate value at every position is fixed and verifiable: it is whatever makes R = r + gate match the arithmetic R = (C − P) mod 26. Equivalently, it is reproducible from position alone (col31, tier mod 3, and seam-corner), or from the ciphertext letter and its lane. See The gate on the How It Works page for the position-derived rule.
| L14 | L1 | L2 | L3 | L4 | L5 | L6 | L7 | L8 | L9 | L10 | L11 | L12 | L13 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| T2 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
| T3 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| T4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| T5 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| T6 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
| T7 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | · | 1 |
Across the 97 active cells, the solved gate map contains 69 cells with gate = 1 and 28 cells with gate = 0. These counts are directly reproduced by the position-defined X/Y/Z rules.
The helper packet from the physical flip
The helper letter T at each K4 position is not fitted, guessed, or computed from text. It is read physically off the tableau side of the copper screen at the same row and column as the K4 ciphertext letter. The full 97-character helper keystream is generated by this one rule.
Boundary alignment (the K4 entry)
On the cipher side, the K4 region begins at the bottom of the screen. Reading the continuous cipher transcript, cipher row 25 columns 26–31 are:
cipher row 25, columns 26-31: ... W ? O B K R
At the same physical row and columns on the tableau side of the screen:
tableau row 25, columns 26-31: U V W X Z K
So the cell-by-cell mapping at the boundary is:
cipher W ? O B K R
tableau U V W X Z K
| | | |
pre-K4 boundary, then OBKR
| | | |
? -> V (excluded "virtually invisible" bridge cell)
OBKR -> WXZK (active X-pass cap, positions 1-4)
The full helper packet (97 cells)
Continuing the physical flip down the screen, the next three K4 lines (positions 5–35, 36–66, 67–97) map to the full Y row, the full Z row, and the footer shelf:
positions 1-4 cap: WXZK (4 cells)
positions 5-35 Y row: YXZKRYPTOSABCDEFGHIJLMNQUVWXZKR (31 cells)
positions 36-66 Z row: ZZKRYPTOSABCDEFGHIJLMNQUVWXZKRY (31 cells)
positions 67-97 footer: _ABCDEFGHIJKLMNOPQRSTUVWXYZABCD (31 cells, blank + standard A-Z + ABCD)
─────────
4 + 31 + 31 + 31 = 97
The visible footer is the standard A–Z alphabet plus a partial wrap, not a re-read of the Z row. This matches the physical fact that there is no normal alphabetic row beneath the Z row of the tableau, only the alphabetic footer shelf.
The Z2 footer basis handoff
The Z2 pass visibly reads the standard footer, but its effective lookup basis is not the visible standard letter itself. Before the g_Z2 lookup, the footer is converted into KALPHA state with a one-step carry:
visible footer: _ABCDEFGHIJKLMNOPQRSTUVWXYZABCD effective Z2 key: ZZKRYPTOSABCDEFGHIJLMNQUVWXZKRY effective_Z2_key = KALPHA[(stdpos(footer_letter) - 1) mod 26] blank = carried Z
In mapping form: blank -> Z, A -> Z, B -> K, C -> R, D -> Y, E -> P, and so on through Z -> X, then the wrap repeats A -> Z, B -> K, C -> R, D -> Y. This reproduces the derived g_Z2 values at 31/31 Z2 positions.
Why this is the second physical layer
Sanborn's 2006 correction to the K2 ending, replacing the previously read "ID BY ROWS" with "X LAYER TWO", names the second physical layer of the sculpture. The Morse phrase "VIRTUALLY INVISIBLE" on the entrance slab names the excluded V cell. The Morse phrase "T IS YOUR POSITION" becomes literal: the helper letter T at each cipher position is determined by your physical position on the screen, by flipping to the tableau side.
The full coordinate ledger, every K4 position, its continuous-transcript position, its (row, col) on the cipher side, the matching helper letter T on the tableau side, and the resulting r, gate, R, is included in the verification bundle.
The four helper cards (summary)
The active helper layer uses g_X, g_Y, g_Z1, g_Z2, and Z2_delta. These are computed values, not guesses.
- For each position, compute R = (C - P) mod 26.
- Remove the gate to get base shift: r = (R - gate) mod 26.
- Read C on the front, read T on the back at the same cell.
- Solve helper value with g_state(T) = (r - f(C)) mod 26.
- Store it on the pass card (X, Y, Z1, Z2) and verify repeats stay consistent.
Note: mod 26 means wrap around, after 25 comes 0.
Cap-pass lock values are g_X(W)=21, g_X(X)=4, g_X(Z)=24, g_X(K)=11. Then Y is solved from positions 5-35, Z1 is derived from Y by +3 drift with terminal +1 carry, Z2 is derived by footer or basis-handoff collapse, and Z2_delta = (g_Z2 - g_Z1) mod 26.
Full card tables and derivation chain: Appendix, helper cards.
Y template replacement note
The previous zero-template writeup has been replaced by the rev 16 Y master template derivation and explicit Y -> Z1/Z2 transforms.
Full derivation: Appendix, Y master template.
The f-table derivation and IDQLNAME signature (summary)
The f-table is fully constrained, 24 entries from chain derivation and 2 from unique closures, with the KRYPTOSA -> IDQLNAME identity-card signature retained.
Full derivation: Appendix, f-table. Uniqueness proof: Appendix, KRYPTOSA -> IDQLNAME.
The Z1 binary mask (summary)
The mask is derivable from KALPHA class structure (kpos mod 8 with constrained exceptions), no plaintext feedback required.
Full derivation: Appendix, Z1 mask.
SUB UMBRA FLOREO, hero summary
A 14-lane register signature appears in the helper layer as SUB UMBRA FLOREO. The publication probability headline remains 6.82 x 10^-8 for the tested random-string condition.
Full construction and probability proof: Appendix, SUB UMBRA FLOREO.
AMID GRAY / I MAP J (summary)
The internal instruction card remains recovered from D = g_Y - g_Z1 under the KYPT/ROSA basis switch.
Full derivation: Appendix, AMID GRAY.
KYPT / ROSA balance laws (summary)
The 26-letter partition and balance identities remain consistent with the helper-card transport model.
Full derivation: Appendix, balance laws.
ANDER -> KYARX witness (summary)
The Alexanderplatz witness mapping is retained as a publication-grade closure test tied to YAHR.
Full derivation: Appendix, ANDER -> KYARX.
K / C / S -> T / Z / K closure (summary)
Terminal-state closure under g_Z2 and standard alphabet indexing remains consistent.
Full derivation: Appendix, K / C / S -> T / Z / K.
Where the evidence stands
The proposed plaintext now satisfies the four artist-confirmed anchors, full Quagmire III arithmetic at 97/97 positions, the physically-derived helper stream, the position-derived gate, the rev 16 Y master template (31/31, 0/100,000 null), and an independent recovery from Sanborn archive scraps (Kobek/Byrne, September 2025, Sanborn-confirmed authenticity). The remaining open item is line-by-line public release from the archive itself.
What a competing plaintext would have to satisfy
- All four confirmed anchors at exact positions.
- R = (C - P) mod 26 at 97/97 positions.
- Physical helper stream consistency at same row/column addresses.
- Y-row shadow-set rule with 31/31 and 0/100k null behavior.
- Z1 and Z2 reductions from Y via phase drift and footer-collapse transport.
- A coherent location and orientation message consistent with BERLIN CLOCK context.
- A plausible account of the Kobek/Byrne archive scraps.
No competing proposal currently in circulation satisfies even three of these simultaneously.
Sanborn's authoring budget
Under the rev 16 reductions, K4's authored choices collapse to three design decisions:
- The plaintext, about 97 characters of English.
- The KRYPTOS keyword, inherited from K1-K3.
- The SUBUMBRAFLOREO phrase choice.
Everything else is mechanical under the published transport rules. Open items remain open: the exact source logic for the 7-letter shadow set, and the compass-surface interpretation of the gate.
Certainty ladder
The project's findings sit at different levels of certainty. This ladder makes them explicit. Higher levels are stronger claims.
Locked (arithmetic / artist-confirmed)
- R = (C − P) mod 26 verifies at all 97 positions.
- EAST at 22–25, NORTHEAST at 26–34, BERLIN at 64–69, CLOCK at 70–74, artist-confirmed.
- P = "THE COMPASS ROSE IS HERE X EAST NORTHEAST...", independently recovered from Sanborn's Smithsonian archive (Kobek/Byrne, Sept 2025).
- The R-grid, r-grid, and gate map are arithmetically consistent (R = r + gate at 97/97 positions).
Physically derived (artifact-grounded)
- Helper letter T at each K4 position = the character on the tableau side at the same row/column.
- Boundary alignment: cipher row 25 cols 26–31 "...W?OBKR" ↔ tableau "UVWXZK"; thus ? → V (excluded), OBKR → WXZK (active cap).
- Helper packet structure 4 + 31 + 31 + 31 = 97 (cap + Y row + Z row + footer shelf).
- K2's "X LAYER TWO" (2006 correction) names the second physical layer that K4 uses.
Gate certainty
- The gate is solved. The one-bit gate is a locked, verifiable value at every position (R = r + gate) and is reproducible from position via the published X/Y/Z construction.
Forward-derived (from public clues)
- f-table 26/26: 24 entries via documented chains, 2 entries via unique closure rules.
- Z1 binary mask: fully derivable from KALPHA via kpos mod 8 + 3-rule exception.
- g_Z1 12 shift constants: each traced to one source letter from a 4-class palette (KRYPTOS keyword, ABSCISSA keyword, Morse slab via UMBRA, internal closure letters G and J).
- g_Y three-tier name-pointer: 12 letters via f-pointer rule, 14 via std-pointer rule.
- Lower g_Z2 13/13: 4 by repeated tuples, 2 by +13 opposition, 3 by unique name-pointer closures, 2 by std-pointer, 2 ambiguous within f-collision groups (values locked).
Publication-grade signatures
- KRYPTOSA → IDQLNAME: TOSA → NAME is unique across all 358,800 ordered 4-letter sources in the 26-letter alphabet.
- SUB UMBRA FLOREO: 14-lane shadow register with random-string probability 6.82 × 10⁻⁸.
- KYPT / ROSA balance: g_Y and Z2_delta sums equal to the digit, on both halves of the partition.
- AMID GRAY / I MAP J: internal instruction card produced by the difference operator under the KYPT/ROSA basis switch.
- K / C / S → T / Z / K: terminal-state closure under g_Z2 / standard alphabet.
- ANDER → KYARX: the Alexanderplatz / YAR-RAY witness via (f + g_Y)/STD, the only one of nine tested operations on the ANDER source that yields a YAR-containing output.
Still open
- Archival confirmation from Sanborn's working materials (Smithsonian, embargoed until 2075) of the encryption procedure.
- Sanborn's announced K5 release, which is expected to use a "similar but not identical" system.
- Tighter forward-derivation rules for the remaining ambiguous g_Z2 entries.
Negative results, what was ruled out
The K4 project ruled out a long list of candidate mechanisms before arriving at the current model. These are listed here so future solvers do not retrace dead ends.
Direct keyword keystreams (ruled out)
- K1's PALIMPSEST as a direct K4 keystream, fails at every anchor position.
- K2's ABSCISSA as a direct K4 keystream, fails at every anchor position.
- K3's keyword (none, K3 is a transposition cipher), not applicable.
- Other natural-language candidate keywords from the Kryptos clue corpus, none produces consistent anchors.
Direct text keystreams (ruled out)
- K1, K2, or K3 plaintext used directly as a K4 keystream, fails at every anchor.
- Morse-slab text (entrance slabs) used as a K4 keystream, fails at every anchor.
- Simple repeating keyword of any length 2–20 against the K4 ciphertext, fails the index-of-coincidence test for a single key.
Direct external-clock encodings (ruled out)
- Mengenlehreuhr (Berlin Set Theory Clock) lamp-count projections as a direct gate or table, no consistent mapping to the K4 R-values.
- Weltzeituhr (Alexanderplatz World Clock) 24-sector numeric arithmetic as a direct table, no consistent mapping.
- Note: BERLIN CLOCK is a confirmed plaintext anchor and the geographic referent of the message, not a numerical input to the encryption.
Simple tableau reads (ruled out)
- Direct row / column / diagonal reads of the KRYPTOS tableau as the K4 r-stream, no consistent mapping.
- Right-edge HILL letters as a direct value table, no consistent mapping.
- Simple affine formulas (r = aC + b, r = a × kpos + b, etc.) on cipher letter or position, no consistent fit.
Period analysis (no period found)
- Friedman / Kasiski analysis of the K4 ciphertext, no significant period detected, ruling out short-keyword Vigenère.
- R-grid lane-sum mod 26 spelling a phrase, does not spell the SUB UMBRA FLOREO phrase; the phrase is a structural register, not a lane-sum cipher.
The negative results above were tested before the physical-flip discovery. After that discovery, the project's remaining work narrowed to forward-derivation of the helper-card numeric values, which is documented in the sections above.
Reconciliation table (all 97 positions)
The complete position-by-position data. Every row is independently checkable: verify that R = (C − P) mod 26 and that R = r + gate.
| i | T | L | C | C# | P | P# | Gate | r | R | Check |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 14 | O | 14 | T | 19 | 0 | 21 | 21 | ✓ |
| 2 | 1 | 1 | B | 1 | H | 7 | 1 | 19 | 20 | ✓ |
| 3 | 1 | 2 | K | 10 | E | 4 | 0 | 6 | 6 | ✓ |
| 4 | 1 | 3 | R | 17 | C | 2 | 1 | 14 | 15 | ✓ |
| 5 | 1 | 4 | U | 20 | O | 14 | 0 | 6 | 6 | ✓ |
| 6 | 1 | 5 | O | 14 | M | 12 | 0 | 2 | 2 | ✓ |
| 7 | 1 | 6 | X | 23 | P | 15 | 1 | 7 | 8 | ✓ |
| 8 | 1 | 7 | O | 14 | A | 0 | 1 | 13 | 14 | ✓ |
| 9 | 1 | 8 | G | 6 | S | 18 | 1 | 13 | 14 | ✓ |
| 10 | 1 | 9 | H | 7 | S | 18 | 1 | 14 | 15 | ✓ |
| 11 | 1 | 10 | U | 20 | R | 17 | 1 | 2 | 3 | ✓ |
| 12 | 1 | 11 | L | 11 | O | 14 | 0 | 23 | 23 | ✓ |
| 13 | 1 | 12 | B | 1 | S | 18 | 1 | 8 | 9 | ✓ |
| 14 | 1 | 13 | S | 18 | E | 4 | 1 | 13 | 14 | ✓ |
| 15 | 2 | 14 | O | 14 | I | 8 | 0 | 6 | 6 | ✓ |
| 16 | 2 | 1 | L | 11 | S | 18 | 1 | 18 | 19 | ✓ |
| 17 | 2 | 2 | I | 8 | H | 7 | 1 | 0 | 1 | ✓ |
| 18 | 2 | 3 | F | 5 | E | 4 | 1 | 0 | 1 | ✓ |
| 19 | 2 | 4 | B | 1 | R | 17 | 1 | 9 | 10 | ✓ |
| 20 | 2 | 5 | B | 1 | E | 4 | 0 | 23 | 23 | ✓ |
| 21 | 2 | 6 | W | 22 | X | 23 | 0 | 25 | 25 | ✓ |
| 22 | 2 | 7 | F | 5 | E | 4 | 1 | 0 | 1 | ✓ |
| 23 | 2 | 8 | L | 11 | A | 0 | 1 | 10 | 11 | ✓ |
| 24 | 2 | 9 | R | 17 | S | 18 | 1 | 24 | 25 | ✓ |
| 25 | 2 | 10 | V | 21 | T | 19 | 1 | 1 | 2 | ✓ |
| 26 | 2 | 11 | Q | 16 | N | 13 | 1 | 2 | 3 | ✓ |
| 27 | 2 | 12 | Q | 16 | O | 14 | 0 | 2 | 2 | ✓ |
| 28 | 2 | 13 | P | 15 | R | 17 | 0 | 24 | 24 | ✓ |
| 29 | 3 | 14 | R | 17 | T | 19 | 1 | 23 | 24 | ✓ |
| 30 | 3 | 1 | N | 13 | H | 7 | 1 | 5 | 6 | ✓ |
| 31 | 3 | 2 | G | 6 | E | 4 | 1 | 1 | 2 | ✓ |
| 32 | 3 | 3 | K | 10 | A | 0 | 0 | 10 | 10 | ✓ |
| 33 | 3 | 4 | S | 18 | S | 18 | 0 | 0 | 0 | ✓ |
| 34 | 3 | 5 | S | 18 | T | 19 | 0 | 25 | 25 | ✓ |
| 35 | 3 | 6 | O | 14 | T | 19 | 1 | 20 | 21 | ✓ |
| 36 | 3 | 7 | T | 19 | H | 7 | 1 | 11 | 12 | ✓ |
| 37 | 3 | 8 | W | 22 | I | 8 | 1 | 13 | 14 | ✓ |
| 38 | 3 | 9 | T | 19 | S | 18 | 1 | 0 | 1 | ✓ |
| 39 | 3 | 10 | Q | 16 | I | 8 | 1 | 7 | 8 | ✓ |
| 40 | 3 | 11 | S | 18 | S | 18 | 1 | 25 | 0 | ✓ |
| 41 | 3 | 12 | J | 9 | Y | 24 | 1 | 10 | 11 | ✓ |
| 42 | 3 | 13 | Q | 16 | O | 14 | 1 | 1 | 2 | ✓ |
| 43 | 4 | 14 | S | 18 | U | 20 | 1 | 23 | 24 | ✓ |
| 44 | 4 | 1 | S | 18 | R | 17 | 1 | 0 | 1 | ✓ |
| 45 | 4 | 2 | E | 4 | P | 15 | 1 | 14 | 15 | ✓ |
| 46 | 4 | 3 | K | 10 | O | 14 | 1 | 21 | 22 | ✓ |
| 47 | 4 | 4 | Z | 25 | S | 18 | 1 | 6 | 7 | ✓ |
| 48 | 4 | 5 | Z | 25 | I | 8 | 1 | 16 | 17 | ✓ |
| 49 | 4 | 6 | W | 22 | T | 19 | 1 | 2 | 3 | ✓ |
| 50 | 4 | 7 | A | 0 | I | 8 | 1 | 17 | 18 | ✓ |
| 51 | 4 | 8 | T | 19 | O | 14 | 1 | 4 | 5 | ✓ |
| 52 | 4 | 9 | J | 9 | N | 13 | 1 | 21 | 22 | ✓ |
| 53 | 4 | 10 | K | 10 | X | 23 | 1 | 12 | 13 | ✓ |
| 54 | 4 | 11 | L | 11 | C | 2 | 0 | 9 | 9 | ✓ |
| 55 | 4 | 12 | U | 20 | O | 14 | 1 | 5 | 6 | ✓ |
| 56 | 4 | 13 | D | 3 | M | 12 | 1 | 16 | 17 | ✓ |
| 57 | 5 | 14 | I | 8 | M | 12 | 1 | 21 | 22 | ✓ |
| 58 | 5 | 1 | A | 0 | I | 8 | 1 | 17 | 18 | ✓ |
| 59 | 5 | 2 | W | 22 | S | 18 | 1 | 3 | 4 | ✓ |
| 60 | 5 | 3 | I | 8 | S | 18 | 1 | 15 | 16 | ✓ |
| 61 | 5 | 4 | N | 13 | I | 8 | 0 | 5 | 5 | ✓ |
| 62 | 5 | 5 | F | 5 | O | 14 | 1 | 16 | 17 | ✓ |
| 63 | 5 | 6 | B | 1 | N | 13 | 1 | 13 | 14 | ✓ |
| 64 | 5 | 7 | N | 13 | B | 1 | 0 | 12 | 12 | ✓ |
| 65 | 5 | 8 | Y | 24 | E | 4 | 0 | 20 | 20 | ✓ |
| 66 | 5 | 9 | P | 15 | R | 17 | 0 | 24 | 24 | ✓ |
| 67 | 5 | 10 | V | 21 | L | 11 | 1 | 9 | 10 | ✓ |
| 68 | 5 | 11 | T | 19 | I | 8 | 0 | 11 | 11 | ✓ |
| 69 | 5 | 12 | T | 19 | N | 13 | 0 | 6 | 6 | ✓ |
| 70 | 5 | 13 | M | 12 | C | 2 | 0 | 10 | 10 | ✓ |
| 71 | 6 | 14 | Z | 25 | L | 11 | 1 | 13 | 14 | ✓ |
| 72 | 6 | 1 | F | 5 | O | 14 | 1 | 16 | 17 | ✓ |
| 73 | 6 | 2 | P | 15 | C | 2 | 1 | 12 | 13 | ✓ |
| 74 | 6 | 3 | K | 10 | K | 10 | 0 | 0 | 0 | ✓ |
| 75 | 6 | 4 | W | 22 | W | 22 | 1 | 25 | 0 | ✓ |
| 76 | 6 | 5 | G | 6 | H | 7 | 0 | 25 | 25 | ✓ |
| 77 | 6 | 6 | D | 3 | I | 8 | 0 | 21 | 21 | ✓ |
| 78 | 6 | 7 | K | 10 | C | 2 | 1 | 7 | 8 | ✓ |
| 79 | 6 | 8 | Z | 25 | H | 7 | 1 | 17 | 18 | ✓ |
| 80 | 6 | 9 | X | 23 | I | 8 | 1 | 14 | 15 | ✓ |
| 81 | 6 | 10 | T | 19 | S | 18 | 1 | 0 | 1 | ✓ |
| 82 | 6 | 11 | J | 9 | N | 13 | 1 | 21 | 22 | ✓ |
| 83 | 6 | 12 | C | 2 | O | 14 | 0 | 14 | 14 | ✓ |
| 84 | 6 | 13 | D | 3 | R | 17 | 1 | 11 | 12 | ✓ |
| 85 | 7 | 14 | I | 8 | T | 19 | 1 | 14 | 15 | ✓ |
| 86 | 7 | 1 | G | 6 | H | 7 | 0 | 25 | 25 | ✓ |
| 87 | 7 | 2 | K | 10 | E | 4 | 0 | 6 | 6 | ✓ |
| 88 | 7 | 3 | U | 20 | A | 0 | 1 | 19 | 20 | ✓ |
| 89 | 7 | 4 | H | 7 | S | 18 | 1 | 14 | 15 | ✓ |
| 90 | 7 | 5 | U | 20 | T | 19 | 1 | 0 | 1 | ✓ |
| 91 | 7 | 6 | A | 0 | O | 14 | 1 | 11 | 12 | ✓ |
| 92 | 7 | 7 | U | 20 | F | 5 | 1 | 14 | 15 | ✓ |
| 93 | 7 | 8 | E | 4 | H | 7 | 1 | 22 | 23 | ✓ |
| 94 | 7 | 9 | K | 10 | E | 4 | 0 | 6 | 6 | ✓ |
| 95 | 7 | 10 | C | 2 | R | 17 | 1 | 10 | 11 | ✓ |
| 96 | 7 | 11 | A | 0 | E | 4 | 1 | 21 | 22 | ✓ |
| 97 | 7 | 12 | R | 17 | X | 23 | 1 | 19 | 20 | ✓ |
T = Tier, L = Lane, C# = ciphertext letter value (A=0), P# = plaintext letter value, Gate = the one-bit gate (0 or 1), R = verified shift. All 97 rows pass: R = (C# − P#) mod 26 and R = r + gate.
Download verification data
All verification data is published for independent analysis. The canonical bundle includes everything needed to reproduce and verify the solution from scratch.
Bundle contents (v13):
k4_ciphertext.txt. The 97 ciphertext characters
k4_proposed_plaintext.txt. The 97 proposed plaintext characters
k4_confirmed_anchors.txt. The four artist-confirmed anchors with positions
k4_reconciliation.csv. All 97 rows: i, tier, lane, C, P, gate, r, R
k4_reconciliation_table.json. Same data as JSON (for programmatic use)
k4_reconciliation_table.tsv. Same data as TSV (tab-separated)
r_grid_7x14.txt. The verified R-grid and base r-grid in 7×14 layout (both in one file)
Shift Table.txt. The canonical R-grid with lane_phys indexing notation
gate_map.txt, One-bit gate values (0/1 per cell)
ray_classification.txt, per-cell classification notes aligned to the solved gate map (derived and reproducible from the same 97-position rule set)
f_table.txt, Complete row-identity card (f) for all 26 KRYPTOS letters
helper_cards.txt. The four helper cards (g_X, g_Y, g_Z1, g_Z2) plus Z2_delta, full values for all 26 KRYPTOS letters
z2_footer_basis_handoff.txt. The visible-footer to KALPHA-state handoff, with the 31/31 Z2 check
y_master_template.txt. Rev 16 Y template rule, prediction table, and 0/100,000 null summary
k4_field_card.pdf. Two-sided printable on-site field card
structural_signatures.txt. The six structural signatures (KRYPTOSA→IDQLNAME, SUB UMBRA FLOREO, AMID GRAY / I MAP J, KYPT/ROSA balance, ANDER→KYARX, K/C/S→T/Z/K)
control_card.txt. The 3×3 control card for Z-pass column keys (legacy reference, superseded by the four helper cards above)
verify.py, Python 3 verification script (no dependencies)
verify.xlsx, Excel workbook with formulas for verification (3 sheets)
k1_plaintext.txt, k2_plaintext.txt, k3_plaintext.txt. K1–K3 plaintexts
entrance_slab_morse.txt, Morse code transcriptions from the entrance slabs
README.txt, File manifest, indexing conventions, and verification instructions
SolveKryptos_README.txt, Extended documentation and cipher classification reference
Programmers: the CSV and TSV files import directly into Python (pandas), R, Excel, or any spreadsheet application. The JSON file is a 97-element array of objects with all fields. All files are UTF-8 encoded, no BOM. The Python script runs all four checks across all 97 positions with no external dependencies.
The four helper-card values (g_X, g_Y, g_Z1, g_Z2) are included in helper_cards.txt. A plain-language companion is available at helper_cards_explained.txt. A future bundle revision will add a full coordinate ledger (cipher row × column → tableau letter T) per position.
What would falsify this
A closed mechanism claim should be able to state clearly what would prove it wrong:
Confirmation of any plaintext letter inconsistent with the proposed string at its verified position. Release of original coding records showing R values that contradict the published table. Demonstration that lane = ((i − 2) mod 14) + 1 fails at any position. Identification of a position where R ≠ (C − P) mod 26. Discovery of a tableau-side letter at any (row, column) that does not match the published helper packet (cap WXZK, Y row, Z row, footer shelf).
The mechanism claims are uniform across all 97 positions and do not depend on interpretive choices about the plaintext. They can be verified or falsified directly from the reconciliation table or by physically inspecting the tableau back.