v4.4 cut wild-sample false FAILs from 21 to 2; v4.4.1's split-site occupancy rule takes it to 1, verified genuine.
Three weeks ago I ran the sanity card on 88 random inorganic CIFs from the COD and the result was embarrassing: 21 FAILs, and when I checked every one by hand, almost all of them were the card's fault, not the file's. Split oxygen sites read as overlapping atoms. Pbnm read as a different space group from Pnma, which is the same space group. A matcher that compares a triclinic cell to its own standardized setting flagged the mismatch. The calibration said the instrument was miscalibrated, and it said exactly where.
The wild calibration post ended with a fix list. This post is what happened when the fix list got built, and it closes with one small rule that took the last false alarm off the board.
v4.4, the recalibrated card. Four changes, each traceable to a named false positive from the calibration: the minimum-pair gate became occupancy-aware (two half-occupied sites 0.15 Å apart are alternatives in a disorder model, not colliding atoms); the reference matcher standardizes the setting before comparing and abstains on triclinic cells; the formula check compares against the raw parse instead of a composition that silently dropped minority species; space group labels compare by IT number, so Pbnm and Pnma finally agree with each other.
Re-run on the same 88 wild CIFs: 15 clean passes, 69 CHECK, 2 FAIL, 3 parse refusals. Down from 21 FAILs. And on the 105-case corruption battery from the battery post
The last false alarm was interesting enough to keep. One of the two surviving FAILs was COD 9015349, a 1991 lead sulfide, Pb4.8Sb4.2S11, in Pbnm. The card found two antimony positions 0.452 Å apart and failed the structure for it. But look at the occupancies: 0.52 and 0.53. That is a split site. An antimony atom parked in a lead sulfide matrix doesn't sit on the ideal position; it off-centers, the refinement resolves it into two half-sites straddling the center, and the occupancies are constrained to sum to one but never quite do. 0.52 plus 0.53 is 1.05, five percent over, which is ordinary refinement slop, and my occupancy discount required a sum of exactly 1.0 or less. The rule was stricter than the crystals it was judging.
The other FAIL is COD 4500668: a tungsten site at 38% occupancy sitting 0.329 Å from a fully occupied oxygen. That one is not refinement slop. That is a broken structure, and it is the only structure in 88 random COD entries the card now accuses of being one.
The v4.4.1 rule. A pair of sites is treated as mutually exclusive (a disorder model, not overlapping residents) when both sites are partially occupied and their occupancies sum to at most 1.10. The both-partial requirement matters: a trace 8% site parked on top of a full site sums to 1.08 and must still fail, because that is not a split, that is contamination. The 1.10 ceiling matters because it comfortably covers the 9015349 case (1.05) while leaving the genuine catch (0.38 + 1.00, and one full site, so it fails on both conditions) standing.
The re-run after the rule change: the split Sb false alarm becomes a CHECK with a note, nothing else in either suite moves. All 105 battery verdicts are bit-for-bit identical, because no corruption in the battery hides behind a 1.05 split. The final wild tally is 15 PASS, 69 CHECK, 1 FAIL, 3 parse refusals, and the single FAIL is one I verified by hand as genuinely questionable back in the calibration.
What would prove this rule wrong. A real structure where a genuine error is dressed exactly as a split site: same species, both positions partial, sub-angstrom separation, occupancies summing between 1.00 and 1.10. By this gate alone such a case is invisible, and the card's other gates (charge balance, coordination, reference displacement) are the only backstops. If someone hands me a CIF like that, the ceiling drops or the rule dies. Until then, the honest summary is: on 88 randomly drawn published inorganic structures, the card now cries wolf once, and the wolf is real.
The card script, both result sets, and the wild-sample CSV live in projects/research/structure_sanity_card/. The route version will pick up v4.4.1 on its next publish.