EXPERIMENTS.md · lines 6103–6181E105 — The driver's early return is the wrong way round
The ladder audit measured the driver returning at rung 1 with p = 0.00006 on equiatomic
MoNbTaW in 5.3 s, where running the rungs by hand to the top gives p = 0.9404. The
promotion logic at verifier.py:484 is:
settled = not (undecided[0] < r["p"] < undecided[1])
if settled and r["p"] < undecided[0]:
return r # "a confident failure needs no dearer opinion"
The comment is the error. In passes_requirement,
p = [1 - (1 - p_ordering) * r_order] * [1 - (1 - p_phase) * r_decomp]
with reachability r in [0,1]. As r falls the bracket rises, so p is monotone
non-decreasing as transport gets harder: kinetics can only ever raise p, never lower it.
Therefore a confident pass at rung 1 cannot become a failure and may be returned early. A
confident failure is precisely the case that kinetics can overturn - an alloy whose
ordering is favoured but unreachable, which is the mechanism E58 established and the whole
reason rung 3 exists. The driver terminates it.
And it terminates nearly everything: E63 measured all 348 compositions ordering somewhere
inside the window, so rung 1's p is near zero across the system.
A second defect makes the first untestable. scripts/stage_b.py::build never sets
calc, so every Verifier the pipeline constructs raises RuntimeError on rungs 2, 3 and 4.
The ladder as assembled cannot climb even if the logic allowed it.
Predicted:
- p is monotone non-decreasing in falling reachability, verifiable numerically across
the full range - the analytic claim above, checked rather than asserted.
- With the early return corrected and a calculator attached,
V(x, top="kinetics") on
equiatomic MoNbTaW returns rung="kinetics" with p within 0.02 of the 0.9404 measured by
running the rungs by hand.
- The suite stays at 222 passing. The driver is covered by tests; if reversing the
condition breaks one, the test encodes the same misunderstanding and says so.
Falsified if p is not monotone, in which case the early return may be defensible in some
regime and the fix is not a simple reversal.
Outcome. All three predictions hold. The ladder climbs for the first time.
The span in the first row is the finding, not the monotonicity: a composition the
equilibrium rungs reject outright at p = 0.011 comes back at p = 0.996 once it is frozen.
That is the entire class the old rule discarded.
Equiatomic MoNbTaW, through the driver, end to end:
rung reached kinetics
p 0.9404
T_od 556 K orders inside the window
drive_cold -57 meV/atom relaxed, against the off-lattice hull
Q 5.20 eV
reach 0.0005 nm against the 2 nm a nucleus needs
wall clock 286 s
Two changes. The early return moved from a confident failure at rung 1 to a confident
pass at rung 2, which is the only place it is safe: rung 2 supplies the off-lattice driving
force that rung 1 is blind to and can lower p, while rung 3 only ever raises it. And
build() now attaches a calculator - without one every Verifier the pipeline constructed
raised on rungs 2, 3 and 4, so the ladder could not have climbed regardless of the logic.
FORAGER_NO_CALC=1 restores the old screen-only object for callers that never leave rung 0.
Two tests pin it: one asserts the monotonicity the promotion logic depends on, the other
asserts the old rule has not returned.
What this does not fix. The ladder now reaches the top for one composition in 286
seconds; it is still a finalist's instrument and nothing promotes into it automatically. And
the defects the audit found above rung 1 stand - rung 0 over-reports by 59 meV/atom on this
same alloy, the ordering gate is withdrawn as a clearance, and with_dft still implements
the comparison E77 withdrew.