Experiments · E201

Does the brain's readout actually learn the reward, compared with a frozen copy?

Yes. The learning readout scored 78.0 against 15.0 for the frozen one, and its scores ranked the reward at 0.90.

In the log: does the readout learn the real reward? (2026-09-19 08:12; queued next, operator's call)

mixedDate 2026-09-19 08:12, as written in the logrung 0 · energy model0 predictions · 1 result paragraphEXPERIMENTS.md lines 12664–12674, lines 12711–12734, lines 12736–12751, lines 12753–12755
exp E201 diagram
What E201 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E201.svg).

Pre-registration

The pre-registration, as written

E201, live arm (2026-09-19 12:41). fly (flags off, new code): AUC_Q 77.96 (s.e. 5.42; seeds 72.5 / 83.4), 181.5 finds (170 / 193), best −100, score–reward Spearman +0.90, last-window 150. Not the replay of E195b's fly it was meant to be (57.3 / 89.8 AUC, 141 / 175 finds): seed 0 shares no composition with E195b's seed 0 and finds first at round 5 vs 23 — the runs part at the start, so this is not a late tie-flip. Isolated so far: old and new generator/walker code give identical proposals on a fake head (flags off); the head's forward writes nothing without commit. Left: MPS nondeterminism in the sparse propagation vs a code change I have not found. Five 5-round runs decide it (current code MPS ×2, CPU ×2, baseline commit CPU ×1). Until they do, E201's live arm is a fly run, not the baseline, and the E202–E204 comparisons will use whichever baseline the answer allows. The frozen arm is running; the +0.90 correlation is meaningless until it says whether a frozen readout has it too.

Determinism, measured (2026-09-19 13:11). Five-round fly runs, seed 0, current code: MPS twice → identical to the last composition; CPU twice → identical; CPU ≠ MPS (different float paths, as expected). The propagation is deterministic on both devices. So E201's departure from E195b at round 0 is not the hardware; the baseline-commit run on CPU now decides whether it is my code. Found on the way: eleven production modules and nineteen test files — the whole brain layer (atlas, propagate, readout, plastic, modulation, steering), the eCE ladder (ece_predict/verifier/odt, published_odt), bragg_williams, the expansion scripts and their tests — had never been committed; the green suite and every run since the GPU port depended on files that existed only in this working tree. Committed (5c7fecc); readable-layout moved to it. The baseline worktree crashed for exactly this reason and is re-running with the modules in place.

E201 profile note (2026-09-19 13:12). Live-arm finds per 50 rounds: 81 / 125 / 134 / 169 (seed 0) and 70 / 98 / 108 / 131 (seed 1) — rising, no late stall. E195b's fly, same settings, had 56 / 103 / 149 / 123 and 122 / 99 / 115 / 113. The late-stall diagnosis in the spec came from E195b; whether E195b or E201 is the fly's true baseline is what the baseline-commit determinism run decides, and the E202 bar (last window ≥ 139) is read against whichever it is.

Divergence hunt (2026-09-19 13:25). Cleared so far, each by a five-round replay: hardware (MPS and CPU each replay themselves exactly); walker + proposal code (old vs new identical on a fake head); the head file (baseline mushroom.py + current everything else ≡ current, 7/7 compositions). The baseline-commit run itself was invalid — its stage_b predates the eCE reward flag and ran on the icet reward (no 'rung 0' line). Running: arm order within one process (E195b's fly ran fifth, E201's first). No global RNG use in the code; cross-arm state is heads (confirm only) and site_rewards (per-composition FB reward).

Results

EXPERIMENTS.md · line 12736

E201 result (2026-09-19 13:12) — the readout learns the real reward.

arm AUC_Q (seeds) distinct finds score–reward Spearman finds per 50 rounds
fly, live readout 77.96 (72.5 / 83.4) 181.5 (170 / 193) +0.90 fast start, last window 150
fly-frozen 15.03 (14.3 / 15.7) 26 (25 / 27) −0.03 last window 10

Prediction 1 (my expectation: null) falsified; prediction 2 confirmed by a factor of five on AUC_Q and seven on finds: the whole-brain readout, taught by the z-score rule on 800 rewards, produces a score that ranks the v5 reward at ρ = 0.90; the frozen readout's score carries nothing. Prediction 3 falsified: the frozen arm shows no "fast start then stall" — it never starts; the profile is the learned field's, not the walkers'. Consequences: the fly's gap to elitist is exploitation, not learning (approach 1, E202, is the right lever); imagination (E203) has a head that predicts the reward to imagine with; the Bennett rule (E204) is polish. E198's verdict on the gain field stands untouched — that is a different channel from the readout. Dump stage_b_e201.json.

The full record

This entry is written in 4 separate places in the log, shown here in log order.

EXPERIMENTS.md · lines 12664–12674

E201 — does the readout learn the real reward? (2026-09-19 08:12; queued next, operator's call)

The fly's own control, never run on a reward that ranks: fly vs fly-frozen (identical wiring, walkers, tumbling, step; plasticity off), E195b settings, eight-element space, v5 reward, 2 seeds each. Predictions, on record: 1. live − frozen on AUC_Q within one seed-sd (the readout learns nothing usable in 800 rewards; E198 already showed the gain field's updates hurt) — this is my expectation, and it makes approach 3 (a learned prediction in the readout) necessary rather than polish. 2. If live beats frozen by more than one sd, the readout learns and the whole deficit is exploitation (approach 1). 3. Either way the finds-per-window profile (fast start, late stall) is reproduced by both arms — the stall is the walkers' novelty/patience rule, not the plasticity.

EXPERIMENTS.md · lines 12711–12734

E201, live arm (2026-09-19 12:41). fly (flags off, new code): AUC_Q 77.96 (s.e. 5.42; seeds 72.5 / 83.4), 181.5 finds (170 / 193), best −100, score–reward Spearman +0.90, last-window 150. Not the replay of E195b's fly it was meant to be (57.3 / 89.8 AUC, 141 / 175 finds): seed 0 shares no composition with E195b's seed 0 and finds first at round 5 vs 23 — the runs part at the start, so this is not a late tie-flip. Isolated so far: old and new generator/walker code give identical proposals on a fake head (flags off); the head's forward writes nothing without commit. Left: MPS nondeterminism in the sparse propagation vs a code change I have not found. Five 5-round runs decide it (current code MPS ×2, CPU ×2, baseline commit CPU ×1). Until they do, E201's live arm is a fly run, not the baseline, and the E202–E204 comparisons will use whichever baseline the answer allows. The frozen arm is running; the +0.90 correlation is meaningless until it says whether a frozen readout has it too.

Determinism, measured (2026-09-19 13:11). Five-round fly runs, seed 0, current code: MPS twice → identical to the last composition; CPU twice → identical; CPU ≠ MPS (different float paths, as expected). The propagation is deterministic on both devices. So E201's departure from E195b at round 0 is not the hardware; the baseline-commit run on CPU now decides whether it is my code. Found on the way: eleven production modules and nineteen test files — the whole brain layer (atlas, propagate, readout, plastic, modulation, steering), the eCE ladder (ece_predict/verifier/odt, published_odt), bragg_williams, the expansion scripts and their tests — had never been committed; the green suite and every run since the GPU port depended on files that existed only in this working tree. Committed (5c7fecc); readable-layout moved to it. The baseline worktree crashed for exactly this reason and is re-running with the modules in place.

EXPERIMENTS.md · lines 12736–12751

E201 result (2026-09-19 13:12) — the readout learns the real reward.

arm AUC_Q (seeds) distinct finds score–reward Spearman finds per 50 rounds
fly, live readout 77.96 (72.5 / 83.4) 181.5 (170 / 193) +0.90 fast start, last window 150
fly-frozen 15.03 (14.3 / 15.7) 26 (25 / 27) −0.03 last window 10

Prediction 1 (my expectation: null) falsified; prediction 2 confirmed by a factor of five on AUC_Q and seven on finds: the whole-brain readout, taught by the z-score rule on 800 rewards, produces a score that ranks the v5 reward at ρ = 0.90; the frozen readout's score carries nothing. Prediction 3 falsified: the frozen arm shows no "fast start then stall" — it never starts; the profile is the learned field's, not the walkers'. Consequences: the fly's gap to elitist is exploitation, not learning (approach 1, E202, is the right lever); imagination (E203) has a head that predicts the reward to imagine with; the Bennett rule (E204) is polish. E198's verdict on the gain field stands untouched — that is a different channel from the readout. Dump stage_b_e201.json.

EXPERIMENTS.md · lines 12753–12755

E201 profile note (2026-09-19 13:12). Live-arm finds per 50 rounds: 81 / 125 / 134 / 169 (seed 0) and 70 / 98 / 108 / 131 (seed 1) — rising, no late stall. E195b's fly, same settings, had 56 / 103 / 149 / 123 and 122 / 99 / 115 / 113. The late-stall diagnosis in the spec came from E195b; whether E195b or E201 is the fly's true baseline is what the baseline-commit determinism run decides, and the E202 bar (last window ≥ 139) is read against whichever it is.

Divergence hunt (2026-09-19 13:25). Cleared so far, each by a five-round replay: hardware (MPS and CPU each replay themselves exactly); walker + proposal code (old vs new identical on a fake head); the head file (baseline mushroom.py + current everything else ≡ current, 7/7 compositions). The baseline-commit run itself was invalid — its stage_b predates the eCE reward flag and ran on the icet reward (no 'rung 0' line). Running: arm order within one process (E195b's fly ran fifth, E201's first). No global RNG use in the code; cross-arm state is heads (confirm only) and site_rewards (per-composition FB reward).

Related entries

Built with PRISMWebsite and visualizations made using Claude