Verify It Yourself
This page does not ask for trust. It provides the data, the tables, and the instructions for you to independently verify every position of the proposed K4 solution.
How to verify: step by step
This tutorial walks you through an independent verification of the proposed K4 solution. No specialized tools are needed — a pencil and the alphabet are sufficient.
Step 1 — Get the ciphertext
The K4 ciphertext is 97 characters, as inscribed on the sculpture:
OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR
Step 2 — Get the proposed plaintext
The proposed 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 (k4_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, binary 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
Five 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
Compute R[i] = (C[i] − P[i]) mod 26 at all 97 positions. Every result must match the published R value. No position should require special handling, exceptions, or manual overrides.
3. Grid coordinate consistency
Verify that lane = ((i − 2) mod 14) + 1 and tier = ⌈i ÷ 14⌉ hold at all 97 positions. Verify that the binary gate for each cell matches the published gate map, and that gate = 1 where the packet-phase derivation yields 1.
4. 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.
5. 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 the formula r = (f(C) + g(T)) mod 26, where f and g are derived from on-site clues. See the Field Guide for the complete derivation.
Binary gate map
Each cell carries a binary gate value: 1 or 0, fully derivable from position — see The binary gate.
| 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 |
69 cells have gate = 1. 28 have gate = 0.
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 = binary 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 (v7):
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 (final shift values) in 7×14 layout
r_grid_7x14.txt — The base r-grid in 7×14 layout
Shift Table.txt — The canonical R-grid with lane_phys indexing notation
gate_map.txt — Binary gate values (0/1 per cell)
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
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.
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. Or identification of a position where R ≠ (C − P) mod 26.
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.