﻿# Fresh-download validation — 16 September 2026 UTC

The public exhibit ZIP was downloaded into a fresh directory and served from its
extracted files. All 95 automated tests passed, and regeneration reproduced all
60 independent comparison vectors byte for byte. The browser checks below used
that extracted copy rather than the development checkout.

- The on-page verifier matched all 82 body letters, the header in both directions,
  and the reference example.
- The opening animation advanced through computed ciphertext/plaintext pairs.
- The guided keypress completed all 13 electrical stages: I produced B, the windows
  advanced from RWD to RWE, and the rendered model showed the B lamp.
- The training message MELDUNGANGEKOMMEN returned exactly after 17 transmitted
  letters. The reply ANTWORTERHALTEN returned exactly after 15 letters, using LAM
  and the GTA / ENG header.
- The browser reported no console errors in these checked flows.
- On the public site, the complete-audit download button assembled all seven
  parts, verified their checksums, and reached its successful save-ready state.
  Separately downloaded parts were joined, unzipped and their included checkers
  executed in a fresh directory. The browser save-ready state does not itself
  establish that a visitor saved a file to disk.

The exhibit ZIP intentionally omits the separately hosted research archives and
itself, as listed in `dist/source-bundle.json`. Those links require the separate
downloads when running the website locally. These checks do not certify every
browser, device, accessibility interaction or historical claim. Entries below
retain the scope and limitations of their earlier checks.

## Typography update — 16 September 2026 UTC

The interface now uses a minimum 16px equivalent for small text, 18px or larger
controls and 20px body copy at the default browser font setting. Small authored
sizes were replaced with rem units in the page, mobile and fullscreen styles.
The large display headings and model geometry are unchanged. Captions, navigation,
form labels, component explanations, data labels and download details were included.

A rendered text audit found no text-bearing DOM elements below 16px in the checked
normal and fullscreen views. The page had no horizontal overflow in the narrow
379px document layout or the wider desktop layout. The original browser viewport
was restored. The opening and fullscreen lesson were visually inspected, as were
source links and download-area text. Controls wrap instead of shrinking on narrow
screens. The browser log returned no warnings or errors during this pass. This is
an interface-font check, not a fixed pixel-size guarantee for letters on a zoomable
3D model, and the earlier full interaction/accessibility checks were not all rerun.

# Current browser check record — 16 September 2026 UTC

Browser access is working. This entry covers the local candidate for the five-part
exhibit update. Earlier entries below are dated history, including times when
administrator-policy verification prevented browser access.

## Current checks performed

- The opening range reaches 82 / 82 and shows the literal German, separately labeled
  English translation and original outgoing image together.
- The guided first press shows I with RWD, then RWE before electrical transmission.
  Manual advancement visits all 13 circuit stages and ends at B. Automatic playback
  reaches the same final lamp. Pause and restart were also exercised.
- The expanded view uses one canvas. Both the Back to the story button and Escape
  close it. Native fullscreen was entered during these checks.
- Selecting Lid focuses its physical nameplates; the inspected close-up has no rotor
  annotation over the lettering. The final guide phase focuses the B lamp and the
  mounted LAMPBOARD inscription. Components use automatic focus on selection.
- The explosion slider at 100% visibly separates the assemblies. Camera dragging
  changes the rendered view, and Reassemble restores the assembly. These are visual
  observations, not just changes to the slider text.
- At source position 43, selecting R changes the plaintext to T and identifies the
  preferred L→E as required by the crib. At 27, M gives F instead of preferred N→B.
  Aligned context and written-row/character labels update together. The row outline
  was visually checked as context; it is not a per-glyph certainty claim.
- The exact page verifier reports matching body and header in both directions.
- A desktop preview and narrow reading layout were checked. At the narrow check the
  document width and scroll width were both 379 CSS pixels; the same canvas moved
  into the machine chapter. No horizontal document overflow was observed.
- Temporary viewport overrides were reset. The available browser log returned no
  warnings or errors at the end of this interaction pass.

## Automated and packaged checks

The 95 automated checks include independent engine vectors, playback, the new guide
phase boundaries, source alternatives, radio roundtrips, download failure/integrity
handling, local links and preserved evidence hashes. The newly packaged small
checker was extracted into a fresh temporary directory and returned PASS. A separate
fresh rebuild of the original winning search batch reproduced all 49 records byte
for byte. Those replay receipts are research review artifacts, not browser tests.

## Limits of this pass

Keyboard focus restoration after native fullscreen exit was implemented but was not
confirmed by the browser's reported active element. Do not count it as passed. This
pass did not repeat every historical accessibility or reduced-motion check, test
every component from every angle, or exercise the 134.8 MB production download to
completion. The small checker and archive integrity checks are separate from a
production browser download. No new independent historical-source audit is claimed.

## Earlier browser and implementation history

> **15 September completion update:** 89 automated tests pass, including four checks for exact archive assembly and rejection of damaged parts, damaged whole archives and HTTP failures. The actual complete archive is also checked by the same assembly function against local files. Browser interaction and download testing were blocked at that stage because the browser tool cannot verify the administrator policy; these programmatic checks are not a browser playtest.

> **Fullscreen update: visual verification pending.** The new fullscreen view and staged playback pass 85 automated tests and 35 camera projection checks. Browser access was blocked by an unavailable admin-policy verification. The browser results below describe the earlier exhibit. See `tests/FULLSCREEN-QA.md` in the source bundle for follow-up checks.

# MVUEH documentary browser check record

Checked 15 September 2026 UTC (14 September local time) in the Codex in-app browser against the local release candidate. The earlier administrator-policy failure was resolved before these checks. This record covers the website and simulator interface, not a new independent historical-source audit.

## Passed in the browser

- Opening: all 82 computed letters equal the literal German fixture. The English translation appears distinctly after completion. Pause, replay, and keyboard End scrubbing worked.
- Radio exercise: MELDUNG ANGEKOMMEN at RWD generated GTA/KCI and recovered MELDUNGANGEKOMMEN. Reply ANT WORT ERHALTEN at LAM generated GTA/ENG and recovered ANTWORTERHALTEN. A wrong receiver ring produced a different start and garbled output with a visible MISMATCH label.
- Historical replay: KCI at GTA gave RWD. The body double step was RYV → RZW → SAX. Free AAAAA at the recovered key gave ESKJD. Changing HMF to HMG produced a different full output; restore returned the exact message.
- Invalid settings: selecting II for both left and middle rotors displayed an error and left the operating middle rotor at V.
- Exact verifier: full body, header, and reference checks passed. The status stated that the body and original header match in both directions, without editorial repairs.
- Source experiment: position 27, M instead of N, changed the recovered-key plaintext letter from B to F.
- Crib experiment: offset 0 was rejected for one self-encryption conflict; offset 39 passed this necessary test and was labeled as the winning full-search alignment.
- Three.js: assembled and exploded models rendered; the 100% explosion separated the parts. Component selection, rotor focus, ring inspection through Z, and reassembly were exercised. The same single canvas moved between the desktop rail and mobile machine chapter.
- WebMCP: the supported set_enigma_replay tool with body/82 returned the full plaintext and final windows SAH.
- Reduced motion: the opening showed the complete result without the letter animation.
- WebGL fallback: deliberate context loss showed the fallback notice. The on-page cryptographic verifier still passed. Reload restored the renderer.

## Reading and responsive checks

- Layouts checked at 320, 390, 640, and 1440 CSS pixels. Desktop and mobile screenshots were inspected. Browser device emulation was used; these were not physical-phone tests.
- At 320px, free typing and settings were opened. After corrections, no visible main-content container overflowed horizontally. Text inputs may scroll internally to accommodate a long plug-pair list, as expected.
- At 640px, computed font sizes and line heights were temporarily doubled for a 200% text-enlargement test. An initial fixed-width step-number column was corrected. The final visible-container overflow check was empty. Temporary styles were removed by reloading.
- A rendered foreground/background audit checked 542 text-bearing nodes in the tested state. No failures remained against 4.5:1 normal-text / 3:1 qualifying-large-text thresholds. The audit composites ancestor backgrounds. The reading surfaces are opaque; highlighted states have textual or structural indicators.
- Corrections included the dark send-button hover state, active ciphertext-letter color, muted source labels, disclosure wrapping, narrow keyboard layout, and range-input margins.
- Browser device and motion emulation, cache overrides, temporary text styles, and the deliberately lost WebGL context were restored after testing.

This is a bounded review, not full WCAG certification, a screen-reader audit, or coverage of every browser and interaction combination. Detailed repeatable steps are included in tests/READABILITY-QA.md in the exhibit source bundle.

## Automated and source checks

- 80 automated checks passed: 74 existing engine/session/independent-comparison cases and six new story-experiment cases.
- The independent fixture covers 12,000 output letters and 12,000 window states across all 60 rotor orders. It does not exhaust all possible keys.
- 120 HTML IDs were unique; all local asset/download and anchor references resolved before adding this record link.
- The original research ZIP remains unchanged: SHA-256 c823a9f888d06ed214cd729a4e56149a951d19f9e5c0c09918eaed8991b5b166.
- Browser runtime exception monitoring reported no exceptions in the retained final observation window. Earlier buffered events had rolled off; no complete-session console archive is claimed.

The published release is the packaged static output of the exact source revision submitted through Sites. Native Sites deployment status is the release confirmation.

## Keyboard readability follow-up

The keyboard and lampboard now use tightly framed square letter textures instead of tiny letters compressed from wide sprites. Key faces are unlit high-contrast surfaces with metal rims; labels move with the keycaps. A dedicated Keyboard close-up button centers and fits the keyboard to the canvas. Desktop overview and close-up lettering were inspected. At a 390px emulated CSS viewport, the canvas was 336px wide and the document stayed within the viewport. A direct click on the 3D Q face after A changed the input to AQ and output to EY; the normal A button had produced E. All 80 existing automated checks still passed. Device emulation was cleared after testing.
