﻿# Current interactive-exhibit guide

Updated 16 September 2026 UTC. [Current browser check record](browser-qa.md).

Interface text now has a 16px-equivalent minimum, with larger controls and 20px
body copy. Sizes use relative units to respect the browser font setting; mobile
and fullscreen views retain the same readable minimum.

Use **Follow one keypress** to open the guided first-letter demonstration. It loads
the recovered MVUEH key and first body letter. Advance with **Next step**, or use
**Play the demonstration** and pause when needed. The windows remain RWD for the
initial key movement, change to RWE before the circuit closes, and the B lamp lights
only at the final circuit stage. **Continue exploring freely** starts a fresh typing
session with the recovered key. **Back to the story** or Escape returns to the page.

Select a component to focus it and read its purpose. Unrelated floating labels are
hidden during inspection, while physical inscriptions stay on their surfaces.
**Reset view** restores the overview. The explosion slider directly separates the
assemblies; **Reassemble** returns them and resets ring inspection. The circuit
curves are illustrative routes between exact simulator stages, not a reconstruction
of the machine's physical wire routing.

The source inspector shows the original received transcription, selected reading
and literal plaintext in aligned context. Its row outline locates a written row;
it does not certify a faint glyph. The fourteen supplied crib letters are marked
separately. See the [later source update](source-update.md) for the newly public
incoming facsimile; original research inputs remain unchanged.

Choose downloads by task in the reproduction section. The tiny key checker needs
Python 3.10+ and no packages. The original recovery search needs Python and a C++17
compiler. The exhibit source needs only a local HTTP server and a WebGL browser;
Node 22+ runs its 95 automated checks.

## Earlier technical guide and validation history

The material below records prior checks and implementation details. Historical
browser-policy failures no longer describe current access. The current browser
record above states which interactions have been rechecked.

# Operate the MVUEH Enigma

[Open the interactive 3D exhibit](https://mvueh-enigma-solved.carterl.chatgpt.site/#machine).

The exhibit adds a working educational Enigma I to the MVUEH research report. It replays the recovered message; it is not a new cryptanalytic search or additional evidence of historical provenance.

## Explore the new documentary

At the top, **Reveal the message** calculates each literal letter with the recovered key. Pause, replay, or scrub with the keyboard. **Follow one letter** opens the circuit stages. English appears afterward as a clearly labeled translation; it never replaces literal machine output.

**Send a secret** is an invented training exchange using the real simulator. The sender encrypts a fresh message start at GTA; the receiver decodes the indicator before resetting for the body. Matching keys recover the exact text. A wrong receiver ring corrupts both the recovered start and the message. Reply reverses the stations and suggests a new demonstration start, LAM. Morse is displayed as a transmission encoding, not another encryption layer. No message is transmitted over a real radio or sent to a server.

**Explode the assembly** separates the keyboard, plugboard, lampboard, rotors, and reflector. Select a component, focus it, and open its search explanation. Rotor cores expose their actual 26-contact wiring permutations; the curve geometry is illustrative. The ring-inspection slider changes the displayed relationship between the alphabet ring and wiring core for inspection only. It does not modify the active cryptographic key; applying settings in the operating panel does. The next cryptographic operation restores the inspected ring to the current key. Reassemble restores the physical presentation.

One model accompanies the reading column on desktop. On narrow screens the same canvas moves into the machine chapter. Every component can also be selected through a normal keyboard-accessible button.

The investigation chapter lets readers try pre-recorded source alternatives and slide the ROSENOWROSENOW crib. A no-self-encryption test rejects some alignments; passing it is not a recovered key. The investigation took place over two days, on 14 and 15 September 2026, covering source comparison, machine reconstruction, search experiments, key recovery and independent verification. The complete declared search accounts for 43,016 batches, 97,337 distinct candidate body keys and 14,829,646 physical keys independently checked against the header. All batches and candidate families are accounted for within the documented machine, source-reading and crib assumptions. The two days describe the span of the investigation; parallel search timings do not provide a complete total of human or model reasoning hours. Detailed experiment timings and search boundaries remain in [the complete search and audit report](completion-report.md).

## Watch in fullscreen

Choose **Full screen** beside the working machine. The model fills the main viewing area and the replay controls stay beside it. Choose **Playback pace → Slow · follow the current** to follow the electrical substitutions, then open **Inspect & take apart** for component and explosion controls. **Back to the story** or Escape returns to the page, keeps the current session, and pauses playback.

The fullscreen update passes 85 automated checks and 35 geometric camera checks. Its visual browser verification is pending because the browser access policy could not be verified; the earlier browser checks below apply to the preceding exhibit.

## Try the historical replay

1. Start in **MVUEH replay**. The windows read **GTA**. Press **Play the header**, or **Next letter** three times, to decrypt **KCI** into **RWD**.
2. Choose **Load the body**. This resets the windows to **RWD** before the first body keypress. The five-letter identifier MVUEH is excluded.
3. Play, pause, advance one letter, or use the position slider to inspect any prefix of the 82-letter message.
4. Choose **Trace next stage**, or select any circuit stage, to inspect the substitutions. The forward path is gold and the return path is blue. The displayed internal contacts include the position-minus-ring offset.
5. Choose **See double step**, then advance twice: **RYV → RZW → SAX**. These are body presses 71 and 72. The middle rotor moves on two consecutive presses; the second also moves the left rotor.

Drag the model to orbit, pinch to zoom, lift or replace the cover, and select components for explanations. **Keyboard close-up** gives a centered, near-overhead view sized to the available canvas. Keyboard and lampboard letters use tightly framed, high-contrast face textures; keycaps have metal rims and their labels move with the pressed keys. **Lid → Focus selected part** reassembles the model and frames the lid inscription. Rotor names, window letters, ring letters, plugboard sockets, the lampboard label, reflector B and the entry wheel use larger, tightly fitted, high-contrast nameplates. The lid, socket and lampboard inscriptions lie on their surfaces. Remaining educational annotations face the camera and are quieted when an unrelated component is selected. Component close-ups refit when the viewing area changes size. **Reset view** returns to the full machine. The same component explanations and key controls are available outside the 3D canvas.

## Explore freely

The model uses the same simulation as the on-page verification button. Use the on-screen or 3D keyboard, or type up to 200 letters. Whitespace is ignored; punctuation, digits, and accented letters require transcription to A–Z. Reset the wheels to the same start before typing the output to decrypt it.

Settings allow three distinct rotors from I–V, three ring letters, three starting window letters, and up to ten disjoint plug pairs. Reflector B and the identity entry wheel remain fixed. Settings changes begin a fresh free experiment. The historical replay always restores its documented key.

**Move one ring by one letter** changes HMF to HMG at the same RWD start. Its complete output is computed from the original ciphertext. **Restore recovered key** restores the exact 82-letter plaintext.

## Exact historical configuration

- Enigma I; standard entry wheel; reflector B.
- Rotors left to right: II, V, III.
- Rings: HMF (08, 13, 06 with A=01).
- Body start before first press: RWD.
- Plugs: AC BE DG FH KN MO PR SU TV XZ.
- Header: at GTA, KCI decrypts to RWD.

Ciphertext, excluding MVUEH:

```text
ICRVSORMCCWQTATYEVFXDBZGGSNXWLPSYWZYTCBSWULRTBZCVGODVJUSLSOOMJQJZSXSEBZPEYMDNXJYTC
```

Literal plaintext:

```text
BTTEUMANGABEDESMARSQWEGESXBEFINDEMIQINXROSENOWROSENOWXSOFORTFUNKANTWORTXWASCHBBSCH
```

The simulator does not restore the missing I in BTTE or change WASCHBBSCH to the tentative surname Waschbusch. Q abbreviates CH; X separates phrases. Blue highlighting identifies the imposed crib ROSENOWROSENOW at positions 40–53. This phrase itself was not a blind prediction.

Gold-underlined ciphertext letters identify the twelve pre-recorded source-uncertainty positions: 2, 3, 6, 11, 20, 27, 37, 43, 44, 47, 49, 80. Tooltips give the allowed alternatives. The preferred reconstruction remains within those alternatives. It is not a claim that the faint source strokes are all unambiguous.

## Model accuracy and limits

The electrical substitutions and mechanical stepping are computed. Stepping occurs before the circuit is traversed. Notches are tied to the displayed alphabet ring; changing the ring does not change its displayed turnover letter. Each rotor advances at most once on one press.

The 3D model is a simplified cutaway. Dimensions, the raised cover, floating labels, exposed contacts, and signal curves are explanatory. It is not a dimensionally faithful museum replica, and the visible signal curves are not the concealed physical wire routes. The return trip uses the inverse wiring of each rotor. The lampboard shows the output; the text tape is an exhibit aid, not a built-in Enigma printer.

The local simulator sends no typed text or settings to a server. Three.js 0.180.0 is vendored with its MIT license. The surrounding report retains its external font stylesheet.

## Validation, 15 September 2026 UTC

**Passed:** 80 automated tests: 74 engine/session and independent comparison cases plus six new story-experiment cases. Engine coverage includes the complete body and recorded header in both directions; the AAAAA → BDZGO standard vector; Cornell's OCAML → YNOXQ vector and a nonzero-ring derivative; Hamer's double-stepping sequence; simultaneous-notch behavior; internal rotor-contact traces; and replay reset, seek, free typing, and invalid-input behavior.

The comparison set covers all 60 ordered choices of three rotors from I–V. For each order, a previously independent Python verifier generated 200 output letters and window states using seeded ring/start/plug settings. All **12,000 letters and 12,000 window states** agree with the exhibit engine. The seed is 19410710. This validates those cases, not every possible key.

**Browser checked:** the complete reveal, pause and keyboard scrub; sender/receiver and reply; wrong receiver ring; historical header and body; free typing; double step; ring experiment; exact verifier; source alternatives; crib exclusion; exploded assembly; rotor focus and ring inspection; and the live WebMCP replay tool. Screenshots were inspected at desktop and mobile emulated sizes. The page reflowed at 320/390/640/1440 CSS-pixel widths; settings and the free keyboard were checked at 320px. A 200% text-enlargement check at 640px found no overflowing visible containers after corrections. A rendered audit of 542 text-bearing nodes found no AA text-contrast failures in that state. Reduced-motion revelation completed without animation. Deliberate WebGL context loss left the independent on-page verifier usable.

These are bounded browser checks, not a complete accessibility certification, screen-reader audit, or physical-device test. See [the browser test record](browser-qa.md).

The reproduction ZIP for the original cryptanalytic recovery remains unchanged. Exhibit code and its frozen comparison vectors are available separately in [the exhibit source bundle](machine-source.zip).

## Sources

- [Crypto Museum: Enigma wiring, rings, and turnover](https://www.cryptomuseum.com/crypto/enigma/wiring.htm).
- [David Hamer: Enigma double stepping](https://www.cryptomuseum.com/people/hamer/files/double_stepping.pdf).
- [Cornell CS3110: published Enigma example](https://www.cs.cornell.edu/courses/cs3110/2015fa/a1/a1.html).
- [CryptoCellar: July 1941 German Army messages](https://cryptocellar.org/bgac/g-army-july-1941.html).
- [Original outgoing facsimile, 10 July 1941 NF 88/61](https://cryptocellar.org/bgac/spruch/10071941-088-061-out-nf.pdf).
- [Three.js source at the pinned r180 release](https://github.com/mrdoob/three.js/tree/r180).

## Model lettering update, 16 September 2026 UTC

The shared label renderer now measures the actual text instead of using a fixed wide canvas, preserves letter proportions, and uses unlit ivory lettering on a dark plate. Its chosen text/background colors have a calculated 17.9:1 contrast ratio; this is a color calculation, not a screen-render audit. Single-letter textures keep stable dimensions during playback, and changing a rotor name releases the old GPU storage before resizing its texture.

All 92 automated tests and 63 camera-framing calculations pass. The latter cover overview/explosion bounds and the lid, plugboard, right-rotor and reflector close-ups at aspect ratios 0.4–4. Live browser inspection was blocked at that earlier stage. Browser access is now working; the dated browser record below distinguishes new checks from historical ones.
