Exact Replay
A run of a sealed world is a film that replays byte-identically; a divergence on replay is the world's, not the player's.
- Standing
- STATED CHECKABLE RUNNABLE EXECUTED STAGED PUBLISHED REPRODUCED
- Last checked
- never run
- Source
- none — this record cites no check
- Limit
- No receipt stating a fidelity percentage was ever located (v0.2 review, finding 7), which is why this page carries a '?' where that number would go. TRVM's film replay is not verified by this build.
- Next rung
in_tree— locate or produce the receipt. The claim is older than the search for its evidence, which is the defect this field exists to expose.
Why this page says STATED — the derivation, not the word
- ✗ a witness is named
- ✗ its evidence kind is one the ledger already uses
- ✗ the witness path resolves in this tree
- ✗ its rung is in_tree or above
- ✗ a run is recorded for these exact bytes
- ✓ no claim is cited that could be REFUTED
- ✗ a counterexample is shipped (required once WITNESSED)
- ✗ not staged on this site, so it cannot run from the page
WITNESSED requires every line above to hold. The label is computed from them by build.mjs and cannot be typed into the registry — the build refuses a record that carries it.
Intent
When identity is a seal and the observable is complete, a run is reproducible: the film of one run replays to the same bytes on another player. If it does not, the world hid state or the seal lied, and the replay has found a bug in the world, not in the player.
Technical register
TRVM film replay. Law 4: every reported reduction cost must name the reduction strategy under which it was measured. Law 6 is the completeness condition replay depends on. No receipt in the tree states a fidelity percentage for TRVM film replay; the v0.2 review of this book's plan looked for one and did not find it, so this page carries a '?' where a number would be. Not to be confused with Cross-Machine Skill Replay, which is about OS-011 traces.
Problem
Reproducibility is claimed and rarely measured. 'It replayed' usually means a log was read back, not that a second player produced the same bytes from the same sealed world. When two players disagree, the player is blamed, because the world was never sealed to begin with.
Solution
Seal the world. Record the film with its reduction strategy. Replay on a second player. Compare bytes. Publish the fidelity with the method, or publish '?'.
Real-world analogy
A player piano roll. Two pianos, one roll, the same tune — or the roll is damaged, and it was never the piano.
Structure — on the surface
An illustration on a compute surface: loci above, carriers below. Press Play or Step; the takeaways collect as you go. Nothing here is evidence — the witness section is.
The chapter in WRL — and the chain so far
Chapter 23 of 32 — the fragment _patterns/wrl/chain/exact-replay.wrl, sealed alone by wrl.js
; EXACT REPLAY — its OWN clock domain into a relay chain and a Door; the runner reduces this world TWICE and
; the build refuses unless both runs produce identical Film hashes. er_a is Part V's router in the chain.
[pulser:er_clock](every 2){sig_out}
[relay:er_a]{sig_in, sig_out}
[relay:er_b]{sig_in, sig_out}
[door:er_player]{sig_in}
[er_clock] --sig--> [er_a]
[er_a] --sig--> [er_b]
[er_b] --sig--> [er_player]module + bench seal to → sem-bccd2ab7d2bba016be4313f2d890cc2bf6299327626dce84454a14cbf7c3bb36
Run inputs — a ScenarioV1, the forge's own document, bound to this world's id and never part of it (D3) · reduced twice, hashes compared · ScenarioDigest scen-d1c7ffa2c480644c1d6… (the run inputs' own identity, computed by the forge)
No claims: the world runs on its clocks alone for 8 epochs.
Reduced by the native reducer (ic32); the reference reducer reproduces every epoch's film hash (0.007s).
Reduced twice from a fresh state: every epoch's film hash identical — exact replay, witnessed on one host.
The Film, epoch by epoch (8)
epoch 1 · sha256:9bc2fb1e3393d3f92e469305feb057610e9d758d4d346f56b02db4a66e513934
FILM v0.7 t=1 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=2 door:er_player:open=0,next_open=0 relay:er_a:cur_out=0,next_out=0 relay:er_b:cur_out=0,next_out=0 wire:w__er_a__er_b:cur=0,nxt=0 wire:w__er_b__er_player:cur=0,nxt=0 wire:w__er_clock__er_a:cur=0,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 2 · sha256:a1900b684b75c9a505e12983f146e3405370754f04f669422a5d5f50acc04c0d
FILM v0.7 t=2 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=1 door:er_player:open=0,next_open=0 relay:er_a:cur_out=0,next_out=1 relay:er_b:cur_out=0,next_out=0 wire:w__er_a__er_b:cur=0,nxt=0 wire:w__er_b__er_player:cur=0,nxt=0 wire:w__er_clock__er_a:cur=1,nxt=0 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 3 · sha256:f22f752034b4dab181a407a9bcff7e6dfec3dd6eab195f8619ca0fe6695e68df
FILM v0.7 t=3 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=2 door:er_player:open=0,next_open=0 relay:er_a:cur_out=1,next_out=0 relay:er_b:cur_out=0,next_out=0 wire:w__er_a__er_b:cur=0,nxt=1 wire:w__er_b__er_player:cur=0,nxt=0 wire:w__er_clock__er_a:cur=0,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 4 · sha256:edc109cd1ad8a0bc3668655f7e27e68c1d7ed92f9f3404d75624f47b16ebed3a
FILM v0.7 t=4 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=1 door:er_player:open=0,next_open=0 relay:er_a:cur_out=0,next_out=1 relay:er_b:cur_out=0,next_out=1 wire:w__er_a__er_b:cur=1,nxt=0 wire:w__er_b__er_player:cur=0,nxt=0 wire:w__er_clock__er_a:cur=1,nxt=0 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 5 · sha256:91ce47fd3177360e53a07021ed9264bb8fd1368583a1d2edd00efae097e3e86b
FILM v0.7 t=5 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=2 door:er_player:open=0,next_open=0 relay:er_a:cur_out=1,next_out=0 relay:er_b:cur_out=1,next_out=0 wire:w__er_a__er_b:cur=0,nxt=1 wire:w__er_b__er_player:cur=0,nxt=1 wire:w__er_clock__er_a:cur=0,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 6 · sha256:7cf87244cc75545564b08b65c0c166751def0cc75bbf92d89f1a6206ec3e96fe
FILM v0.7 t=6 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=1 door:er_player:open=0,next_open=1 relay:er_a:cur_out=0,next_out=1 relay:er_b:cur_out=0,next_out=1 wire:w__er_a__er_b:cur=1,nxt=0 wire:w__er_b__er_player:cur=1,nxt=0 wire:w__er_clock__er_a:cur=1,nxt=0 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 7 · sha256:e5602e7da4df2f0d8b2c03a1a2094a7645897e945a1f2f4049eee0d7bd28eae0
FILM v0.7 t=7 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=2 door:er_player:open=1,next_open=0 relay:er_a:cur_out=1,next_out=0 relay:er_b:cur_out=1,next_out=0 wire:w__er_a__er_b:cur=0,nxt=1 wire:w__er_b__er_player:cur=0,nxt=1 wire:w__er_clock__er_a:cur=0,nxt=1 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
epoch 8 · sha256:2e1faafa9e22aa15c157674452aedb92bbc0df0c393a26a314e57641cf4d0827
FILM v0.7 t=8 pulser:er_clock:mode=periodic,p=2,phase=0,armed=0,done=0,nf=1 door:er_player:open=0,next_open=1 relay:er_a:cur_out=0,next_out=1 relay:er_b:cur_out=0,next_out=1 wire:w__er_a__er_b:cur=1,nxt=0 wire:w__er_b__er_player:cur=1,nxt=0 wire:w__er_clock__er_a:cur=1,nxt=0 admit:policy=admit_candidate_min_firstreceipt_v1,fact_capacity_fault=0,receipt_capacity_fault=0,capacity_fault=0
Composes with the 22 chapters before it
The chain through this chapter — every earlier fragment, this one, and the links — seals to sem-57d2e3599c2eac7a3db6ad8deb606dbc712c04a9cdacce4bc8071c69c4208215: 82 objects, 72 edges (was 78 / 69; every earlier object and edge is still present — checked, or the build refuses).
How to read this board
Five kinds of object, two kinds of wire, and one band per Part of the book. Signal flows left to right: it starts at a clock, travels through relays, and ends at a door — or turns a spinner, which drives an orb. Nothing below is the book's own vocabulary; each line is quoted from where the definition lives.
| shape | is | and so |
|---|---|---|
| a clock; the only source of signal | Every signal on the board starts at one of these. Nothing else can make one. | |
| a pass-through, so signal can travel | One arrives, any number leave — a relay that fans out is the board's router. | |
| a sink; signal arrives and stops | It latches what reached it and passes nothing on. A door is where a path ends. | |
| rotation: takes signal, drives a pose | The only object on the board that holds a value a claim can rewrite — and only if its config says configurable. | |
| the thing that gets moved | It is driven, never driving: an orb is what you watch to see whether anything happened. | |
| not a WRL role — the book's own drawing of the receipts in the epoch's Film | It counts what the run admitted, and turns red on a Rejected outcome. | |
| SignalWire | signal: a sig_out to a sig_in | Legal from a Pulser or Relay, into a Relay, Door or Spinner. This is how the board moves. |
| SocketControl | control: a socket to a pose | Legal only from a Spinner into an Orb. At most one may land on any input port — fan-in is a typed refusal. |
Hover any object for what it is, which chapter put it there, and every field of its line in that epoch's Film — split into what it is doing now and how it was built. Click to pin the readout, then click a wired name to follow the signal. The field definitions come from TRVM/forge/film.py (the emitter), TRVM/forge/forge_state.py (nf, derived from the decoded counter and never from t), TRVM/forge/lower_e2a.py (the commit/react law), TRVM/FORGE_SEMANTIC_IR_v1_MEASURE.md §1.3; the shapes from WRL/learn.html and WRL/docs/spec/README.md. The build refuses if a Film emits a field this key does not explain.
The board so far: one band per Part, signal flowing left to right; relays that fan out are routers, doors are switches, pulsers are clock domains. Hover an object — or click the board and walk it with the arrow keys — for its role, its Part and what it is wired to. This board is the chain’s sealed shape; no Film drives it, so it has no state to report, and the whole board in the conclusion is where every object’s state is read epoch by epoch. Wheel zooms · drag pans · double-click fits.
Syntax — quoted from the tree at build time
Law 4 (TRVM/LAWS.md) TRVM/LAWS.md:54
### Law 4 — CANONICAL (ratified 2026-07-22) - **Statement:** *Every reported reduction cost must name the reduction strategy under which it was measured.* Eager/`first`, lazy-reference, or any later
Forces
Exact replay needs everything Shared Observable demands and a cost model that names its strategy, since a replay that takes a different reduction path is a different run. The number that would witness it is a receipt this tree does not yet hold.
Applicability
Verification of transitions, debugging distributed runs, any claim that a computation is deterministic.
Transformations
- replaying on any conforming player
- comparing films across players
- a replay claim without a second player
- a fidelity number without a receipt
A refusing transformation is not one that is discouraged: it is one that, applied, makes the invariant above false. The word is the tree's, and it is the same word the join uses.
Consequences
Bugs in worlds become reproducible by construction. The honest status: STATED, with an explicit '?' — an acceptable answer under the doctrine, and the only honest one today.
Failure mode it answers
Replica Theater — Calling independent mutable copies 'the same thing'. Paid for at: CLAUDE.md: the served box-and-box copy is a MANUAL COPY and nothing syncs it
Witness
No witness. This pattern is STATED — the tree has no check for its invariant.
Counterexample
No counterexample shipped (required only when WITNESSED).
What to take away
- from the animationTwo players, identical films — and a '?' where the fidelity number would be.
- from the syntaxA cost without its reduction strategy is a rumour (Law 4); a replay without its strategy is not exact.
- from the literatureDeterministic replay (rr), event sourcing, and the reproducible-builds movement.
- from the witnessSTATED with '?': no receipt states a fidelity, and the page says so instead of inventing one.
Prior art — and what is not claimed
| work | relation | what it shares | where it differs |
|---|---|---|---|
| Deterministic replay; rr | antecedent | re-execution produces the identical trace | rr replays a process; the forge replays a reduction |
| Event sourcing | close analogue | state is a fold over a recorded sequence | event sourcing tolerates non-determinism in projections; this does not |
Novelty not claimed. Deterministic replay is a shipped, mature technique. TRVM's film replay is not verified by this build, and no receipt stating a fidelity percentage was ever located (v0.2 review, finding 7) — the page carries a '?' where that number would go.
Realizations in the tree
- TRVM/LAWS.md Law 4
Relations with other patterns
Cross-Machine Skill Replay STATED · Meaning Is a Hash WITNESSED