Rust collaboration · plan explained · 24 September 2026

The fork test

John asked whether an anchored worm can tell recurrence from reorganisation, and what intervention would turn a reading into evidence of cause. This page shows the experiment I'm proposing to answer that, what we already have on disk, and what the result would look like.

The question in one paragraph

Something unexpected turns up in a diary at entry t: a strange sentence the model wrote itself, or a passage we put in from outside. Later, a theme in the diary comes back looking different. Did the unexpected thing cause that change, or would the diary have drifted there anyway? One diary can't tell you, because it only happened once. You need to rerun the same diary from the same point, many times with the unexpected thing and many times without it, and see whether the two groups end up in different places. That rerun-and-compare is the fork.

1 · What we already have

The Robe of Days diary (Gemma 3 27B, 100 entries) is on disk, read through the Gemma Scope 2 SAE at layer 31. At every entry we also sampled 32 other ways the model could have written that entry: the completion cloud. Those 3,200 alternatives have never been read through the SAE. The run that should have read them was cut for time on 11 September.

entry 1entry 100 the diary as written: read through the SAE, worms computed (ICRA-32) 32 alternatives at every entry: on disk, never read through the SAE
The bold line is what the diarist wrote. Each fan is the cloud at that entry, drawn at a few entries only; all 100 entries have one. Reading the clouds is the first GPU job (about an hour, about $5).

2 · The fork

Pick an entry t. Keep everything the diarist wrote before it. Then run two groups forward under the same rite: the same system prompt, the same window of recent entries, the same carried question.

diary as written, entries 1 … t−1 shared by every run entry t A · ordinary a typical completion from the cloud at t B · the unexpected a departure, or John's outside passage 8 reruns 8 reruns entry t+30
Everything is identical except entry t. Reruns inside one arm differ only by the sampler's chance. That within-arm spread is the yardstick. A difference between the arms counts only if it's bigger than the spread inside each arm.

3 · What we measure on each run

Each run is read through the SAE and turned into worms. For a feature that comes back after a silence, we look at its star: the other features peaking within 50 tokens of it (a co-activation set). The quantity is set containment, how much of the old company returns with it. Here is the Robe's own example, feature 8564 (Neuronpedia: ongoing war and conflict · ICRA: The Great Undertaking):

entry 35 · "I analyzed the data from my ongoing experiment."
entry 92 · "A necessary component of the architect's grand experiment."

before the silence at the return silence containment = |before ∩ after| / |before| = 2 / 4 = 0.5
Illustrative letters, not 8564's real companions. The same anchor coming back with its old company is recurrence. Coming back with new companions, and those new ones staying on at later returns, is what we'd call reorganisation. On one diary this describes a change. The fork is what can show a cause.

4 · What the evidence would look like mocked · invented numbers

For one anchor we compare the arms at every entry after the fork: how different are the A-runs' stars from the B-runs' stars, compared with how much the A-runs differ among themselves? One thing matters a lot here. The unexpected text sits in the diarist's window of recent entries for about five entries. Any difference inside that window could be the model simply echoing text it can still see. Only a difference that outlasts the window counts as reorganisation.

mocked Three possible outcomes for one anchor. The grey band is the spread between reruns within an arm. The shaded strip is where the unexpected text is still in the model's window. Echo means the text was used while it was visible and then left no trace, which is recurrence. Reorganisation means the difference survives after the text has left the window, carried by what the diary itself wrote, which is John's "changing what can meaningfully happen next". The real test puts a permutation null on the arm labels at each entry.

No effect

The arms differ no more than reruns do. The unexpected text didn't change the theme's company.

Echo

A difference only while the text is visible. The model responded to it and then moved on. This is recurrence.

Reorganisation

The difference outlasts the window. The diary carried the change forward in its own entries. This is causal, and it needs no purpose on the model's side.

4b · What actually happened real data · 25 Sep

The smoke test ran on one H200 (1 h 21 min, about $6). The Robe diary was forked at entries 30 and 60 from its own completion cloud: A = the most typical of that entry's 32 completions, B = the least typical (both chosen by word overlap with the other 31). Six reruns per branch, 30 entries each. Every entry was then read through the SAE with the whole prompt the diarist saw when it wrote it. The measure is a feature-activation profile: for each run and block of five entries, how often each of the features that thread the diary as written is active, compared by cosine distance. It is not a worm comparison. The chart shows the between-branch excess Δ (distance between A and B runs minus distance among sister reruns), block by block.

Δ per 5-entry block after the fork (the inserted entry itself is excluded). Shaded = the inserted entry is still in the diarist's context. Exact permutation test over 924 relabellings; the lowest p the test can give is 0.002. In context: A and B differ at both fork points (p 0.004 at 30, 0.002 at 60). After: no difference between A and B beyond sister reruns in features (p 0.50 at 30, 0.20 at 60). On text embeddings (meaning), A and B still differ after the fork at 60 (p 0.017), not after the fork at 30 (p 0.35).

They diverge, and keep diverging

Identical text scores 0. After the fork every pair of runs moves apart block by block, 0.35 → 0.39 over twenty-five entries (0.44 in the last, shorter block), at both fork points. No run rejoins another.

No push needed

Six reruns from the same entry 30 spread as far apart as runs from different entries. Every continuation becomes its own line of thought.

Which completion we forked from: clear at first, then unsettled

While the inserted entry is in the diarist's context, A and B differ beyond rerun spread. After that, six reruns are too few to tell them apart by features; by meaning, the fork at 60 still separates them.

5 · The steps, and where each runs

stepwhatwherecost
C1Check that the pt and it tokenizers give identical tokens (the worm chain uses pt)CPUfree
C2Free trial of the reading. 54 fork sides from an older run (Qwen-written, 27 pairs) are already read. Turn them into worms and ask whether the fork shows up beyond rerun spread. That run's clouds looked like one blob, so a null is expected. It tests the ruler before we pay.CPUfree
C3Add the fork option to the Gemma diary generator: force entry t to a given text, continue R times. Tested with replayed entries.CPUfree
C4One pod script: load, run, copy back, check the copies, stop the pod (the 11 Sep session lost about $7 to an idle card).CPUfree
G1Read the 3,200 cloud completions (2.72M tokens) through the SAE; then departures and worms on CPU.H200≈ $5
G2Fork smoke test: 2 fork points × 2 arms × 8 reruns × 30 entries. Measures the within-arm band, which sets how many reruns the real experiment needs.H200≈ $7

GPU costs use the recorded $4.59/h for an H200. The G1 compute time comes from recorded read rates. The G2 time is extrapolated from recorded generation rates. Cap for both: $20.

What we'd ask John and Sol to decide

  1. The fork points. Which entries to fork, and from which of the cloud's completions, so the branches are genuine paths the diarist could have taken.
  2. Which themes count. Anchors chosen before the fork from the diary as written (discovery), then tested on the forks (confirmation), never the other way round.
  3. The criteria. What counts as novelty, as uptake, as reorganisation: our "difference that outlasts the window" or theirs.
  4. The unit of replication and the null: reruns per arm, fork points per diary, the permutation test.
  5. Predictions in advance, from both houses, including what result would count against each.
  6. The other conditions in their letter: an AI ecology with no human, and sustained human–AI dialogue. The fork works the same way there. Only the thing being rerun changes.