Lifetime neural plasticity
An organism's weights are not fixed at birth. A reward-modulated Hebbian rule with eligibility traces adjusts them every tick it is alive, at a rate the organism itself inherited. The mechanism demonstrably works. Two pre-registered tests looking for its behavioural consequences found nothing. Both of those sentences are true, and this page is about why.
What actually changes
Each organism carries two weight vectors of the same shape. One is inherited and fixed for life. The other starts at exactly zero at birth and changes every tick. What the network actually computes with is their sum, with the acquired half multiplied by a scale the organism also inherited:
| State | Inherited? | Changes during life? | At birth |
|---|---|---|---|
W_genetic, 2,081 numbers | Yes, a mutated copy of the parent's | No | Copied and mutated |
W_plastic, 2,072 numbers | No, never copied from the parent | Yes, every tick | Set to exactly zero |
elig_trace, 2,072 numbers | No | Yes, every tick | Set to exactly zero |
h_recurrent, 24 numbers | No | Yes, every tick, but by no learning rule | Set to exactly zero |
| Physical genome, 19 genes | Yes, a mutated copy | No | Copied and mutated |
Nothing an organism acquires is passed to its offspring. There is no code path that copies
W_plastic at birth, and the array is explicitly zeroed. Whatever an organism's
lifetime adjusted, dies with it. This is a design decision, not an oversight: the alternative
would be inheritance of acquired characteristics, which would be a substantially different and
much stronger claim to be making.
The update rule
The rule is reward-modulated Hebbian learning with eligibility traces. It runs once per tick, per living organism, in its own stage of the tick loop, after the action has been taken and the physiological consequences have landed.
el.neural.update_plasticity. Eligibility is clipped at
20.0 and acquired weight at 2.0, both numerical safety
rails rather than meaningful bounds.
The eligibility trace is the standard answer to a real timing problem. A connection that was active now might only turn out to have been useful several ticks later, and by then the activity that caused it is gone. The trace holds a decaying record of which connections were recently co-active, so a reward arriving later can still find them. This idea is well established in both reinforcement learning and in models of biologically plausible plasticity; what is specific to this project is the exact form above and the fact that the decay constant is inherited rather than chosen.
Where the reward signal comes from
There is no task reward anywhere in this simulation. Nothing gives an organism plus one for eating. The modulating signal is built entirely out of changes in the organism's own physiological state, weighted by four numbers that are themselves genes:
Evolution is therefore free to discover that rising energy is reinforcing. It is equally free to discover that it is not, or that injury is, or that all four weights should sit near zero and the whole mechanism should stay quiet. The founder's four weights are small arbitrary draws rather than a sensible starting guess, deliberately: there is no principled neutral direction for what should reinforce an organism, and forcing them to zero would have given every founder a degenerate signal of exactly zero until mutation happened to act.
One of those four inputs was structurally always zero when the mechanism shipped: nothing in the world could injure an organism yet. Two phases later, thermal injury gave the damage term its first real producer. No reinforcement code was touched. A real signal simply started arriving where a zero used to.
The learning genes
Three scalars govern how an organism learns, and all three are inherited and mutated like any other parameter. Evolution decides how fast an organism learns and how much acquired change counts. No researcher tuned these per organism, and no organism has the same values as another except by descent.
| Gene | Squashed into | What it controls |
|---|---|---|
learning_rate | 0 to 0.05 | How large each tick's adjustment is |
plasticity_scale | 0 to 1.0 | How much the acquired weights count when the network runs |
elig_decay | 0 to 0.95 | How long a connection stays eligible after being active |
| 4 reinforcement weights | unsquashed, like any weight | What the organism treats as reinforcing |
What it costs, and when
Running the machinery costs a flat amount per tick. Actually changing weights costs more, in proportion to how much they changed. Both are charged in the metabolic stage like any other cost.
The second term is charged one tick late, and the reason is a genuine engineering constraint rather than a biological analogy: the size of this tick's change is not known until this tick's update has run, and charging for it in the same tick would make the cost depend on a quantity that depends on the cost. So the magnitude is written down when it happens and billed on the next tick. It is a small example of computation order shaping a mechanism that otherwise looks purely biological.
The evidence, honestly
This is where a project could quietly stop describing and start implying. Two pre-registered tests looked for a population-level behavioural effect from lifetime plasticity. Neither found one.
First test, 6 seeds at a reduced world scale, comparing plasticity on against plasticity off on a per-organism early-versus-late behavioural metric: no statistically detectable difference, p = 0.622 at the shipped costs and p = 0.919 at zero cost, against a pre-registered threshold of 0.05.
Replication, 8 seeds at the canonical world scale with roughly eight times the sample and a second metric added: no statistically detectable difference either, p = 0.453 on the primary metric and p = 0.185 on the secondary. Sample sizes exceeded the pre-registered minimum by 340 to 520 times, so this is a null result at adequate power rather than an inconclusive one.
A separate measurement, run by a different method with no hypothesis test attached, asked a much narrower question: does including an organism's acquired weights change what its network outputs, right now, on its real current inputs? It does.
Across 2,204 sampled organism-and-tick states, per-channel differences in the squashed output ranged from 0.00018 to 0.00060. The discretised ingest decision flipped in 0.136% of sampled states, horizontal movement in 0.091%, vertical movement in 0.272%. An organism's own accumulated acquired-weight magnitude correlated at r = 0.90 with the size of the resulting difference, which is the mechanistic relationship the measurement should show if it is measuring what it claims to.
How to read this
The weights change. That change moves the outputs. But at the learning rates and plasticity scales the population actually evolved to, the resulting perturbation flips a discrete decision roughly once in a thousand states, which is far below what the two population-level metrics could resolve.
The project's own wording is worth using rather than paraphrasing: this is consistent with an effect too small for these population-level metrics to detect, rather than no effect at all.
What cannot be said: that organisms learn. What equally cannot be said: that lifetime plasticity does nothing. The tests that would settle either are not the tests that were run, and the ones that were run came back null. The full write-up, including everything these designs cannot rule out, is RN-002.
Nothing was changed in response. The stated reason is that this world provides too few meaningful multi-step relationships for a richer test to be worth building before organisms have more to learn about. That is a judgement, it is recorded as one, and it is still open.
Watch it on a real organism
Select any organism in the live world and open the learning section of its controller panel. It shows that individual's own inherited learning rate, plasticity scale and trace decay, its four reinforcement weights, how far its acquired weights have moved from the zero they started at, and the same with-and-without comparison described above, computed live for that organism on this tick.