The Le Page namer took the least oblique cell across the P, C and I namings of
a monoclinic lattice, while the space-group search it feeds enumerates
reference settings only - whose order-2 Sohncke groups are P2, P2_1 and C2,
never I-centred. So a lattice the plane-basis search named I could earn its
promotion on the intensities and still be refused for its name: the re-ask's
chosen->centring_type() == cand.centering has no candidate to match, on every
such run.
The (a, c) plane-basis search now runs twice: first accepting only the P and C
namings, then, only if the plane offers no other, accepting I as well. The
obliquity is still minimised - within the reference naming rather than across
namings. That is a search for the least oblique C, not a relabel: a -> a + c
on such a lattice turns beta 120 into beta 32, outside the 30/150-degree
bounds of the constrained refinement, which is what the replaced comment
warned about. A new test hands the namer a lattice whose least oblique naming
is I and requires the C setting back, with beta inside the bounds; it fails on
the previous code, which returns I on all twenty presentations.
Blast radius: LePageLattice() has two callers, both in the metric re-ask, and
the branch this repairs was a guaranteed refusal, so no run that already
adopts a promotion can move. Across all 99 run logs of the external corpus,
three runs produce an I-centred monoclinic metric candidate, and all three
were re-run with the change. One moves from a primitive triclinic group to the
C-centred monoclinic group deposited for it, on the same lattice (overall
CC1/2 0.30 -> 0.95, completeness 93.6 -> 98.8 %, multiplicity 2.2 -> 4.0); a
second, whose lattice is separately wrong, now at least carries its deposited
space group; the third asks in the C naming, is refused on the intensities
exactly as before, and its results report is byte-identical.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>