A tabula-rasa artificial-life experiment

When does a mind learn what it was never asked to care about?

ItaSoRL raises a digital organism from scratch inside a simulated world. Sometimes that world is authentic. Sometimes it is a subtly flawed copy. We never tell the organism, and never reward it for noticing: we read its internal state and ask when the difference gets encoded anyway.

● tabula rasa ● readout, not reward ● substrate-grounded
Detector · L1
0.87
a detector that knows the true rules catches the copy at the organism's in-band grid, 0.023 (AUROC)
Agent probe · L1
0.55
the survival agent's own state: above a coin flip, under the 0.65 bar (corrected trainer; 0.552 on the original trainer scored the same way, 0.533 as first recorded)
Survival · L3
0.73
survival plus next-observation prediction (n = 10, corrected trainer, one shared evaluation-world draw, registered rule not met: L0 gate open; a predictor fed the same senses reads it too)
Observation
~146-d
what the organism sees, tick by tick
01  /  The premise

A flaw in the world can be trivially detectable from the outside and still leave no trace inside the mind. That gap is the object of study.

The organism lives in "A Patch of Earth": a small, deterministic, Earth-like world. Sometimes it runs on authentic dynamics; sometimes on a surrogate carrying tiny substrate seams. Difficulty is dialed on a ladder from L0 (identical control) to L4 (adversarial).

Three invariants hold everywhere: tabula rasa (no imported semantics), readout not reward (world identity is probed, never trained), and substrate-grounded (the only tells are artifacts of the computation itself).

The surrogate ladder frontier: L3
L0
identical control
L1
discreti­zation
L2
rollout drift
L3 · decodable
rule not met (L0)
L4
adver­sarial
02  /  What we study

The experiments

one world, one surrogate ladder, one readout
A
EXP A · done

Detectability ceiling

Agent-free first: can a privileged detector spot the surrogate from the seams alone? Yes, and how well depends on the noise in its view, and at L1 on the grid spacing, so every rung is also scored at one shared detector noise. Difficulty is calibrated and the confound audit is clean.

L1 1.00 at grid 0.06, 0.87 at the in-band grid 0.023 · L2 0.99 noiseless · oracle
B
EXP B · done

Incidental encoding

Does a prediction-only agent come to carry the flaw it was never asked to care about? Not at L2: the artifact a noiseless oracle catches almost perfectly leaves the state near chance across three readout channels, under the 0.65 bar, which was applied to this run after the fact (docs/CORRECTIONS.md, 2026-10-10). That agent's predictor received each action one step late, so it was a weaker predictor than designed (docs/CORRECTIONS.md, 2026-10-16). Retrained with the timing corrected, it reads the same: 0.544 at the strongest drift against 0.517 with the old timing, three seeds each, both inside the stored result's interval. Give that oracle the detector noise the L3 gate uses and it reads 0.62 to 0.65 on one noise draw, and 0.60 and 0.50 averaged over eight, so the matched version of this case is L1: oracle 0.873, survival agent 0.551 on the corrected trainer (0.533 as first recorded on the original one).

probe ≈ 0.50 vs noiseless oracle 0.99 · L2
B′
EXP B · L3 · done

Foraging plus prediction

Against a learned-dynamics fingerprint, the state of agents trained to survive and to predict their next observation separates the worlds: 0.733 (90% CI 0.669 to 0.797) with the trainer corrected in October 2026, on the one evaluation-world draw all seeds share, against 0.589 for prediction-only and 0.523 untrained. Without the next-observation predictor the survival agent reads 0.613, under the bar; the predictor adds +0.120 (90% CI +0.065 to +0.174) at 300 updates, a comparison of the tested regimes that does not establish general necessity, and with more training the gap holds, with a return interval too wide to call the foraging equal. Then the check that changed the story: feed a prediction-only brain the exact senses the survival agent lived through and it reads the world within about 0.01 of the survival brain (0.721 against 0.733), and a decoder that never sees the brain reads 0.724 from the senses and actions alone. The signal rides on where the foraging policy takes the body, and a brain trained to predict keeps it. A hand-written drag is read too (0.754), though an untrained network already reads it at 0.612, outside the 0.1 tolerance around chance, so the margin over that network (+0.142) is what counts. Like the learned law, the drag depends on how fast the body is moving. Random jitter in the velocity, read from brains raised under the learned law, reaches the bar at no setting tried, even jitter that stays correlated over time. Rerun with its 24-step drift matched exactly at the two most correlated settings and within 1.1 percent at the uncorrelated one (a larger drift than the drag's), the tested contrasts did not demonstrate that correlation raises the reading on the tested worlds and jitter draws, and they leave room for a small rise, so these tests do not say why (FINDINGS 22.3). The common-garden control passes its frozen rule (0.666 forward, 0.684 reverse on the original agents): prefix condition remains decodable after restoring authentic dynamics, and on the corrected agents mostly through the body's footprint rather than memory (see FINDINGS 10.6.1 and 17). One honesty check stays open: with both worlds real, the survival state reads 0.559 on the registered pair of evaluation worlds, the largest of nine draws on record (the eight independent draws deviate from chance by 0.037 on average, and the gate accepts on two of them). On that same pair a second set of survival agents, raised on seeds 10 to 19, reads 0.561 (90% CI 0.527 to 0.595), so the separation repeats on new agents. Because that check is open, the registered rule as a whole is not met and the result is reported on its decodability clauses only. A second readout of these same agents, which pairs the two worlds on the same world seeds, reads 0.767, and carried to drift 0.45 on the agents of the historical hidden-8 run, every one of the eight independent draws clears the bar (0.728 to 0.860; the registered draw's 0.774 ranks 5 of 9), SECURE under a rule frozen before the run. A separate confirmation, frozen before it ran, raised new agents on seeds 10 to 19 and scored them on matched world pairs: survival reads 0.800 and a pellet-seeking agent with death switched off 0.843, but both runs are uninformative, because an untrained agent already reads 0.614 there, outside the 0.1 tolerance around chance. A sensory control written after those results were known, and before any trained agent was scored under it, leaves 0.761 and 0.780, with the untrained agent at 0.596 and an interval that crosses 0.60 (FINDINGS 21). That control and its rule, frozen before training and amended once before any result, were then tested on fresh agents (seeds 20 to 29) and fresh matched worlds, and both objectives meet it: survival 0.709 and pellets with death off 0.743, against an untrained agent at 0.598, inside the tolerance by 0.002; nonlinear and longer-history versions of the control leave 0.644 to 0.725 (FINDINGS 24). Historical numbers on the original trainer: 0.752, and 0.730 against 0.601 without the predictor on the same CPU; an independently trained second fingerprint keeps the margin under the bar (0.639).

probe 0.733 · n = 10 · corrected trainer · L0 open
C
EXP C · done

Emergence under selection

Put the food where knowing the world pays, then breed lineages for 30 generations. Does world identity become more decodable? The contrast is flat, and the registered verdict is uninformative. Selection raised fitness in every run, yet one probe fit across the final foragers reads 0.509, chance, and the contrast against control lineages with food underfoot is -0.002 (90% CI -0.013 to +0.009). Scored one forager at a time, the individuals average 0.537 and none reaches the bar. The speed control is under its bar (gate 5), and the preregistration interprets no contrast unless every gate passes, so neither readout yields a verdict in either direction. The payoff for knowing the world (gate 1) is weak and falls short only of a draft margin that was never ratified (FINDINGS 13.F). A first pilot ran on code with two measurement bugs and was thrown out; these numbers come from fixed code. The L4 adversarial rung has not started.

AUROC 0.509 · 3 seeds × 30 generations · uninformative (gate 5)
03  /  The readout

Detectable is not the same as learned.

After training, a linear probe reads the agent's internal state and asks: is world identity in there? At L1 and L2 the answer stays under the 0.65 bar while an outside oracle catches the flaw. At L2 it sits near chance. At L1 it reads 0.551, with an interval that excludes a coin flip, which the record does not read as an absence. At L3 the readout lifts for agents trained to survive and to predict their next observation. Fed the same senses, a prediction-only brain reads the world within about 0.01 of the survival brain, so the signal rides on where the foraging policy goes (FINDINGS 17.6).

The chart shows every brain we trained against the L3 fingerprint on the corrected trainer, ten per row, each read once after training. The top rows score each brain on the episodes it drives itself. The middle rows feed every brain the survival agent's own senses. The last row is the honesty check: with both worlds real it should read a coin flip, and on the registered pair of evaluation worlds it reads 0.559, so the registered rule as a whole is not met.

AUROC
0.5 means a coin flip
tabula rasa
no imported semantics, ever
probe readout · L3 fingerprint ● rule not met: L0 gate open
decodability clauses met · n = 10
one trained brain (seed) mean and 90% interval

Corrected trainer, L3 fingerprint at drift 0.45, 300 updates, n = 10 per row. Each brain is read once after training; nothing here is a training curve. Sources: artifacts/corrected_verdicts.json, artifacts/expB2/corrected_l3_h8_nowm.json, artifacts/policy_controls/corrected_l3_h8_wm.json (FINDINGS 17.2, 17.4, 17.5, 17.6).

04  /  Findings

Recent work

docs/FINDINGS.md →
05  /  What's new here

Others told their AI to look for the fake, or used minds that already knew what "fake" means. We measure what a from-scratch mind comes to know unasked.

Evaluation awareness

Chatbots can tell a test from a real conversation, but they read the internet, so the concept of "being tested" was imported, not discovered. A student with the answer key. Our organism is born knowing nothing.

Incidental probing

Probing studies (AtariARI, Othello-GPT) found knowledge nobody taught, but always about things inside one fixed world: the pieces, the board, the score. Never about which world is running.

Reality-gap detectors

Robots get engineered alarms that fire when the world stops matching their training (GalilAI, RAPT): an installed smoke detector, detection as the designed objective. We install nothing and only read.

Meta-RL

The closest relative. RL², VariBAD, PEARL, and RMA train agents across many environments, so working out which one they are in pays, and their states come to track it. Ours train in one world each, no objective term targets the condition, and the condition is real law versus learned copy. Training across both worlds is the untested next step.

To our knowledge, this is the first study to measure the gap between external detectability and spontaneous internal encoding of simulator authenticity (authentic base dynamics vs a learned surrogate) in tabula-rasa recurrent agents, with substrate-level artifacts as the only cue and world identity read out post-hoc, never rewarded.

the axis-by-axis cross-reference, with citations →
06  /  The films

Detectable all along. The first telling, in 90 seconds.

A creature is born knowing nothing. We copy its world and change one rule of physics. An outside watcher catches the fake almost every time. Read from the inside, an untrained mind sits at a coin flip, and a creature trained to forage and to predict what it senses next carries the difference.

Voice and music are in. This cut was released on 24 August 2026 and made on the pre-correction trainer. Its closing line credits survival for the creature noticing, and that reading is withdrawn, as the note under the numbers explains. Turn the sound on.

99%
outside watcher
50%
untrained brain, the floor
73%
trained brain, pre-correction

Real runs, 10 each. 50% = coin flip, 100% = every fake episode ranked above every real one. Read out, never rewarded. All three numbers come from the pre-correction trainer. The 50% is an untrained network (0.488), not a trained creature with nothing at stake: a creature trained only to predict reads 0.589 on the corrected trainer. The 73% is what remained after a behavior control (0.726); on the corrected agents the best-fitting control leaves 0.620, under the bar (FINDINGS 17.8). The film's closing reading, that the creature noticed because survival made it matter, is withdrawn: at matched input a prediction-trained agent reads the same streams within about 0.01 of the survival agent (0.721 against 0.733, FINDINGS 17.6; docs/CORRECTIONS.md). Nor does the creature act on what the readout finds: removing the decoded direction from its memory while it forages changes its behavior and its return no more than a sham removal (FINDINGS 23.3). The voiced film is not re-rendered, so these caveats travel beside it, and a downloaded copy carries none of them. On the corrected trainer the survival state reads 0.733 on the one evaluation-world draw all seeds share, with the registered rule as a whole not met (the authentic-versus-authentic gate is open on the registered pair of evaluation worlds), and the level is not a product of that draw: carried to drift 0.45 on the agents of the historical hidden-8 run, every one of the eight independent draws clears the bar (0.728 to 0.860; the registered draw's 0.774 ranks 5 of 9), SECURE under a rule frozen before the run. The record is FINDINGS 17.

Historical cut, pre-correction trainer. Its survival-only reading is withdrawn.

The two live cuts tell the corrected story, on the October 2026 numbers. Their end card names the open gate.

Corrected trainer, October 2026. Measured names and rings, illustrative motion.

Film two  /  Two Minds

Same brain, two worlds, one flaw.

Now go inside the creature's head. One brain lives in the real world and in the copy. A title card, five chapters, and an end card follow the clue from the senses, through the processing layer, into the memory spine, and out to the motor heads, where the fake world's reach falls short. The flaw enters at speed, the sense the broken velocity law corrupts. Teal rings settle on the memory cells where a readout finds it.

Names, rings and numbers are measured; the motion is illustrative. Every dot carries its real name from the observation spec. The twelve memory cells are real recurrent units of one brain from the corrected registered run, the seed whose survival reading sits closest to the ten-brain mean of 0.733. Ring strength is each unit's measured world-signal, from that brain's pools rebuilt from its saved weights (within 0.002 of the recorded readings). The numbers on screen are means over ten brains: an untrained brain reads 52% (0.523), a brain trained in the copy reads 73% (0.733), and a brain trained only to predict its senses, fed the same senses, reads 72%. The bar, 65%, was set in advance.

The memory chapter shows two different brains side by side, an untrained one and a trained one, each read once after training. Snapshots measured since, at 100, 200, 300 and 450 updates, show the reading growing and its direction reorganizing on the way (FINDINGS 23.4). Removing that direction while the creature forages changes what it does no more than a sham removal, so the readout finds the clue and the creature does not use it (FINDINGS 23.3). The end card carries the two caveats the record keeps. Without the second job, predicting what comes next, the reading falls under the bar at 300 training updates (0.613). At 450 updates the mean is 0.685, above 0.65, and its lower bound is 0.632, still under the bar. Two different samples of real worlds read 0.559 instead of 0.50, so the preregistered test as a whole is not passed (FINDINGS 17).

66 s · seven chapters · labels on screen, no narration, no audio track · corrected trainer · rings placed from measured data

seeded, with a measured replay tolerance

Open source. Reproducible. Run it yourself.

Every experiment is deterministic given its seeds on the machine and software stack that wrote it; elsewhere a replay on the pinned CPU stack agrees to a measured tolerance, not to the bit (docs/REPRODUCE.md, “Supported-stack replay route”). The Colab notebook reruns Experiments A and B, the L2 arcs and the extra checks you tick. The corrected L3 headline (0.733, and 0.613 without the predictor) retrains on CPU from python scripts/reproduce.py retrain C1 --execute and python scripts/reproduce.py retrain C2 --execute (without --execute each prints its steps), and every committed table rebuilds from the artifacts without training (python scripts/reproduce.py tables).

$ git clone https://github.com/iLevyTate/ItaSoRL.git