Computational materials · machine learning

Improving training data for magnetic property prediction

Materials Project magnetic moments come from DFT+U, with the Hubbard U fitted to reproduce formation energies, not moments. Near a spin-state crossover the moment turns on that choice of U. A different but equally defensible value flips the ion between a high-spin and a low-spin solution, and the database records one of them with no sign that the other exists. I wanted to ask whether models trained on those labels inherit the ambiguity, and whether theory can flag the fragile labels before a single calculation is run. My first hypothesis, d-electron count, was wrong. The one that held is about the ligand field rather than the count. What matters is whether, at an ion's actual charge state, it competes with Hund's coupling. Co³⁺ reaches that regime, Co²⁺ does not, despite sharing d⁷ with Ni³⁺. Then, trying to keep up with the state of the art interpretability research in large networks, I decided to open the model up to understand whether CHGNet already represents what it gets wrong. It does, though the circuit I first found for it, dissolved under a control I should have run at the start.

1. The premise and the observable

For ions near a spin-state crossover, the crystal-field splitting and the Hund's coupling are comparable in magnitude, so which one wins is set by a parameter fitted to a different property entirely. The database records the resulting number with no indication of how far it would move under a different but equally defensible U.

If that is true, a model trained end-to-end on those labels inherits the ambiguity, and a standard random split hides it, because the affected materials cluster in chemistry space and a random split leaks them across the boundary. So every result here is reported as skill against a trivial predictor rather than raw MAE, which is dominated by each stratum's native moment scale.

skill = 1 − MAEmodel / MAEbaseline,
MAEbaseline = error of predicting the training-set mean

Zero means no better than guessing the training mean, and negative means worse. Every structure containing a 3d/4d/5d magnetic ion is assigned to one of twelve strata by clustering on features chosen from theory rather than from the data, namely coordination geometry, d-electron count, M–X–M superexchange angle, bond-length anisotropy as a Jahn–Teller proxy, and site-resolved mixed valence.

2. Three lines of evidence

Three observables on three different systems. Only the third confirms the refined hypothesis at scale, and I have kept them separate rather than averaging them into one number, because they do not carry equal weight.

Line of evidence

M3GNet finetune · leave-one-stratum-out

12 strata · 2 baselines · seed 0
Skill by split strategy skill = 0 −0.3 +0.4 split worse than trivial ← | → better stratum 0−0.340 stratum 1 stratum 8 stratum 5 composition group random stratum 6 stratum 4 stratum 9 stratum 10 stratum 11 stratum 2 stratum 7 stratum 3
stratum 0 skill−0.340
stratum 1 skill−0.228
random split skill+0.116

Quantum ESPRESSO · moment swing over U = 0–8 eV

14 retained materials · corrected k-meshes
Moment swing per material 024 moment swing (μB / cell) test group (stratum 0, all oxides, 5 of 7 integer-pinned) control group (non-oxides, mostly metallic) MgCo(GeO₃)₂ Co₂As₂O₇ Na₃Co₂SbO₆ ZnFe(SiO₃)₂ Li₅Mn₂CoO₈ Sr₂Co₂O₅ Li₃CoNi₃O₈ KTi₂F₇ CeCu₂Si U₂CuSi₃ CrP₈W₃ FeCoB Ca₂FeN₂ VCrB₄ bistable (section 4)
test median (per ion)0.25 μB
control median (per ion)1.50 μB
Mann-Whitney, two-sidedp = 0.075

CHGNet zero-shot · mean signed magmom error by stratum

12,457 FM materials · inference only
CHGNet signed error by stratum 0+0.2−0.6 over-predicts ↑   under-predicts ↓   (μB per formula unit) stratum 01234567891011 the two M3GNet failure strata
Co³⁺ median (n=124)+0.906
Co²⁺ median (n=236)−0.170
Cliff's delta0.487

Figure 1. Panel 1 uses a finetuned M3GNet under leave-one-stratum-out splits. Panel 2 is 100 SCF calculations across 20 materials. Panel 3 is inference only, on a pretrained universal potential. Bar colours mark sign, not significance.

3. What each line actually supports

The three claims are not equally strong, and collapsing them would hide that.

ClaimStatusEvidence
Random splits overstate generalizationSupportedStrata 0 and 1 show negative skill. The random split (0.116) surfaces neither, because it never holds a physics region out in full.
Failures are predictable from theorySuggestiveSkill-vs-difficulty correlations run over n = 12 clusters, where the critical |r| for p < 0.05 is 0.576. Only the combined mechanism feature clears it.
Stratum-0 labels are more U-sensitiveNot confirmedThe group comparison runs the wrong way, and the observable is not commensurable across the two groups. See the U-scan section.
The relevant variable is charge state, not d-countSupportedCo³⁺ over-predicts, Co²⁺ under-predicts, across 360 materials with a large effect size, corroborated by one first-principles bistable case.
The pathology transfers across model familiesSuggestiveCHGNet's signed error is positive in the two M3GNet failure strata, but ρ = −0.517 at p = 0.085 over twelve clusters.

4. The mechanism, measured directly

One material carries the first-principles side of the charge-state claim. Li₃CoNi₃O₈ is Co⁴⁺ with three Ni³⁺. At U = 4 eV, two starting densities converge to two different self-consistent solutions, a bistable ground state obtained by seeding rather than inferred from SCF oscillation. The ground-state trajectory runs between two integer-pinned plateaus.

m = 2.00 μB  →  m = 4.00 μB,   Δm = 2 μB
ΔE = 66 meV per formula unit = 2.6 kBT at 300 K

The clean electron-counting story, one Ni³⁺ flipping from low to high spin, did not survive the per-site output. All three Ni moments barely move (1.015 → 1.140). What flips is cobalt's local moment, in both sign and magnitude, from −0.21, antiparallel and quenched, to +1.06, parallel and localized, 68% of the projected change.

That is a charge-transfer signature rather than a single-ion crossover, and the oxygen sites can tell the two apart. If Co⁴⁺ here is really Co³⁺ plus a ligand hole, then localizing that hole onto cobalt should strip hole character from the oxygens coordinating Co, and only those. Splitting the eight oxygens by nearest-neighbour distance gives exactly that, with no overlap.

O sitesd(Co) / Åd(Ni) / ÅΔ moment eachΔ charge each
six O coordinating Co1.8722.008+0.0400+0.0078 e
two O coordinating Ni3.4871.965−0.0160+0.0028 e

Direction, sign and spatial localization all match the ligand-hole picture. All six Co-coordinated oxygens shed hole character, and both Ni-coordinated oxygens gain it. Cobalt loses 0.073 electrons while its coordination shell collectively gains 0.047. "Cobalt's moment moved" on its own would not have established this.

Two limits on how far to lean on it. The charge that redistributes is small (roughly 0.07 e off Co, 0.008 e per oxygen), so this is a modest hole redistribution accompanying a much larger spin reorientation, not a whole hole migrating from ligand to metal. And these are projected-sphere moments capturing 1.856 of the cell's actual 2.00 μB change, so the 68 / 20 / 13 percent shares partition what projection sees, not the physical total.

5. Where the U-scan design broke

The group comparison in panel 2 runs against the hypothesis, and for a while I assumed the culprit was the anion-chemistry mismatch the design already acknowledged. The real problem is more basic. The two groups differ in whether the observable is continuously variable at all.

Groupexact-integer moments at U = 0values (μB / cell)
test (oxides)5 of 76, 6, 6, 8, 8.11, 5.41, 2
control (mostly metals)2 of 72, 1.24, 0.17, 0, 6.08, 3.91, 1.12

A gapped system's total moment is pinned to an integer by the gap. It cannot drift with U and can only jump when a level crosses. A metal's moment is a Fermi-surface property that moves continuously under any parameter change. So the swing statistic is discrete on one side of the comparison and continuous on the other. The controls are near-guaranteed nonzero swings by band structure alone, before any crossover physics enters. An anion filter would not fix this, since a metallic oxide would still drift.

Until both groups are restricted to gapped systems, the direction of this result is not evidence about crossover physics in either direction. band_gap is already in the fetched data, so the restriction costs no new DFT, but running it does not cleanly rescue the design. Three of the seven test materials carry band_gap = 0.0, including both that supply the surviving positive evidence.

6. A failure mode I guessed and surprisingly found

The scan's k-point density formula divided by cell size rather than scaling with it, silently giving every material a Γ-only mesh. An earlier revision had already flagged, as a risk, that Γ-only sampling with cold smearing could manufacture spurious exact-integer moment jumps through discrete level occupation. That is what happened. Li₅Mn₂CoO₈'s clean-looking jump to exactly 10.0 μB at U = 6, one of three headline "spin-state transitions" supporting the original hypothesis, is flat under a correct mesh, with a swing of 0.11.

The rerun then hands over a free test of the diagnosis, with no additional calculation. If the bug is what I claimed it was, fixing it should barely move gapped oxides and should move metals a great deal.

Groupmean |Δm(U=0)| between runslargest single shift
test (oxides)0.03 μB0.18, Sr₂Co₂O₅
control (mostly metals)1.47 μB4.83, U₂CuSi₃ (5.00 → 0.17)

Five of the seven test oxides did not move at all. FeCoB moved 2.00 → 6.08. That asymmetry is the signature of the specific bug diagnosed, not generic post-rerun drift.

7. Asking the model what it knows about its own error

Everything so far treats the models as things to measure. I wanted to turn that around. Does CHGNet already represent the thing it gets wrong, and if the failure is written somewhere in its own activations, could you read it back out of a single forward pass, with no ensemble and no retraining to pay for? That would be a free uncertainty estimate. Worth chasing.

I set out to probe for error magnitude. That target cannot work. Stratum 0 is, of all things, CHGNet's most accurate stratum by absolute error.

Observablemedian, stratum 0median, all othersCliff's δ
abs_error0.2290.356−0.153
signed_error−0.032−0.169+0.226

Every stratum under-predicts the moment. Stratum 0 just under-predicts least, so this is a bias effect and not an accuracy one. One alternative had to be cleared away first, because abs_error partly cancels what signed_error isolates, and a stratum whose bias already sits near zero will show a smaller |error| for that reason alone. But it survives the check. Removing each stratum's own bias before recomparing still leaves stratum 0 the tighter group (0.229 vs 0.332, δ = −0.131 against −0.153 raw), so the ordering is real and only a sliver of it is cancellation. A direction fit to |error| has no reason to point at stratum 0 either, and it does not. AUC 0.487, cosine −0.61 with a stratum-0 label direction, actively anti-aligned.

On signed error, though, the probe does find a direction. A ridge fit on the frozen 64-dimensional crystal embedding survives a stability gate of 40 bootstrap refits at a mean pairwise cosine of 0.913, so it is not noise. And it travels. Held out of training on all 1,682 octahedral spin-crossover materials, it still ranks them above the rest, and it ranks error inside that unseen regime about as well as inside the strata it actually saw.

ρ = 0.434 inside the held-out stratum   vs   ρ = 0.466 on strata it saw
difference −0.032, bootstrap 95% CI [−0.086, +0.025]

Whatever the probe learned about where CHGNet goes wrong is not regime-specific. The direction is also nearly orthogonal to the embedding's dominant variance axes (|cos| < 0.04 against PC1–PC5), so the error information sits in a low-variance, high-signal subspace rather than in the directions that dominate the spread.

One scope note, because the ablation section below turns on it. That is the pooled crystal vector, which sits downstream of the moment head. It is the wrong tensor for a causal claim, and I do not make one here. This is a legibility result, and legibility does not require causality. Whether the model computes this feature or reads it off the chemical formula is a separate question, and one I did not think to ask until later.

Three things keep this from being a clean headline. The effect is modest. AUC 0.592 against a supervised stratum-0 detector's 0.826 means the direction recovers under half of what is linearly available. It is not low-rank. One component carries 32% of the predictive power and twenty are needed for 88%, so "one or two directions carry most of it" is false here. And its positive extreme is dominated by layered cobalt oxides (15 of the top 25 are Co–O against a 14% base rate), but those are largely the same materials as the stratum-0 enrichment, so it is one observation reported twice, not two confirmations.

8. A circuit I found, and the control that dissolved it

The more interesting target is not model error at all. DFT+U with a Hubbard gap drives d-shell occupancies toward integers, so the recorded moment lands on an integer far more often than real magnetism would produce, 80.5% of labels here against 11.7% of CHGNet's predictions. That is a fingerprint of the labelling protocol, not of accuracy, and a model that represents it has internalised the method's signature. It is the same family as the Li₃CoNi₃O₈ case above, scaled from one material to 12,133.

And it does, remarkably cleanly. Reading the atom features the moment head actually consumes, not the pooled crystal vector that sits downstream of the head and cannot be causal, the feature shows up at AUC 0.923, with one coordinate out of 64 carrying 83% of it. That coordinate sorts elements by how electropositive they are, Cs, Na, K and Rb at the top, Rh, Ir and Pd at the bottom. That is exactly the precondition for Hubbard quantization. And the readout weights it third-heaviest of all 64.

That is a circuit story, and I spent most of this study's effort on it. Three controls, run in order, took it apart.

The first control was the null. The moment head is rank-1, so a control has to match a direction's overlap with the readout, or anything with a readout component looks special by geometry. Matched that way across all 64 coordinates, wiring and predictiveness explain 44% of the apparent selectivity, and dimension 24's residual drops to z = +1.99 (p ≈ 0.047), short of the z = 3.23 a 64-dimension scan needs. The energy pathway showed the same thing cheaply. One control read 1.66× and looked real, eight read chance.

The second control was pre-registration, and it half-failed. One dimension did clear the scan, dim 31, an anion-versus-cation axis carrying no information about a site's own moment (ρ = −0.003). But it emerged from that same scan, so I wrote the hypothesis into PREREGISTRATION.md before testing it on held-out data. Discovery replicates. An untouched half re-selects dim 31 as rank 1 of 64, and the pre-registered primary endpoint passes. That endpoint was the wrong one, because overlap-matched random directions pass it too and dimension 24 scores higher. On the statistic that does discriminate, dim 31 reaches the 92nd percentile of its control distribution, short of the 95th I had committed to.

The null for an ablation is not zero. Matched random directions already produce a stratum gradient of ρ = +0.61, because every ablation damages high-moment strata more. Scored against zero, dim 31 looked convincing at p = 0.006. Scored against its actual control distribution, it does not clear the bar. Both times I got this wrong, the fix was the same. Generate the control distribution and read the percentile off it, rather than trusting an analytic p-value against a null nothing achieves.

The third control was the formula itself. Mean-pooling an atom embedding averages a lookup table over sites, which makes it a linear function of the chemical formula. I had assumed that was roughly true and never measured it. Measured, the pooled embedding is recoverable from element mole fractions at R² = 1.0000. So the question is not whether a probe succeeds but whether it beats the formula, and for integer-pinning it does not.

Interpretability result

Score of composition + each layer, against composition alone

12,133 materials · both panels start at their own chance level
Layerwise gain over a composition-only baseline Signed error, what the model gets wrong R², 0 = no skill 00.28 composition alone, 0.110 0.243 Integer-pinning, the DFT+U labelling artifact AUC, 0.5 = chance 0.51.0 composition alone, 0.907 four rounds of message passing add +0.009 compositionembeddingconv0conv1conv2conv3 ↑ the tensor the moment head reads
pooled embedding from formulaR² = 1.0000
dims 24 and 31 from formulaR² = 0.97
signed error, non-compositional55%

Removing the signed-error feature at conv2, against rank-matched controls

fit on half A, evaluated on half B · 25 matched controls
The intervention lands, and the damage is not stratum-specific The intervention lands 00.18 directions removed (of 64) R² = 0.173 0.049, 72% removed 048 MAE 0.619 → 1.730. The damage is real. …and random subspaces do the same conversion ρ vs pinning gradient 40th percentile partial r, projection controlled 8th percentile −0.40+0.5+1.0 rank-matched random subspaces, mean ± 1 sd the real signed-error direction
rank-1 ablation removes27%
directions to remove 72%8 of 64
stratum specificitynone

CHGNet site moments vs Quantum ESPRESSO, per element

129 transition-metal sites · 13 materials · ordering verified
Site-resolved moment agreement by element mean |moment| per site (μB) Fe is the outlier, under-predicted by 0.64 μB, a quarter of its DFT value 0 1 2 3 Mn Fe Co Ti Ce Cu Zn n=14 n=24 n=45 n=10 n=6 n=16 n=6 2.04 2.68 CHGNet DFT (uniform U, 0–8 eV)
Spearman ρ, TM sites+0.905
MAE vs mean |m| = 1.810.270 μB
distinct TM environments27

Figure 2. Panel 1 scores composition alone against composition plus each layer's pooled activations, so the gap is what message passing adds over the formula. Panel 2 removes an orthogonal rank-8 subspace and compares the damage against random subspaces of the same rank. Panel 3 is 129 transition-metal sites with atom ordering verified element-by-element between the QE input and the structure CHGNet is fed.

Integer-pinning is 99% a composition lookup, and the circuit is retracted. The formula alone reaches AUC 0.907, and four rounds of message passing add +0.009. The two coordinates the circuit was built on are almost pure composition readouts, dim 24 at R² = 0.971 and dim 31 at 0.973 from element fractions. The ionicity reading was right about what those dimensions encode and wrong about what it meant. It is element identity, which the embedding supplies for free.

This does not make the observation false. DFT+U integer-pinning really is largely set by which elements are present, which is chemically sensible, and CHGNet's embedding really does reflect it. It makes it weak, and it makes the composition baseline the control that should have been in place from the first probe onward.

The same test rescues the other target. Composition barely touches signed error at R² = 0.110, and message passing more than doubles that to 0.243, leaving 55% of the reachable signal outside the formula. It climbs through conv0, conv1, conv2, and then it stops, right at the tensor the moment head reads. So the network does compute something about its own bias, and it finishes exactly where the readout picks up. That is the target the circuit work should have been aimed at all along.

9. Re-running the protocol on the claim that survived

So I ran the ablation protocol again on signed error at conv2, with three directions instead of one. The first is the raw probe. The second is the probe on composition-residualised features, the computed component only. The third is the probe on the composition-predicted part, the control the layerwise check had exposed as missing.

Nothing reached the 95th percentile against matched random directions. The computed component was, if anything, the weakest of the three. MAE barely moved.

A null means nothing unless the intervention landed, and mine had not. Projecting out a single direction removes only 27% of the signed-error signal, so three-quarters of the target survives and a null from it says nothing. Removing an orthogonal subspace and refitting the probe at each step takes eight of 64 directions to remove 72%, so the feature is distributed, unlike the pinning target. Re-run at rank 8 against rank-matched random subspaces, the damage is large (MAE 0.619 → 1.730) and not stratum-specific. That null holds.

The second failure was my instrument, not the model. I had read cos(v, w) between a probe direction and the readout weight as a wiring map. It is not commensurate. The probe lives in mean-pooled crystal space, while w is a per-site weight sitting inside an absolute value. Only 40.5% of sites have positive pre-activation, so the abs() is active on the majority. The pooled projection onto w correlates with the model's output at just +0.070, while atoms-per-formula-unit, an extensive quantity that pooling discards, correlates at +0.557. Every probe coming out near-orthogonal to w, including one fit to the model's own prediction, was diagnostic of the pooling choice, not of the model.

So the end state is split. The network computes something about its own signed error, finishing at the layer the moment head reads, but I cannot show by ablation that the head uses it. Probing and ablation disagree, and after four rounds of controls they still disagree. The obstacle is not statistics but extensivity. A per-formula-unit prediction is a sum over sites through an absolute value, so crystal-level pooled directions are the wrong object for a causal test at a per-site readout.

10. What the DFT runs can label, and what they cannot

That points at site-resolved targets, which Materials Project's cell-total magnetisation cannot supply but this project's own Quantum ESPRESSO runs can. 66 converged runs across 17 materials carry a final per-site moment block. Atom ordering between each scf.in and the structure CHGNet is fed was checked element-by-element, and all 13 align exactly with none mismatched, giving 561 matched (site, U) records.

It is not enough, and not for the reason I expected. Raw site count overstates the sample. Symmetry-equivalent sites share a CHGNet feature vector, and re-running one structure at five U values reuses that vector with different labels, so extra U points add no independent rows. That leaves 27 distinct transition-metal environments against 64 dimensions, 0.42 samples per dimension, underdetermined rather than underpowered. A reduced probe would fix the dimensionality. The top 11 principal components carry 77.9% of site variance and 59.5% of the readout direction, and CHGNet's site moments reconstruct from them at r = 0.983.

Dimensionality was never the binding constraint. The strata covered are 0, 2 and 7, so nine of twelve are missing. The test is about stratum specificity, which cannot be run at any dimensionality. The U-scan picked its materials for spin-state sensitivity, not stratum coverage, so the sample sits where it is least useful here. The fix is roughly 20 to 30 new SCF runs chosen by stratum, not more analysis of the ones I have.

One thing the data does support needs no probe and had not been checked anywhere in the project, namely how accurate CHGNet's site-resolved moments are. On transition-metal sites they track DFT at ρ = 0.905, with MAE 0.270 μB against a mean magnitude of 1.81, about 15%. Cobalt is unbiased on the largest sample (n = 45, +0.02), and the d¹⁰ cases are correctly zero. Iron is the outlier, under-predicted by 0.64 μB, a quarter of its DFT value. That is a specific, checkable claim, and a new one. The same caveat as the U-scan applies. These runs sweep a uniform diagonal U rather than Materials Project's differentiated values, so they are not the labels CHGNet was trained toward, and the per-element biases pool across U.

11. What the interpretability half supports

ClaimStatusEvidence
Signed error is readable from CHGNet's representationSupportedStable under bootstrap refits, and ranks error inside a physics regime held out of training as well as inside regimes it saw.
Signed error is computed, not read off the formulaSupportedR² 0.110 → 0.243 through message passing, peaking at the exact tensor the moment head reads.
Integer-pinning is a composition lookupSupportedAUC 0.907 from element fractions alone, and the whole network adds +0.009.
A dimension-31 pinning circuit is load-bearingRetractedReaches only the 92nd percentile of its own control distribution on held-out data, against the 95th I had pre-registered, and the layerwise check shows the coordinate is 97% composition.
The moment head uses the signed-error featureNot shownNull against rank-matched controls, after an intervention verified to remove 72% of the signal.
CHGNet's site-level moments are accurateSuggestiveρ = 0.905 on 129 TM sites, but against uniform-U labels rather than the differentiated scheme CHGNet was trained toward.

Two of those are retractions of my own headline results, and they are the part of this work I would most want to be judged on. Probing located the information, but only ablation could test whether the head used it, and the two disagreed. Each of the three collapses came from a control that had not been there before, whether an overlap-matched null, a pre-registered held-out split, or a composition-only baseline. In each case the control was cheaper than the result it overturned.

12. What this establishes, and what it does not

What the work establishes is narrower than what it set out to test, and that narrowing is the finding. The link that holds runs from a structure-only descriptor, through a first-principles measurement of how fragile the label is, to a failure mode in the models that go on to eat those labels. What the descriptor has to capture is whether Δoct at an ion's actual charge state competes with Hund's coupling, and a plain d-count cannot express that. Co³⁺ and Ni³⁺ get there. Co²⁺ does not, despite sharing d⁷ with Ni³⁺.

The interpretability half narrowed the same way. I went looking for the circuit that computes the labelling artifact and found that nothing computes it, because the formula already carries it. What survived was the target I had treated as secondary. CHGNet builds a real, non-compositional representation of its own signed error and finishes it at exactly the layer the moment head reads. Whether the head then uses it, I still could not show.

This is a preliminary study, not a paper. The split table is a single seed at a single epoch budget. The feature correlations rest on twelve clusters. The DFT side of the charge-state claim rests on one material, so CHGNet's 360-material result carries most of the weight. The causal interpretability test is blocked on stratum coverage in the DFT sample, not on anything I can compute from what exists. And the motivating premise, that DFT+U moments disagree systematically with neutron diffraction, is taken from the literature rather than demonstrated here, and the comparison module against curated experimental moments is not yet built.

What I would fix next

Plenty, honestly. The biggest one is the single-start protocol, because a lone high-spin guess found excited states on the one material I stress-tested, and the other 13 never got the same scrutiny. The uniform diagonal U is wrong for the multi-metal cells too, and should really sit at each element's production value rather than sweep both together. On the physics side, the "2+ is robust" half does not actually discriminate, since a gapped oxide reads zero swing no matter what. The interpretability side has matching holes. The self-knowledge probe still needs a composition baseline under a matched split, the pinning gradient would sharpen a lot over 40 to 60 composition families instead of 12 KMeans strata, and a real causal test needs site-resolved labels, which means 20 to 30 new SCF runs spanning the nine strata I never covered. And the whole thing is scoped to 3d oxides and pnictides, with three f-electron materials that should never have been in the control group in the first place.

Tabulated split results
splitskillmodel MAEbaseline MAEn_test
leave_stratum_0−0.3404.3563.2512,425
leave_stratum_1−0.22810.4658.5211,955
leave_stratum_8−0.02312.66112.373877
leave_stratum_50.0533.6193.8227,857
composition_group0.0824.1474.5195,191
random0.1164.0534.5875,240
leave_stratum_60.1325.0305.7982,059
leave_stratum_40.2493.2384.3122,752
leave_stratum_90.2773.4534.777470
leave_stratum_100.3502.5203.8782,020
leave_stratum_110.4092.1503.6401,931
leave_stratum_20.5301.8763.9912,365
leave_stratum_70.5621.6193.694504
leave_stratum_30.5871.6584.016986

Single seed, 20 epochs, final-epoch model rather than best-val checkpoint. Reported MAEs are a lower bound on what this backbone can do, not a ceiling.

Li₃CoNi₃O₈ energy landscape at U = 4 eV
U / eVstarting densitym (μB)ΔE vs ground
4low-moment guess2.000 (ground)
4seeded from U=6 low-start solution4.00+66 meV
4seeded from U=8 default solution~5.9 (not converged)+969 meV
6default high-spin start5.57+834 meV
8default, restarted to convergence7.74+1968 meV

Energies per formula unit, on a cell that is exactly one formula unit (15 atoms). Materials Project's own recorded moment for this compound is 1.995, the low-spin state, and its API metadata confirms Co 3.32 eV / Ni 6.2 eV on the identical structure. Because cobalt rather than nickel drives this transition, the uniform-U crossover found here does not transfer to that differentiated scheme, and the apparent inconsistency dissolves.

Layerwise scores and the pre-registered test
Targetcomposition+embedding+conv0+conv1+conv2+conv3
integer-pinning (AUC)0.90710.90710.91430.91570.91460.9155
signed error (R²)0.11020.11020.19820.22000.24340.2419
error magnitude (R²)0.10410.10410.16160.20660.19220.1966
layer still recoverable from composition (R²)n/a1.0000.9700.9380.8960.795

Each cell scores composition plus that layer, so the gap from the first column is what message passing adds over the chemical formula. Error magnitude peaks earlier and lower than signed error, and integer-pinning does not meaningfully move at all.

Held-out statistic, dimension 31dim 31matched controlspercentiledim 24
Cliff’s δ (pre-registered primary)+0.229+0.153 ± 0.05292%+0.262
stratum ρ+0.699+0.608 ± 0.18360%+0.671
partial r (the discriminating one)+0.744+0.441 ± 0.18092%−0.008

50/50 split stratified by stratum, seed 20260920. Half A re-runs the discovery scan and re-selects dimension 31 at rank 1 of 64, and half B carries every confirmatory statistic. The hypothesis and the primary endpoint were fixed in interp/PREREGISTRATION.md before this ran. The primary endpoint passes and matched random directions pass it too, which is why it is reported as specified rather than swapped for one that looks better.