A run you can replay is a run you can debug. When a failure happened once, in an environment that no longer exists, every attempt to reproduce it is a new experiment. When the run is deterministic, replaying its input gives the same failure at the same step every time. Making a run replayable comes down to removing its hidden inputs, and a run receipt shows that they were removed.
hidden inputs make runs unrepeatable
Most programs read the world without saying so: the wall clock, the order of files on disk, whatever the network returns, the entropy source, a map’s iteration order. Each hidden read makes the run impossible to reproduce and the bug report impossible to check. “It failed at 3am” describes an event nobody can rerun.
The fix is a rule, and no tool is required: every input the decision-making code uses arrives as a value. Clocks come in as now parameters, entropy as byte parameters, and environment reads sit behind ports in the outer shell of the program. When the core uses only values it was handed, the run is a pure function of its recorded inputs, and replay becomes a command you can run.
why receipts carry no timestamps
A receipt is the run’s trace, serialized deterministically: its inputs, its decisions, and its outputs. Across the portfolio, receipts contain no wall-clock fields. A timestamp inside a receipt would make two identical runs produce different receipts, and verification would stop being deterministic too. Where time matters, it enters as a recorded input with a named source.
ALGAL’s verify command shows the shape. algal verify replays a recorded run bit for bit and compares the receipt. A divergence means either a hidden input leaked into the run or the receipt was tampered with, and either way the failure is loud and points to where it happened.
replay in ALGAL, xcb, and Clankdar
xcb applies the same law to tasks. xcb tasks verify replays a task’s recorded history and checks the replayed outcome against the recorded one, so the history can be checked instead of only read. Clankdar applies it to evaluation: each scoring run is archived with its inputs, and a later audit replays the scoring and gets the same scores.
In each case, the deterministic core uses recorded inputs, and the shell’s job is to record those inputs faithfully while the program runs. When the shell misses one, such as a clock read it forgot to log, replay exposes the gap: the receipt cannot be regenerated, and the missing input is the one the replay could not supply.