Experiments · E154

Do the extra neurons reach the score through paths that learning cannot change?

Partly. They do, but even the mushroom body gets 76 % of its readout through unlearnable paths; the whole brain costs ×2–3, not ×10.

In the log: The readout under recurrence: where 159,195 unread neurons reach the score

mixedDate not stated in the log; it was written between the commit of 2026-09-16 19:06 and the first commit that contains it, 2026-09-19 08:35generator · fly brain0 predictions · 3 result paragraphsEXPERIMENTS.md lines 9533–9576, lines 9578–9591, lines 9593–9600, lines 9602–9649, lines 9651–9667, lines 9669–9699, lines 9701–9713
exp E154 diagram
What E154 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E154.svg).

Pre-registration

The pre-registration, as written

E154, an observation logged without a claim. In the direct probe on the mushroom asset, cache["pre"] — the state one step before the readout, and the eligibility learn_head multiplies the lesson by — had 839 of 4,064 Kenyon cells active (20.6%) at a Dirichlet composition, against sparsity_target=0.10. The calibration targets _kc_input on a probe distribution (probe_space, the ladder's HEASpace), and a Dirichlet draw is not that distribution, so this may be nothing more than an off-distribution point. It may also mean the evoked code is twice as dense as the number the search was tuned to. Not this hour's question; it is recorded so it is not rediscovered.

E154 verdict. The whole brain reaches the readout through the recurrence, as predicted, and every effect measured is real: MBON current from Kenyon cells x0.37, from everything else x0.58, landscape x0.60, lesson x0.37, lesson-over-landscape x0.61. Compounded, that is a factor of two to three on how effectively the generator learns, and it is not ten. With temperature = 0 the walkers are greedy, so none of these scale factors changes a single accept/reject decision on its own. The readout is not where the order of magnitude lives.

The finding that outranks the question asked. On the mushroom asset — the substrate every result before E140 was measured on — 76% of the MBON current arrives through synapses learning cannot touch (other/KC = 3.11), and on the whole brain 83%. The generator's lessons act on a quarter of its own readout. That was true throughout, is independent of the substrate question, and is the first thing this measurement says about the model itself.

Two branches open, and they are different repairs.

  1. The walk. A x2.5 loss in climb rate does not have to give x2.5 fewer finds: a find is a threshold crossing (p >= 0.832, driving force below -40 meV/atom) inside 200 rounds, and a count of crossings is a steep function of how fast walkers reach the bar. The measurement is the walk's own statistics on the two landscapes, first without learning — acceptance rate, stalls, relocations, distance travelled — then with. If the whole-brain walkers stall and relocate at a much higher rate on a landscape whose gradient direction is rougher, the remaining factor is there and the repair is in Forager (patience, step size), not in the brain.
  2. The shortcut. Whatever the walk shows, a readout three quarters of which is fixed is a design defect: the plastic path should carry the readout, and the PN/DAN/MBON→MBON current should be a minority. That repair is in MushroomBody — which sources the readout sums, or how the non-plastic input into the MBONs is normalised against the plastic — and it would help both substrates.

Branch 1 is the next measurement because it is cheap and settles whether branch 2 is the whole story. Prediction for it goes in before it runs, next hour.

E154 gate: 241 passed, 2 skipped (876 s). Nothing under forager/ changed in E153 or E154 — two instrumentation scripts under scripts/brain/ and the rebuilt data/malecns_mushroom.* asset — so an unchanged count is the expected outcome, not a check that passed.

Record repair — double-valued entry numbers. E149 and E150 each labelled two experiments: the daytime cluster-expansion entries (E149 training-set halves, E150 label correction, E151 label gate) and the overnight fly-substrate entries written after them. The later block is renumbered — control E148→E152, gain E149→E153, readout E150→E154, the planned walk E151→E155 — in this file, OVERNIGHT.md and the scripts/brain/ docstrings. Run artefacts keep their names: runs/e148_smallbrain_control.log is E152, runs/e149_gain*.log E153, runs/e150_readout.* and runs/e150_learnability.* E154. Renaming checkpoints would break the resume-never-restart rule for nothing.

Results

EXPERIMENTS.md · line 9578

E154, a measurement withdrawn before its result is read. The learnability stage in readout_under_recurrence.py calls learn_head once and reports the score change. It will report exactly 0 on both assets, and that number is the design, not the circuit: learn_head standardises the reward and the score against a running trace and, on the first call, if t["n"] < 2: return 0.0 — no weight moves until there is a baseline to form an error against. One lesson is always a no-op; the generator only learns from the second observation on. The other five stages of that script do not touch learning and stand.

Replaced by scripts/brain/learnability_probe.py: warm the trace with two observations at other compositions (rewards 0 and 1, so both standard deviations are nonzero), then for eight fixed compositions apply one unit-reward lesson, take the plastic-weight norm learn_head returns and the score change, and restore the weights and trace between compositions. The quantity prediction 3 refers to is the mean |score change| per lesson divided by the across-composition score sd measured in the same run. Prediction 3 itself is unchanged.

EXPERIMENTS.md · line 9602

E154 result, five stages of six — the readout under recurrence, mushroom body against whole brain, seed 0, the same 64 compositions, stage_b's construction.

quantity                          mushroom (5,311)   whole brain (164,506)   ratio
MBON in-degree, count                    685.5             883.8              1.29
KC share of MBON input, by count         0.920             0.714              0.78
KC share of MBON input, by weight        0.865             0.657              0.76
MBON current from Kenyon cells           0.00231           0.000849           0.37
MBON current from everything else        0.00719           0.00416            0.58
  other / KC                             3.11              4.90               1.58
|h[MBON]|                                0.00635           0.00381            0.60
score, across-composition sd             0.000426          0.000254           0.60
sum |w| over all edges                   1,024             26,242             25.6

Prediction 1 — half right, and the wrong half is the interesting one. On the whole brain the non-KC current into the MBONs is 4.9x the KC current, comfortably past the ">= 1" I predicted. But on the mushroom asset it is 3.1x, not "under 0.3". The shortcut around the plastic path is not something the whole brain introduces; it already carries three quarters of the readout in the subset the search works on. Only 24% of the MBON current on the mushroom asset arrives through synapses learning can touch; the whole brain lowers that to 17%. The 8% of MBON inputs that are not Kenyon cells outweigh the 92% that are, because the Kenyon code is sparse and rectified and its weights were shrunk to bound the recurrence, while the projection neurons, the other MBONs and the dopaminergic cells are dense.

Prediction 2 — falsified on magnitude. The KC share by weight falls (0.865 → 0.657) but nowhere near "below 0.4", and MBON in-degree grows x1.29, not "several times". Direction right, size wrong by about a factor of four. The whole brain's extra edges into the MBONs are fewer and lighter than I assumed.

Prediction 3, the saturation half — falsified in the opposite direction. |h[MBON]| is smaller on the whole brain (x0.60), and at 0.004-0.006 on both assets the readout sits deep in tanh's linear range. Nothing is saturating anywhere. The learnable current does fall, to x0.37, but by shrinkage, not by squashing. The lesson-size half of prediction 3 waits on the warmed probe.

Prediction 4a — confirmed. The landscape amplitude is x0.60, inside the x0.5-2 I gave. With temperature = 0 the walkers are greedy, so amplitude alone changes no decision; only ties would, and a sd of 2.5e-4 on scores of order 2e-3 is well above float resolution.

Where this leaves the 10x. Every whole-brain effect measured here is a factor between 0.37 and 0.78 — shrinkage of the readout, a further tilt toward the unlearnable shortcut — and they compound to roughly x2-2.5 on the share of the landscape a lesson can move, not x10. Either the warmed learnability probe (chained, running) shows a lesson moving the score far less than the current ratio implies, or the remaining factor is not in forward at all and the next place is how a lesson's size is set — learn_head standardises reward and score against running traces, so a smaller score spread makes the same reward look like a larger error, which is a compensation this analysis has not accounted for and which could cut either way.

EXPERIMENTS.md · line 9651

E154 result, stage six — the warmed learnability probe, and the verdict.

quantity                                   mushroom     whole brain    ratio
plastic-weight norm per unit-reward lesson  0.02071      0.01372        0.66
|score change| per lesson, mean of 8        1.99e-4      7.30e-5        0.37
score sd across compositions                4.26e-4      2.54e-4        0.60
lesson / landscape                          0.468        0.287          0.61

Prediction 3, lesson half — falsified, narrowly and for the wrong reason. I said "at most 0.3x"; it is 0.37x, and it is 0.37 because that is the KC→MBON current ratio to three figures — a lesson's effect on the score scales with the gain of the one plastic path and with nothing else. The mechanism I gave — two shrunken hops plus a readout pushed onto tanh's flat end — was half wrong: nothing saturates. The weight change itself is x0.66, which is the Kenyon eligibility pre[KC] at E153's x0.68; the standardised error is the same size on both assets because learn_head divides reward and score by their own running spreads.

Prediction 4b — falsified. Lesson-over-landscape falls by 1.6x, not "3x or more".

The full record

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

EXPERIMENTS.md · lines 9533–9576

E154 — The readout under recurrence: where 159,195 unread neurons reach the score

E153 cleared the encoder. What remains is MushroomBody.forward: steps=3 of h = tanh(W @ h + drive) over every node, then score = readout @ h[MBON]. Read against the code as stage_b builds it (memory=False, readout="compartment", normalise="spectral", rho=0.85):

  • bias is zero everywhere except the Kenyon cells (mushroom.py:190, then only bias[kc]). B has rows only at the 595 PNs. So the unread nodes get no drive at step 1, light up at step 2 from PN activity through PN→X edges, and pour into the 97 MBONs at step 3 through X→MBON edges the induced subgraph never had. That signal is composition-dependent — it came from the odour — but it bypasses the Kenyon-cell code, and only KC→MBON is plastic. The whole brain adds a shortcut the generator's learning cannot move.
  • Every weight is rescaled by one constant, rho / spectral_radius. E153 measured the KC drive at x0.68 on the whole brain, which is that constant at work on the first hop; the KC→MBON hop is shrunk by the same factor and nothing recalibrates it.
  • Forager.move keeps a step if score > self.score, else with probability exp((score - old) / temperature). If the learnable part of the landscape is small against the shortcut, walkers climb a fixed surface that no lesson reshapes.

A withdrawal first. Last hour's OVERNIGHT.md set this task as "the walk over a 31x larger graph". The walkers never touch the graph; they run-and-tumble on the composition simplex. That framing was mine, and wrong before it was tested.

Predicted, on both assets, seed 0, the same 64 Dirichlet compositions, before any run:

  1. On the whole brain the non-KC current into the MBONs is at least as large as the KC current (from_other / from_kc >= 1); on the mushroom asset it is under 0.3 (only MBON<->MBON, DAN->MBON and APL remain).
  2. The KC share of MBON input by contact weight falls from above 0.7 to below 0.4, and MBON in-degree by count is several times larger.
  3. Learnability collapses: the score change from one learn_head step with unit reward is at most 0.3x on the whole brain — two hops each at x0.68 (0.46) and a readout pushed toward tanh's flat end by the added background (|h[MBON]| higher).
  4. The landscape amplitude does not collapse: across-composition sd of the score stays within x0.5-2, because the shortcut is itself composition-dependent. What falls by 3x or more is the ratio learn-step / landscape-sd — the fraction of the surface a lesson can move.

Falsified if from_other < 0.3 x from_kc on the whole brain AND the learn-step ratio is above 0.7. Then the recurrence is not the path either, and what is left is the reward side: reward_scale, learn_head's normalisation, or the walkers' temperature against a landscape whose amplitude I will have measured by then. If instead prediction 4 fails downward — the sd collapses by 5x or more — a second mechanism is live: steps become coin-flips against the Metropolis temperature, and both must be fixed.

EXPERIMENTS.md · lines 9578–9591

E154, a measurement withdrawn before its result is read. The learnability stage in readout_under_recurrence.py calls learn_head once and reports the score change. It will report exactly 0 on both assets, and that number is the design, not the circuit: learn_head standardises the reward and the score against a running trace and, on the first call, if t["n"] < 2: return 0.0 — no weight moves until there is a baseline to form an error against. One lesson is always a no-op; the generator only learns from the second observation on. The other five stages of that script do not touch learning and stand.

Replaced by scripts/brain/learnability_probe.py: warm the trace with two observations at other compositions (rewards 0 and 1, so both standard deviations are nonzero), then for eight fixed compositions apply one unit-reward lesson, take the plastic-weight norm learn_head returns and the score change, and restore the weights and trace between compositions. The quantity prediction 3 refers to is the mean |score change| per lesson divided by the across-composition score sd measured in the same run. Prediction 3 itself is unchanged.

EXPERIMENTS.md · lines 9593–9600

E154, an observation logged without a claim. In the direct probe on the mushroom asset, cache["pre"] — the state one step before the readout, and the eligibility learn_head multiplies the lesson by — had 839 of 4,064 Kenyon cells active (20.6%) at a Dirichlet composition, against sparsity_target=0.10. The calibration targets _kc_input on a probe distribution (probe_space, the ladder's HEASpace), and a Dirichlet draw is not that distribution, so this may be nothing more than an off-distribution point. It may also mean the evoked code is twice as dense as the number the search was tuned to. Not this hour's question; it is recorded so it is not rediscovered.

EXPERIMENTS.md · lines 9602–9649

E154 result, five stages of six — the readout under recurrence, mushroom body against whole brain, seed 0, the same 64 compositions, stage_b's construction.

quantity                          mushroom (5,311)   whole brain (164,506)   ratio
MBON in-degree, count                    685.5             883.8              1.29
KC share of MBON input, by count         0.920             0.714              0.78
KC share of MBON input, by weight        0.865             0.657              0.76
MBON current from Kenyon cells           0.00231           0.000849           0.37
MBON current from everything else        0.00719           0.00416            0.58
  other / KC                             3.11              4.90               1.58
|h[MBON]|                                0.00635           0.00381            0.60
score, across-composition sd             0.000426          0.000254           0.60
sum |w| over all edges                   1,024             26,242             25.6

Prediction 1 — half right, and the wrong half is the interesting one. On the whole brain the non-KC current into the MBONs is 4.9x the KC current, comfortably past the ">= 1" I predicted. But on the mushroom asset it is 3.1x, not "under 0.3". The shortcut around the plastic path is not something the whole brain introduces; it already carries three quarters of the readout in the subset the search works on. Only 24% of the MBON current on the mushroom asset arrives through synapses learning can touch; the whole brain lowers that to 17%. The 8% of MBON inputs that are not Kenyon cells outweigh the 92% that are, because the Kenyon code is sparse and rectified and its weights were shrunk to bound the recurrence, while the projection neurons, the other MBONs and the dopaminergic cells are dense.

Prediction 2 — falsified on magnitude. The KC share by weight falls (0.865 → 0.657) but nowhere near "below 0.4", and MBON in-degree grows x1.29, not "several times". Direction right, size wrong by about a factor of four. The whole brain's extra edges into the MBONs are fewer and lighter than I assumed.

Prediction 3, the saturation half — falsified in the opposite direction. |h[MBON]| is smaller on the whole brain (x0.60), and at 0.004-0.006 on both assets the readout sits deep in tanh's linear range. Nothing is saturating anywhere. The learnable current does fall, to x0.37, but by shrinkage, not by squashing. The lesson-size half of prediction 3 waits on the warmed probe.

Prediction 4a — confirmed. The landscape amplitude is x0.60, inside the x0.5-2 I gave. With temperature = 0 the walkers are greedy, so amplitude alone changes no decision; only ties would, and a sd of 2.5e-4 on scores of order 2e-3 is well above float resolution.

Where this leaves the 10x. Every whole-brain effect measured here is a factor between 0.37 and 0.78 — shrinkage of the readout, a further tilt toward the unlearnable shortcut — and they compound to roughly x2-2.5 on the share of the landscape a lesson can move, not x10. Either the warmed learnability probe (chained, running) shows a lesson moving the score far less than the current ratio implies, or the remaining factor is not in forward at all and the next place is how a lesson's size is set — learn_head standardises reward and score against running traces, so a smaller score spread makes the same reward look like a larger error, which is a compensation this analysis has not accounted for and which could cut either way.

EXPERIMENTS.md · lines 9651–9667

E154 result, stage six — the warmed learnability probe, and the verdict.

quantity                                   mushroom     whole brain    ratio
plastic-weight norm per unit-reward lesson  0.02071      0.01372        0.66
|score change| per lesson, mean of 8        1.99e-4      7.30e-5        0.37
score sd across compositions                4.26e-4      2.54e-4        0.60
lesson / landscape                          0.468        0.287          0.61

Prediction 3, lesson half — falsified, narrowly and for the wrong reason. I said "at most 0.3x"; it is 0.37x, and it is 0.37 because that is the KC→MBON current ratio to three figures — a lesson's effect on the score scales with the gain of the one plastic path and with nothing else. The mechanism I gave — two shrunken hops plus a readout pushed onto tanh's flat end — was half wrong: nothing saturates. The weight change itself is x0.66, which is the Kenyon eligibility pre[KC] at E153's x0.68; the standardised error is the same size on both assets because learn_head divides reward and score by their own running spreads.

Prediction 4b — falsified. Lesson-over-landscape falls by 1.6x, not "3x or more".

EXPERIMENTS.md · lines 9669–9699

E154 verdict. The whole brain reaches the readout through the recurrence, as predicted, and every effect measured is real: MBON current from Kenyon cells x0.37, from everything else x0.58, landscape x0.60, lesson x0.37, lesson-over-landscape x0.61. Compounded, that is a factor of two to three on how effectively the generator learns, and it is not ten. With temperature = 0 the walkers are greedy, so none of these scale factors changes a single accept/reject decision on its own. The readout is not where the order of magnitude lives.

The finding that outranks the question asked. On the mushroom asset — the substrate every result before E140 was measured on — 76% of the MBON current arrives through synapses learning cannot touch (other/KC = 3.11), and on the whole brain 83%. The generator's lessons act on a quarter of its own readout. That was true throughout, is independent of the substrate question, and is the first thing this measurement says about the model itself.

Two branches open, and they are different repairs.

  1. The walk. A x2.5 loss in climb rate does not have to give x2.5 fewer finds: a find is a threshold crossing (p >= 0.832, driving force below -40 meV/atom) inside 200 rounds, and a count of crossings is a steep function of how fast walkers reach the bar. The measurement is the walk's own statistics on the two landscapes, first without learning — acceptance rate, stalls, relocations, distance travelled — then with. If the whole-brain walkers stall and relocate at a much higher rate on a landscape whose gradient direction is rougher, the remaining factor is there and the repair is in Forager (patience, step size), not in the brain.
  2. The shortcut. Whatever the walk shows, a readout three quarters of which is fixed is a design defect: the plastic path should carry the readout, and the PN/DAN/MBON→MBON current should be a minority. That repair is in MushroomBody — which sources the readout sums, or how the non-plastic input into the MBONs is normalised against the plastic — and it would help both substrates.

Branch 1 is the next measurement because it is cheap and settles whether branch 2 is the whole story. Prediction for it goes in before it runs, next hour.

EXPERIMENTS.md · lines 9701–9713

E154 gate: 241 passed, 2 skipped (876 s). Nothing under forager/ changed in E153 or E154 — two instrumentation scripts under scripts/brain/ and the rebuilt data/malecns_mushroom.* asset — so an unchanged count is the expected outcome, not a check that passed.

Record repair — double-valued entry numbers. E149 and E150 each labelled two experiments: the daytime cluster-expansion entries (E149 training-set halves, E150 label correction, E151 label gate) and the overnight fly-substrate entries written after them. The later block is renumbered — control E148→E152, gain E149→E153, readout E150→E154, the planned walk E151→E155 — in this file, OVERNIGHT.md and the scripts/brain/ docstrings. Run artefacts keep their names: runs/e148_smallbrain_control.log is E152, runs/e149_gain*.log E153, runs/e150_readout.* and runs/e150_learnability.* E154. Renaming checkpoints would break the resume-never-restart rule for nothing.

Related entries

Built with PRISMWebsite and visualizations made using Claude