February 8, 2026 / bkusuma

Designing a Puzzle State Machine Without Browser Bloat

The directory reveals and witness-token gate use native browser state instead of runtime puzzle code.

The archive uses native anchors, details, HTML validation, and CSS selectors for its first layer of interactivity. That choice is partly aesthetic and partly practical.

Why avoid runtime logic here

Puzzle interfaces often feel theatrical because every reveal depends on client code. This build goes in the other direction. The page should still feel convincing when viewed as static HTML.

What the browser already gives you

  1. :target for directory reveals.
  2. details and summary for collapsible logs.
  3. pattern and :valid for the witness token.
  4. @supports for legacy fallback messaging.

The result is not anti-JavaScript as ideology. It is a better fit for this specific fiction: a read-only system image that should not feel application-heavy.