Experiments · E106

Which known defects can give wrong answers, and can the worst be fixed first?

Partly. Eleven defects were ranked by harm and the two worst were fixed: a broken DFT comparison and a backwards kinetics charge.

In the log: Working the defect list

recordedDate not stated in the log; it was written between the commit of 2026-09-13 08:16 and the first commit that contains it, 2026-09-16 02:04unclassified0 predictions · 0 result paragraphsEXPERIMENTS.md lines 6183–6230
exp E106 diagram
What E106 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E106.svg).

Results

No result paragraph for this entry was found in the log.

The full record

EXPERIMENTS.md · lines 6183–6230

E106 — Working the defect list

The ladder audit produced a verified list of what is broken. Worked in order of whether it can produce a wrong answer, not of how easy it is.

Tier 1, produces wrong answers

  1. Verifier.with_dft implements the comparison E77 withdrew - subtracts cells holding different atoms. The repair exists in scripts/dft_check.py and was validated by E78. Three tests pin the broken arithmetic.
  2. with_kinetics never passes order_at_nm, so ordering is charged the reach at the top of the window - which passes_requirement's own docstring calls backwards.
  3. stage_b.py reads drive_conservative, so every arm comparison in the project runs without the ordering term. The E96 fix reached one caller of two.
  4. Rung 0 over-reports stability by 59 meV/atom on MoNbTaW, in the direction its docstring calls impossible. This is what the generator learns from.

Tier 2, correctness hazards 5. The window is parameterised in build() and hardcoded in three scripts. 6. offlattice_hull12.json has 671 phases where E86 records 613; offlattice_hull12_full.json is written and read by nothing.

Tier 3, documentation that has outrun the code 7. estimated_relaxation's docstring describes a superseded model; a test asserts a correlation that is now 1.0 by construction and calls it +0.97. 8. descriptors calls the cluster expansion and costs 70x its claimed "no model involved". 9. Costs reported as hardcoded zeros at rungs -1 and 0. 10. Thirteen keys written by screen and read by nothing. 11. Three ladders coexist; two answer withdrawn questions.

Tier 1, items 1 and 2 done.

Verifier.with_dft now computes each model's mixing energy against its own elemental references in the same cell, weighted by the cell's actual integer composition - the repair scripts/dft_check.py has carried since E77 and E78 validated to 1 and 4 meV/atom. The convention constant changed from difference-same-cell to mixing-energy-own-references, and the two tests that pinned the withdrawn arithmetic now pin the repair. The end-to-end stub test is rewritten around planted pw.out files whose element totals are deliberately thousands of eV apart, so that under the withdrawn arithmetic the test could not be written at all - which is the clearest statement of what the repair buys.

with_kinetics now passes order_at_nm, charging ordering the diffusion distance at its own transition temperature rather than at the top of the window. passes_requirement's docstring has called the alternative backwards since it was written, and verify_fly_finds.py has done it correctly all along while the method did not.

223 passing. The count moved 224 to 223 because the two DFT tests were merged into one rewritten end-to-end test, not because one was lost - the 26 tests in test_verifier.py are all accounted for by name.

Related entries

Built with PRISMWebsite and visualizations made using Claude