GOL-016 · technical companion
Countertime
Every cell watches its own rolling binary history: when that history matches its own trigger, it crosses to a permanent distant counterpart and plays there backward.
At a glance
- geometry
- Square lattice + random perfect matching
- neighborhood
- Moore · 8 local cells + 1 coupled counterpart
- states
- Dead / alive + rolling signal + private trigger + transferred replay
- update
- Synchronous forward Life / counterpart-history replay
- renderer
- Canvas 2D
What to explore
The experiment should make coupled history transfer legible. Every position has exactly one counterpart for the life of the reconstructed world. Each cell owns its own trigger and rolling visible history. A fresh equality between a cell's own history and its own trigger should copy that complete history into the other cell, suspending ordinary Life there while the received states play newest-to-oldest. Replayed states must become part of the receiver's own signal so transferred histories can act back across the couple.
Correctness requires more than a trigger-colored renderer. The comparison must read one frozen pre-Step state; both partners must be allowed to trigger on the same Step; reverse occupancy must come only from the signaler's captured history; and a permanently equal signal must not immediately retrigger forever.
Rules, update order and replay
The world is an even-sized square binary lattice. Ordinary forward updates read the eight-cell Moore neighborhood from one frozen current board, using either toroidal or bounded edges. A world seed drives a salted Fisher-Yates shuffle, divided into two-position groups, to create a symmetric random perfect matching. No cell pairs with itself, every cell has degree one, and pairs persist until the world is reconstructed.
The rule chooses one history width N from two through eight. Every cell owns:
- its current dead/alive occupancy;
- one permanent partner index;
- an
N-bit rolling signal of committed visible occupancies; - an at-most-
N-bit transferred replay buffer and its remaining length; - an
N-bit reverse trigger; - forward/reverse direction and remaining reverse Steps;
- an edge-trigger latch, global warmup countdown, and last-transition evidence.
The rolling signal and replay buffer are separate because a received history
must remain frozen while its outputs alter the receiver's own rolling signal.
The signal is the history a cell may send; the replay buffer is the history it
has received and is currently consuming. Both structures are bounded at N
bits.
After construction, every cell advances under the configured Life rule for N
Steps. This warmup produces a complete N-bit signal before transfer matching
becomes active. On every later Step, all cells evaluate synchronously from the
same frozen state:
- Cell X compares X's current complete rolling signal with X's trigger. Cell Y independently compares Y's signal with Y's trigger.
- A newly encountered self-equality in X copies X's frozen
N-bit signal into Y; a new self-equality in Y independently copies Y's signal into X. A receiving forward cell immediately emits the newest bit of that captured partner history on the same Step; ordinary Life is computed for inspection but ignored. - A reversing cell continues consuming that frozen transferred buffer from
newest state to oldest. It ignores Life and additional transfers until all
Nreceived states have been emitted. - Every actual result—forward or replayed—is appended to that cell's rolling visible signal before the next generation. A transferred output can therefore create the receiver's own self-match and send the receiver's new history back to its counterpart on a later Step.
- At the end of the
Nth transferred state, the receiver returns to forward. A later fresh counterpart self-match may deliver another complete history.
Matching is edge-triggered across each pair. While Y's complete history remains equal to Y's trigger, that equality is latched on X's incoming gate and cannot send X into another replay. Y's self-match must become false before a later equality is new. A transfer encountered while X is already replaying is latched but does not replace the active received history. Both partners may be forward, reverse, or may receive one another's histories simultaneously; there is no pairwise direction lock or priority.
Step advances this complete contract once. Reset reconstructs the selected
occupancy field, perfect matching, per-cell triggers, one-state rolling signals,
empty transferred-replay buffers, forward directions, empty latches, the
N-Step warmup countdown, and evidence. Exact replay
requires configuration, world seed or classic field, density when random,
topology, generation, occupancy, partner indices, signal bits and lengths,
transferred replay bits and lengths, per-cell trigger bits, directions, reverse
counters, match latches, warmup countdown, and last-event evidence. Evolution
makes no random calls.
Reading the simulation
Diagnostic color uses cyan for living warmup cells, lime for forward life, violet for reverse life, cream for forward births, and gold for a living state on the Step it receives a counterpart's transferred history and begins replay. Dead states remain background; reverse-to-death and trigger-to-death remain written evidence. Simplified Color mode shows dead/alive while retaining the pair line and written causality.
Inspection pauses the world, outlines the selected cell and its eight local neighbors, draws one violet line to the only counterpart, and outlines that counterpart separately. Written evidence reports both coordinates, occupancies, directions, rolling signals, triggers, both self-comparisons, the selected cell's incoming counterpart history, active transferred buffer and reverse counter, whether that incoming transfer is armed or latched, the hypothetical ordinary Life result, last event, and exact next result with reason. The accessible canvas label states both self-comparisons, the transferred history, and the selected result so neither color nor the distant line is the only explanation.
Reproduce an opening
Download the example above, open the simulation, expand the controls, then use Share & reproduce → Import JSON. The example uses authored rules and a fixed seeded starting field; it is independent of the site’s editable default composition. Import starts paused at Step zero.
Share links and JSON reproduce the configured starting conditions, including hidden layers rebuilt by Reset. They do not save an evolved board, hand-painted cells, speed or display preferences. Determinism applies to the same rule version and Step sequence; real-time playback rates vary by device.
Larger fields and more involved rules can reduce playback speed. Read the configuration format and automated-access guide for compatibility details.