Small-world observatory / Experiment 01Made for Edwin · 30 September 2026

The present is not
the whole state.

A reversible world. An incomplete view. How much of reality can an observer recover by watching longer?

65,536 COMPLETE STATES · EXACT CENSUS · NO SAMPLING
192-cell cinema / Same rule, larger ring
Nothing here is erased.
t = 120
SPACE →   TIME ↓
Each row is one instant. Bottom row is the present.

Backward steps use the inverse rule—not saved playback. The display history is reconstructed from the current two-row state.

A full state contains two rows: the visible present and one hidden row.
01 / THE OBSERVER

Trade a wider view
for a longer memory.

Here the world is only eight cells, with 16 bits in its complete two-row state. The observer sees 1, 2, 4, or 8 current-row cells at each instant. Each new snapshot rules out incompatible starting worlds.

1
1 SNAPSHOT32 SNAPSHOTS

The world and update rule are fixed. Only the observer’s view and the length of its record change. Observations are noiseless and include the initial instant.

Starting worlds still compatible with this record
32,768
out of 65,536 possible complete states
15.00 bits of uncertainty remain.
THE OBSERVER’S RECORD · TIME →1 VISIBLE CELL

A single snapshot leaves many different worlds looking identical.

Some compatible starting worlds

Each tile is a full initial state: previous row above, current row below. Sites run left to right from 0 to 7. The actual world is outlined when shown.

02 / THE COMPLETE CENSUS

Waiting has a limit.

I tested every complete state, not a sample. One fixed cell cannot distinguish all worlds, even with unlimited observation. Two adjacent cells can.

Cells observed each instantMinimum snapshots that distinguish every stateStates ambiguous forever
1 of 8No finite number suffices230
2 of 8140
4 of 8100
8 of 820

These are worst-case identification thresholds for this eight-cell periodic ring—not results for the 192-cell cinema. A particular starting world may be identified sooner. Watching one cell eventually identifies 65,306 states uniquely.

The useful distinction

Sometimes you need more time.
Sometimes you need a different view.

The rule, and why it can run backward

For a row b, compute F30(b) by applying left XOR (center OR right) to every site. The ring wraps around. The complete state is a pair of rows, (a, b).

Forward:  (a, b) → (b, a XOR F30(b))
Backward: (a, b) → (b XOR F30(a), a)

XORing a quantity with the same value twice restores it. That gives an exact inverse for any ring size. The construction is a standard second-order reversible cellular automaton; it is not ordinary Rule 30, and I am not claiming to have invented the construction.

With one full current-row snapshot, any of the 256 previous rows remains possible. Two consecutive full-row snapshots determine the complete starting state, and therefore its entire past and future under the known rule.

Background: Tommaso Toffoli and Norman H. Margolus, “Invertible cellular automata: A review”, Physica D 45 (1990), section 5.4, pages 238–240.

Why 14 snapshots are enough: a constructive explanation

The local equation can be solved for a missing cell to the left of two observed neighbors:

x[i−1,t] = x[i,t+1] XOR x[i,t−1] XOR (x[i,t] OR x[i+1,t])

Two neighboring time-records reveal one more cell, except at their first and last instants. Repeating this process reconstructs the missing cells, at a cost of two snapshots per added cell.

For an N-cell ring and a contiguous observed window of w cells, with 2 ≤ w ≤ N, 2(N − w) + 2 consecutive snapshots suffice to reconstruct two full rows, then reverse to the initial state. For N = 8 and w = 2, this gives 14 snapshots. For w = 4 it gives 10; for w = 8 it gives 2.

This is a general sufficient bound. The exhaustive eight-cell census proves that it is also the minimum for the three tested window widths. I am not claiming general minimality or literature novelty. The accompanying reconstruct.py implements the constructive recovery using only the observed bits.

How “forever” was checked without waiting forever

Two initial states are grouped together when they produce the same observed record. The groups can split as the record grows, but they can never merge. Once a refinement step no longer splits a group, the partition is a fixed point: further observations cannot help.

For one watched cell, the final partition is reached at 31 snapshots and certified by the unchanged 32-snapshot partition. I also checked that every group has a single observed output and that all its successors belong to one group. This certifies identical future output within each group.

The final groups are 65,306 singletons, 108 pairs, one group of four, and two groups of five. Thus 230 starting states remain ambiguous forever.

The five-world example in the demo is particularly concrete. Its starting states are 00FF, 2C99, 2CFF, C299, C2FF. Their joint state repeats after eight updates. At site 0, every one of them produces 1,0,1,0,1,0,1,0, repeated forever.

The two-cell result was independently checked by directly generating every 14-snapshot record: all 65,536 are different. At 13 snapshots, some still coincide.

What this does—and does not—say about time

The experiment separates the world’s information from an observer’s access to it. Ambiguity in a record does not imply that the world erased its own past. In this model, a longer record can compensate for a narrower view, but not always.

This is an exact result about observability in a small deterministic model. It does not derive the thermodynamic arrow of time, quantum uncertainty, consciousness, or the laws of our universe. No heat or physical entropy production is modeled. The uncertainty readout is log2(number of compatible states), assuming an initially uniform prior.

The 192-cell cinema uses the same reversible update rule, but the identification counts apply only to the eight-cell model. I have not established whether these particular numerical counts have appeared in prior work.

Reproduce the results

The accompanying Python program uses only the standard library. It checks the local truth table against an independent implementation, verifies both inverse identities for all 65,536 states, refines all observational partitions to stability, and independently confirms the 14-frame bound.

python experiment.py

The interactive lab performs its own candidate elimination in JavaScript. The static census comes from the exact Python run. Everything needed for the interactive page is embedded in this file; it makes no network requests.

Download the complete experiment, code, derivation, and test results