CASCADE SUBSTRATE — GENERATION REPLAY
model + trace semantics
This page replays
recorded engine state; it never simulates. Every lattice site is one 64-bit word —
kind 2 + matter 36 + cursor 21 + χ 4 + claim 1 — and the atomic step is an edge
transaction rewriting the two words across one face. Activity is a wake front: one
frame is one generation (every commit of the same wavefront merged), so a
displayed tick is the substrate's maximal simultaneous step. Regenerate the bundle
with regen.sh in this directory (it wraps dump-cascade from
evaluators/rust-ca-lattice/crate/ and validates the result).
keybinds
space play/pause · ←/→ previous/next generation · wheel zoom
h j k l / w a s d pan · =/- zoom in/out
q/e yaw −15°/+15° · r/f pitch +15°/−15° (clamped ±80°) · 0 reset view
z fit current generation · x fit whole trace
[ / ] previous / next suite scenario
. / , next / previous activation of the pinned cell (no pin: any word change or fire)
n / p next / previous word change at the pinned cell (no pin: same as . / ,)
g follow the activated cell · v toggle canvas labels · click pin/unpin · Esc unpin
Hover a visible cell to preview its trace state. Click to pin;
click the same cell, empty canvas, ×, or Escape to unselect. A pinned coordinate remains
selected while stepping, even if it becomes empty.
STATUS
THIS GENERATION
AGENTS & PORTS
Port 0 is always the principal (▸): producers
emit their value there, consumers consume there, and a fire needs the two principals facing
across one edge. Aux ports carry everything else. On the canvas a white triangle marks the
principal face, a hollow circle marks aux 1, and a diamond marks aux 2. When both
auxiliaries use one face, their markers sit side-by-side over that edge's two lanes.
Producers use four-sided diamonds; consumers use six-sided faceted diamonds.
REWRITE RULES
consumer principal ↔ principal producer ⇒ fresh agents (the dying pair's
external wires resplice per the ROM's wiring permutation). Gold =
firing in the frame you are on; ×n = firings in this trace (dimmed = never fires here);
click a rule to jump to its next firing.
LEGEND
bold white stub + white triangle = principal port; hollow circle = aux 1; diamond =
aux 2; tag name sits beside the body (v toggles all canvas text)
route color keys on its index inside the cell (route 1 /
2 / 3) — routes run
straight, or bend once around the cell corner between their two faces; overlapping
strands nest on parallel offset lanes; numbered labels match the inspector's
s1/s2/s3; gold halo = hot (demanded) lane
red glow = χ pressure field
colored square outline = rewrite in progress — gold seed (docked pair), green
builder cursor, orange seed+cursor sharing a cell
dashed cyan ring + dimmed body = nursery agent: placed by the cursor, inert until
the seed resolves
white rings + cross = this generation's wavefront (every cell that committed);
dashed white rings = the next generation's front
gold event ring = semantic fire (rule shown); far cells dim with camera depth
(q/e yaw, r/f pitch)
WHAT THIS SHOWS (AND DOES NOT)
Each scenario records one run generation by generation: frame 0 is a
full keyframe, later frames are literal one-cell deltas plus the front's commit and fire
events. Docked principal pairs become a two-cell seed; a builder cursor grows the rule's
blocklet as nursery matter, resolves the fire while every fresh agent is still seated,
then finalizes. At quiescence the lattice is projected onto the shadow interaction net
and checked port-for-port. A parked trace is incomplete, never wrong: the run wedged
with its seed still visible. The viewer only replays.