A measurement study → two fixes → all green

From partially working to fully working.

A blank reasoner was taught to tell animals apart on its own. In a simple world it succeeded — but when the world got richer, it broke. This is the journey from there to here: what the study tested, what broke, and how each fix turned a red column green.

5
worlds tested
2
defects diagnosed
2
minimal fixes
5 / 5
worlds now green

What the study was about

Before the results make sense, here's the setup — in plain terms.

A blank reasoner learns creatures the way a child might — no labels, no teacher. It has to discover the categories from raw experience, fed in developmental stages:

newborn · a few varied glimpses toddler · flooded with dogs & birds (no cats yet) 💤 sleep · consolidate child · cats appear alongside dogs 💤 sleep

The hard part isn't memorising — it's working out on its own what tells two look-alike animals apart (a cat and a dog share four legs and fur; only their sound differs), and refining "dog" into "dog vs cat" without forgetting either — all while staying honest about creatures it hasn't been taught.

What it targeted. An earlier result showed this discovery worked — but only in a hand-built world with one clean give-away. This study asked the harder question: does the discovery still work when the world is richer and messier? Each of the five worlds below makes it harder in a different, deliberate way.

The five worlds

Every world holds the same five creatures (dog, cat, bird, fish, reptile). What changes is how a cat can be told from a dog — each world stresses one way reality is harder than a single clean signal. The short codes (rich_r1 …) are just the labels used in the data and the dashboard.

One clean signal baseline

The original 4-feature world. Cat and dog differ on exactly one thing — sound (meow vs bark); everything else (four legs, fur) is shared.

The control — what the mechanism was originally built to handle.

Redundant signals rich_r1

Adds three more clean give-aways — whiskers, eye-shape, head-shape — so cat and dog now differ in several ways at once.

Does more clean evidence help, or overwhelm the discovery?

A misleading signal rich_decoy

Adds a feature (girth) that tracks the creature's random body size, not its identity — a decoy that rides on noise.

Can it tell a real cue from one that merely correlates with randomness?

A signal that varies within a kind rich_r2

Dogs come in two head shapes — long, and short/flat like a pug — a real trait that differs within the dog kind itself.

Can it tolerate a feature that isn't constant for one concept?

An imperfect signal rich_r3

Whiskers usually mean cat — but some dogs have them too. The messy, partial correlation real data actually has.

Is it robust to noisy evidence?

Why five?

Isolating one difficulty per world is what let the study prove the two defects were independent — watch the misleading-signal world stay broken after the first fix, in the matrix below.

The evolution, at a glance

Each row is one world; each column is a moment in time. A cell shows that world's four coherence checks as coloured dots ( pass, fail), in the fixed order 1·2·3·4 explained below. Read left-to-right and watch the red turn green as each fix lands.

world ① Original studyunfixed mechanismwhere we started ② After fix #1record-time merge cap · PR #18over-merged worlds separate again ③ After fix #22nd-highest-MI importance · PR #19the decoy stops masquerading
One clean signalbaseline · the control 4/4 4/4 4/4
Redundant signalsrich_r1 2/4 ✓ recovered 4/4
Varies within a kindrich_r2 3/4 ✓ recovered 4/4
Imperfect signalrich_r3 · never broke 4/4 4/4 4/4
A misleading signalrich_decoy 2/4 2/4 ✓ recovered
check passes check fails 5 failing checks (across 3 worlds) → 0.
1 · no-forgetting — after learning dog then meeting cat, does it still recognise dog?
2 · refinement — does it see cat as different from dog, not lump them together?
3 · honest-uncertainty — shown a never-taught creature, does it say "not sure" instead of guessing?
4 · generalization — does a never-seen variation of dog still register as a dog?
① Start Three of the five worlds break — the two clean-enrichment worlds and the misleading-signal one. Two separate causes, diagnosed rather than guessed.
② After fix #1 The merge-cap stops richer concepts being squashed into one blob before discovery runs, so Redundant signals and Varies-within-a-kind recover. The misleading-signal world is untouched — proof it's a different cause.
③ After fix #2 The importance fix stops a noise-correlated feature masquerading as a real one, so A misleading signal recovers. Every world green.

Note: this is the single-neuron discovery point, where the enrichment defects live. Scattered failures at network scale (many neurons learning together) are a separate, earlier scaling result — not what these two fixes address. The full per-scale grid is in the live dashboard.

Three stages of the journey

Measure first, understand the cause, then make the smallest change that fixes it — and re-measure honestly at every step.

① Original study

Enrichment broke it

the honest, surprising finding

Adding clean, redundant signals (Redundant signals) and a size-confounded decoy (A misleading signal) broke coherence. The mechanism didn't survive richer worlds — inverting the hypothesis. Two distinct root causes were diagnosed, not asserted.

Learned: a single clean signal was near the mechanism's ceiling, not a point in a space it generalized over. "Does not survive" became a to-do list, not a verdict.
② Fix #1 · PR #18

The merge collapse

record-time merge cap

As it filed away new sightings, the reasoner merged near-identical ones. With more features, two same-kind animals that differed only on random traits got merged into a single blob — before discovery could run. A cap on how different a merge tolerates fixed it: Redundant signals and Varies-within-a-kind recovered. The decoy stayed broken.

Learned: the decoy staying broken proved the two defects were genuinely independent — the first fix couldn't mask the second.
③ Fix #2 · PR #19

The confounded metric

2nd-highest-MI importance

The reasoner rated a feature "important" if it correlated with any other feature — so the size-tracking decoy, which mirrored the random body-size trait, was promoted like a real cue. Requiring a second corroborating witness demoted it — A misleading signal recovered. All green.

Learned: identity is a block of mutually-corroborating features; a decoy has just one partner. Requiring a second witness tells them apart.

The adjustments made

Both fixes are small, surgical, and monotone in spirit — each designed with diagnostics on the live code and shipped with a measured blast radius (the control world stayed 4/4, every asserting test green).

Fix #1 — coverage-normalized merge cap core/novelty.py

Two sightings merge only when they differ on at most one feature — AND-ed onto the existing similarity gate, so the change can only ever remove a merge.

The old rule tolerated more differing features as the feature count grew, so enrichment let same-kind animals differing only on random traits collapse into one entry, starving the part that discovers boundaries. An absolute cap doesn't grow with feature count.

Redundant signals 2/44/4 Varies-within 3/44/4

Fix #2 — 2nd-highest-MI importance sub_systems/feature_importance.py

A feature's importance is now its second-strongest correlation with any other feature, not its strongest.

The strongest-only rule promoted a feature for correlating with anything — including a random trait. The size-tracking decoy correlated strongly with body size and cleared the bar. A genuine identity cue corroborates with a whole block of features, so its second-strongest stays high; a lone-partner decoy's collapses.

decoy "looks important"demoted below bar A misleading signal 2/44/4

Learnings taken

What the journey taught — beyond the two patches.