Evolving Agents Labs

Evolving Agents Labs/COCLEA-SR

A hypothesis from 1995, and the system that told its author he was wrong

The workload that makes ai-os real — and the one place where the wrongness is the recorded output rather than a story told afterwards.

A biophysics hypothesis carried for thirty years was taken end to end on this system: posed as mathematics, simulated, found to rest on a wrong model, repaired against a condition registered before the repair, measured, bounded — and then turned into falsifiable statements about ear disease and its treatment. 26 gates, 125 checks, all green.

The claim being tested here is not that agents did science. It is narrower and it is checkable: that a system with independently generated truth and eval-gated promotion can carry a real research question through the stage where the question's own author was wrong.

The question

Near the threshold of hearing, the mechanical signal is extraordinarily small — too small, sometimes, to trip the detector that turns motion into a nerve impulse. Normally noise makes that worse. In a nonlinear system with a threshold it can do the opposite: add a little and the combination of signal plus noise occasionally crosses; if those crossings stay correlated with the signal's phase, information that was invisible becomes detectable. Add more and it drowns. Detection against noise therefore has an interior optimum. This is stochastic resonance, and the 1995 question was whether the ear uses it.

Why the answer had to be hostile

Handing an old hypothesis to a language model and receiving a beautiful graph confirming it teaches nothing. Models are extraordinarily good at internally coherent stories. What was needed was a system capable of saying your code is wrong, or worse, your model is wrong.

The mechanism is one directory rule:

truth/ must not import src/.

Closed forms in sympy and mpmath live in truth/. The solver lives in src/. A gate compares one against the other, so the value a gate checks against cannot be produced by the code under test. Four words of policy, and the load-bearing structure of the entire project — because they are what makes a green gate mean something other than self-consistency.

gatechecked againstmeasured
uniform eigenvaluesω_n = (2n−1)πc/2L9.28e-6
exponential profileroots of tan βL = −2β/α2.31e-6
stochastic variancethe Lyapunov solutionwithin sampling error
the SR optimum, 0-DRice's crossing rate, σ_opt = θ/29.5%
transmission lineP = sin(k(1−x))/sin(k)7.3e-7, order 2.00
power balanceinflux at the stapes = dissipationresidual 4.3e-8

None of those is negotiable through language. Conservation of energy does not care how persuasive an agent is.

And then it said the model was wrong

The first operator was close to the original 1995 idea: a graded string, the membrane's own tension carrying the wave. Elegant. Several low-level gates passed on it. And the traveling wave died before reaching the place the same model said it should peak — measured, the response fell twenty-eight orders of magnitude before arriving.

The cause was a sign no parameter choice can move. In a string the membrane impedance sits in the numerator of the local wavenumber, so the wave is blocked exactly where the membrane is stiff — which is where it has to enter. A fluid transmission line puts the same impedance in the denominator, and then the signs come out right for the physical reason: propagating basal to the characteristic place, wavelength collapsing at it, evanescent apical to it. Békésy's peak as a consequence rather than an input.

Three things about how that went, and each is now a rule. The acceptance condition was written before the replacement was built. The redesigns were counted — three model changes in one session, each moving the instrument closer to the answer it wanted; the third is where you stop and record the falsification rather than take a fourth. And the alternative is what the rule exists to prevent: had the inverted wave been found after the stochastic layer was built on top of it, every number above it would have been void.

Only then, the result

Stochastic resonance is there, and it is where the theory says. Three drive frequencies, eight positions, noise swept at each: SNR against noise shows an interior maximum whose 95% interval clears both ends of the grid — 24 curves of 24. The optimum sits at 11.6% of the parameter-free prediction σ_opt = θ/2, which is half a grid spacing: matched to the instrument's resolution. Every free quantity cancels out of that prediction, so there is nothing left to tune into agreement.

The two boundaries are worth more than the result. Bridging to auditory-nerve physiology, the regime is reachable only up to a characteristic frequency of about 1 kHz. And the passive membrane's sharpness is Q 2.2–2.7, where a living cochlea is far more selective — a gap reported rather than tuned away, and the quantitative argument for the active layer.

So the hypothesis did not come back as "it was right". It came back as "here is the regime where the mechanism survives, and here is where this model says it should not". A boundary is another experiment.

The part nobody was aiming at: a therapeutic surface

The string had two knobs — the membrane's own tension and mass. No intervention reaches either. The transmission line put the fluid inside the operator: scala geometry, entrained mass, viscous loss. Fluid is precisely what a diuretic or an osmotic agent acts on. The active layer added the distance to the Hopf bifurcation, which salicylate and furosemide already move in humans, reversibly, today. The threshold detector added a synaptic threshold.

A falsified model was replaced by one with a therapeutic surface. The falsification bought the section.

The rule is that a pathology is a transform on parameters the model already has and nothing else — no new term, no new equation, no fitted constant. A lesion with every default is a healthy cochlea, so a lesion is literally the diff. Read the table by its zeros: what identifies a lesion is not the column that moved but the five that did not.

lesionknobplace mapQsensitivitycompressionkneeoptimal noiseself-oscillates
healthy1.0001.0000 dB0.3650.00280.500no
conductivedrive1.0001.000−20.0 dB0.3650.00280.500no
outer hair cell lossμH1.0001.0000 dB0.8110.3540.500no
prestin blockμH1.0001.0000 dB0.6380.0890.500no
endolymphatic hydropsβ, S, M1.1171.056−3.9 dB0.3650.00280.500no
synaptopathyθ1.0001.0000 dB0.3650.00280.900no
past the bifurcationμH > 01.0001.0000 dB0.500yes

The discrimination is itself gated, and the interesting part is the two checks that make the first one mean anything. Six distinct signatures of seven. A lesion that changes nothing reproduces the reference to 0.0 in every component — without that, "these differ" could be solver drift. And no single observable separates the catalogue: the best column has 3 distinct values out of 7, so the pattern is load-bearing rather than decorative. Probed rather than assumed — de-lesion the hydrops and it collapses onto healthy and the gate goes red.

The one collision is asserted, not excluded. Hair-cell loss and prestin block share a sign pattern because they are one axis at two depths, and no single-instant measurement separates two points on one axis. A gate that quietly dropped the pair would pass equally well on a model that had collapsed all seven lesions onto one knob — which is the failure the gate exists to catch.

What the model then says about treatment

Four directions, each with a falsifier and each with a normative "what the model cannot say" field: without that field, the direction does not publish. The cheapest needs no new therapy at all. Gain and the compression knee move with different powers of the same parameter|μ|⁻¹ against |μ|^(3/2) — so a tenfold retreat from criticality costs 20 dB of threshold but moves the knee 31.6×. The knee is 1.5× more sensitive in log terms, and the input/output slope of a distortion-product emission is a standard clinic measurement. The model says an ototoxicity monitoring protocol should watch the slope, not the audiogram. That is a claim a clinician can attack with data that already exists.

And the hazard, which is the clearest reason a mechanism was worth building: every amplifier-restoring therapy pushes the system toward the bifurcation, and past it the oscillator runs with no input at all — spontaneous emission, and the tonal tinnitus that sometimes accompanies it.

The target is a point the treatment must approach and must not cross, and the failure mode on the far side is a symptom, not an absence of benefit. A model fitted to outcomes could not say that, because the failure lives on the far side of a boundary the data would not contain.

Who did what

Eight roles, separated on purpose: a Deriver producing independent analytic references, a Builder implementing solvers, a Math Verifier and a Statistical Verifier attacking from different directions, Explorers sweeping, a Literature role comparing against physiology, a Synthesizer, and an Auditor on provenance. If the same code generates a result and verifies it, what is being measured is self-consistency.

But the division of labour that actually mattered was not agent against agent. Agents were good at deriving closed forms, writing solvers, sweeping parameters, and diagnosing numerical causes — a boundary treatment that fails to halve a control volume at a free end is exactly what a model catches quickly and a person misses at 2am. Agents were repeatedly bad at noticing that a gate could not fail, that a benchmark's baseline already sat at the ceiling, or that a redesign had become result-seeking. Every one of nine instrument failures was caught by running something and distrusting the number, never by an agent reading its own design.

The human contribution no arrangement of agents replaced was refusing the plausible result: stopping when the plots looked physiological but the wave ran the wrong way, and deciding that a falsification was the output rather than a setback.

What this does not show

The cochlea has not been shown to use stochastic resonance. A computational model cannot establish that. What the experiment shows is that the mechanism survives inside this model, reproduces the pre-registered signature, and generates predictions comparable with physiology.

No claim here has been compared against patient data. The treatment section is a set of model-derived hypotheses. The healthy operating point is a posit with no derivation, two of the seven lesions are parameterised by hand, and the model already disagrees with the clinic in at least one place we could find — it sharpens tuning under hydrops where Ménière's broadens it. All three are written into the project rather than footnoted.

The usual argument for gates is weaker than we assumed, and we found that out ourselves. A companion project tested whether a frontier model can catch fabricated and subtly defective physics results. It caught all of them — twelve blatant fabrications and nine subtle numerical defects — naming causes at the level of "the boundary treatment at the free end fails to halve the control volume". So "the model cannot tell" is not why gates exist. What survives is narrower: a model can judge a task but cannot generate one with a known answer, because you cannot create truth by asserting it — and a judge that is right every time still hands you no ledger, no freeze and no reproduction command.

Our own ratio experiment came back null. Ten flows, forty agent claims, three different mixes of exploring and verifying agents: 100% accurate in every arm, zero corrections, 0% dissent per verifier. Verification bought nothing because nothing was ever wrong — the entire spread across every agent was 0.034 against a tolerance of 0.25.

The task was built so that reasoning from the code's own docstrings gives the wrong answer and measuring gives the right one. Forty out of forty measured. Mildly encouraging about the model; fatal for the experiment. The baseline sat at the ceiling, so every arm tied — and a tie reads as a result.

The rule that would have caught it is written in this repository's own contributor guide: check headroom before building the treatment, never after. One cheap control flow, run before the other nine were bought, would have said so. Writing a rule down is not the same as applying it, and that is the most useful thing the experiment produced.

The artefact is executable

Every accepted run records its parameters, seed, code state and dependency hashes. Artefact transitions go into an append-only hash-chained ledger. Figures carry their run id, result hash and commit in the PNG's own metadata. Run directories are content-addressed, so a re-run with different numbers cannot overwrite an attested one.

This does not solve the replication crisis. It points at a different question:

What if reproducibility were a property of the instrument rather than a promise made after the experiment?

Today the final artefact of science is a paper, and the code, seeds, rejected models and intermediate decisions live somewhere else if they survive at all. For computational science there is no reason that has to remain true. The artefact can be executable — hypothesis, assumptions, derivations, implementation, the implementations that were rejected, the gates, the raw runs, the seeds, the provenance chain, and the exact path by which a claim became accepted. A reviewer would not only read the conclusion. They could rebuild it.

The full write-up → Pathologies Repository