OpenSentience.orgUnboxed PatternsChapter 23 of 32 · Persistence and World

UP-023 · Persistence and World · STATED CHECKABLE RUNNABLE EXECUTED STAGED

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.

A run of a sealed world is a film that replays byte-identically; any divergence on replay is a divergence of the world, not of the player.
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

compute surfacethe filmsealed worldsealed worldplayer Aplayer Aplayer Bplayer BFfilm of one runA sealed world, the film of a run, and two players.

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).

compute surfacesigsigsiger_a · Relayer_arelayer_b · Relayer_brelayer_clock · Pulserer_clockpulserer_player · Doorer_playerdoorThis chapter's world alone, before epoch 1. Reduced by TRVM's forge in 0.008s; the forge's id equals the seal above.

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.

shapeisand so
a clock; the only source of signalEvery signal on the board starts at one of these. Nothing else can make one.
a pass-through, so signal can travelOne arrives, any number leave — a relay that fans out is the board's router.
a sink; signal arrives and stopsIt latches what reached it and passes nothing on. A door is where a path ends.
rotation: takes signal, drives a poseThe only object on the board that holds a value a claim can rewrite — and only if its config says configurable.
the thing that gets movedIt 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 FilmIt counts what the run admitted, and turns red on a Rejected outcome.
SignalWiresignal: a sig_out to a sig_inLegal from a Pulser or Relay, into a Relay, Door or Spinner. This is how the board moves.
SocketControlcontrol: a socket to a poseLegal 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.

compute surfaceI · The LocusII · CompositionIII · ProgressIV · Persistence and Worldal_locus · Spinneral_locusspinneral_view · Orbal_vieworbal_world · Pulseral_worldpulsercb_fixed · Spinnercb_fixedspinnercb_gate · Doorcb_gatedoorcb_in · Relaycb_inrelaycb_view · Orbcb_vieworbcc_carrier · Doorcc_carrierdoorcc_grant · Relaycc_grantrelaycm_in · Relaycm_inrelaycm_locus0 · Doorcm_locus0doorcm_locus1 · Doorcm_locus1doorcm_locus2 · Doorcm_locus2doorcm_locus3 · Doorcm_locus3doorcm_slot0 · Relaycm_slot0relaycm_slot1 · Relaycm_slot1relaycm_slot2 · Relaycm_slot2relaycm_slot3 · Relaycm_slot3relayct_in · Relayct_inrelayct_locus · Spinnerct_locusspinnerct_view · Orbct_vieworbdb_clock · Pulserdb_clockpulserdb_locus · Spinnerdb_locusspinnerdb_view · Orbdb_vieworber_a · Relayer_arelayer_b · Relayer_brelayer_clock · Pulserer_clockpulserer_player · Doorer_playerdooris_id · Orbis_idorbis_in · Relayis_inrelayis_seal · Spinneris_sealspinnerlc_core · Relaylc_corerelaylc_locus · Spinnerlc_locusspinnerlc_machine · Relaylc_machinerelaylc_thread · Relaylc_threadrelaylc_view · Orblc_vieworbmh_clock · Pulsermh_clockpulsermh_gate · Doormh_gatedoorop_clock · Pulserop_clockpulserop_locus · Spinnerop_locusspinnerop_view · Orbop_vieworbpj_artifact · Spinnerpj_artifactspinnerpj_in · Relaypj_inrelaypj_view_a · Orbpj_view_aorbpj_view_b · Orbpj_view_borbpp_homeA · Relaypp_homeArelaypp_homeB · Relaypp_homeBrelaypp_in · Relaypp_inrelaypp_locus · Spinnerpp_locusspinnerpp_view · Orbpp_vieworbpq_a · Relaypq_arelaypq_b · Relaypq_brelaypq_clock · Pulserpq_clockpulserpq_done · Doorpq_donedoorpu_admitted · Orbpu_admittedorbpu_busy · Pulserpu_busypulserpu_hop0 · Relaypu_hop0relaypu_hop1 · Relaypu_hop1relaypu_hop2 · Relaypu_hop2relaypu_locus · Spinnerpu_locusspinnerpu_progress · Pulserpu_progresspulserpu_sink · Doorpu_sinkdoorrb_record · Orbrb_recordorbrd_in · Relayrd_inrelayrd_real · Spinnerrd_realspinnerrd_view · Orbrd_vieworbrj_join · Doorrj_joindoorrj_r · Relayrj_rrelaysm_in · Relaysm_inrelaysm_inside · Spinnersm_insidespinnersm_outside_a · Orbsm_outside_aorbsm_outside_b · Orbsm_outside_borbso_in · Relayso_inrelayso_pose · Orbso_poseorbso_rotor · Spinnerso_rotorspinnerts_root · Doorts_rootdoorts_version · Pulserts_versionpulsertv_a · Orbtv_aorbtv_b · Orbtv_borbtv_fixed · Spinnertv_fixedspinnertv_in · Relaytv_inrelaytv_open · Spinnertv_openspinner

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

Preserving
  • replaying on any conforming player
  • comparing films across players
Refusing
  • 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

  1. from the animationTwo players, identical films — and a '?' where the fidelity number would be.
  2. from the syntaxA cost without its reduction strategy is a rumour (Law 4); a replay without its strategy is not exact.
  3. from the literatureDeterministic replay (rr), event sourcing, and the reproducible-builds movement.
  4. 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

workrelationwhat it shareswhere it differs
Deterministic replay; rrantecedentre-execution produces the identical tracerr replays a process; the forge replays a reduction
Event sourcingclose analoguestate is a fold over a recorded sequenceevent 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

Relations with other patterns

Cross-Machine Skill Replay STATED · Meaning Is a Hash WITNESSED

← Meaning Is a HashPersistence and WorldCross-Machine Skill Replay →Persistence and World