UNI-FLAGELLUM — the architecture

The biological programme, end to end: where the data comes from, what the models are, how they are scored, and which gates stand. Everything below was read from the code and the machine-readable result files, and the runnable parts were executed to confirm they still reproduce.

Standing result: the mechanism loses to a two-parameter curve.

On the only real held-out E. coli data in this estate, a plain lognormal out-predicts our two-timescale mechanism and every mechanistic candidate. Every contrast interval crosses zero, so the honest word is NOT_ESTABLISHED — not "refuted", and never "equivalent".

Full biological parity is FALSE. Cross-lab transfer tests: 0. Discriminating interventions: 0. Independent laboratories: 0.

1 · The three — settled from the code

Not a guess. The released pipeline scores our model against exactly three named rivals, and the object holding them has exactly three keys.

lib/observed-experiment.js:325-329 pairedMixtureAdvantageNatsPerEvent { mixtureVsExponential, // vs the memoryless null mixtureVsWeibull, // vs a shape-only survival model mixtureVsLognormal // vs the heavy-tailed adversary }

The three are the rivals our model must beat. The two-timescale mixture is the fourth because it is ours — you do not beat yourself.

M2 · lognormal

3.4093
2 parameters. Currently wins. Heavy-tailed, no mechanism at all.

M1 · Weibull

3.4333
1 free shape. Also the τ→0 nesting limit of our own hierarchy.

M0 · exponential

3.5480
The memoryless null. Parameter-free. The floor everything must clear.

M3 · UNI two-timescale

3.4343
Ours. A mixture of a fast and a slow exponential — the mechanistic claim.

Motor-equal negative log predictive density on the seconds scale, 19 held-out motors, lower is better. Our model places 4th of 4.

2 · The whole pipeline

1 · OBSERVED DATA Wadhwa 2022 · E. coli single-motor stator dwell times 129 motors · 1349 events tethered cell, 0.02 s sampling raw .mat pinned by sha256 the ONE world process here 2 · FROZEN SPLIT holdout ⇔ sha256(motorId)    mod 5 == 0 TRAIN 80 motors / 793 ev HOLDOUT 19 motors / 233 ev never recomputed · halts on any per-event mismatch 3 · THE COMPETITION M2 lognormal   3.4093 ← wins M8 empirical KDE 3.4225 F  motor-stack   3.4327 M1 Weibull      3.4333 M3 two-timescale 3.4343 ← ours M0 exponential   3.5480 4 · SCORING motor-equal NLPD unit = the MOTOR, never the event paired cluster bootstrap floor 0.042 nats below it ⇒ NOT_ESTABLISHED 5 · GATES G00–G13 science X01–X16 cross-study G1–G9 H-AIF P0–P8 ladder P8 = FALSE conjunctive MECHANISTIC LAYER — fitted to source aggregates, separate from the duration race D–L–T first-passage survival (the paper's own equation, re-implemented twice) M_GMC non-equilibrium switching · M_LATTICE13 occupancy · M_RFT propulsion these carry the biology; they are scored against SOURCE aggregates, not the holdout RELEASED JS MODEL (the lab UI) world → observation boundary → active-inference agent NO biological score: never imported by any scorer constants UNSOURCED (180 pN·nm, 18k rpm, Hill n=6) its only gate, G10 causal identity, is NOT_ESTABLISHED OUTSIDE THE REPO P4 transfer · needs a second lab's cohort P5 intervention · needs a wet-lab experiment P7 replication · needs an independent lab SPENT AND BURNED EVIDENCE — this constrains what any new result can claim The holdout DURATION channel is legitimately spent (used by the frozen competition). The holdout MARK channel (next state / direction / jump) was irreversibly BURNED on 2026-07-21 — it can never carry a prospective claim on this dataset again.

3 · What is actually runnable today — verified, not assumed

All of it runs. Nothing here is blocked on missing code. What is missing is evidence, not runnability.

The duration competition (Python)

cd UNI-FLAGELLUM/hierarchical-aif python -m pytest tests/motor_stack_aif -q

577 tests. The full F-side competition re-runs end to end in ~21 s and reproduces every frozen number to the last digit. Verified today.

The released JS analysis

cd UNI-FLAGELLUM npm run experiment:verify # the three-rival comparison npm run science:verify # independent JS oracle node --test tests/ # 21 invariant tests

Reproduces every frozen number in-memory. Verified today.

The gate boards

npm run science:run # G00–G13 npm run cross-study:run # X01–X16 npm run science:verify npm run cross-study:verify

Deterministic: running twice must produce byte-identical report and audit files, or the run is rejected.

HAZARD — read before running anything. The frozen evidence baseline pins 250 files under phase-c and phase-d and zero under phase-b. So python audits/phase-b/b3-model-competition-runner.py --run would silently overwrite the frozen competition record with no guard firing — only git diff would catch it. If the competition is re-run it must be run with --out to a new path, never bare.

4 · The gates, as the machines report them

Science gates · G00–G13

PASS 4 FAIL 3 SOURCE_ONLY 1 NOT_ESTABLISHED 1 BLOCKED_EXTERNAL 5

G03 the published parameter vector does not reproduce the article's own figure arrays · G05 only 2 of 3 parameter-recovery replicates pass · G06 the mechanism does not beat memoryless out-of-sample (interval crosses zero)

Cross-study gates · X01–X16

PASS 8 FAIL 3 NOT_ESTABLISHED 2 BLOCKED_EXTERNAL 3

X06 the 13-site lattice gives incompatible interaction strengths from distributions vs moments · X11 the lattice is not resolved molecular geometry · X16 full biological parity = FAIL

rungwhat it demandsstatus
P0computational integrity — hashes, determinismHOLDS
P1equations match implementationHOLDS*
P2observational — real recorded measurementsLIMITED
P3held-out predictionDONE — AND THE MECHANISM LOST
P4transfer — parameters frozen on one lab predict another's raw dataFIRST UNSATISFIED · 0 tests
P5intervention — does a bacterium actually infer?0 interventions
P6structural / mechanistic identitySCOPED · X11 FAIL
P7independent replication0 laboratories
P8the conjunction of all of the aboveFALSE

5 · What "model the three fully and run them" concretely means

All four models already exist and already run. So "fully" cannot mean "write them" — it means strengthen the comparison until the result is decisive rather than inconclusive. Concretely, three things, in order:

#actwhy it is the honest next step
1Re-run the competition to a new output path and confirm the frozen numbers still reproduce, without touching the frozen recordestablishes the baseline is live rather than quoted — everything I told you today was copied from July
2Make the comparison decisive: every contrast currently crosses zero at 19 holdout motors. Compute the motor count at which a 0.042-nat difference resolves, from a real-data power analysis — never chosen after seeing an interval"underpowered" is not "equivalent". Right now we cannot tell whether the mechanism loses or we cannot see
3Fix the two verified defects in the released agent: its free energy is vacuous (the identity it tests is true by construction) and its expected free energy double-weights ambiguityboth confirmed numerically today; the second changes which action it picks
What none of it can do. No amount of re-running moves P4, P5 or P7. Those need a second laboratory's cohort, a wet-lab intervention, and an independent replication respectively. That is the whole content of the external-doors checklist, and it is why full parity is FALSE rather than pending.

Read from the code and the machine-readable results; runnable parts executed to confirm reproduction. Numbers are the frozen competition's, which this session did not re-run — that is act 1 above.