FitShape set out.shells before running the regressions and returned early if
either weighted least-squares call failed, leaving NaN coefficients with flat and
convex both false. AnalyzeAnisotropy tested exactly those two, so it read the
failure as Linear and marked it stable: the report and _reflns.jfjoch_aniso_shape
claimed LINEAR over a shell count that suggested it meant something, with nan
printed beside it. ShapeFit now carries an explicit ok, set only once every
regression has succeeded, and result.shape_shells reports the shells the
signature was actually fitted over - none, where it was not - so the renderer and
the rebinning caution skip it and the verdict stays Undetermined.
The directional-limit line tested the first and third principal axes for a finite
d_min but not the second. ConeLimits fills each independently, so a crystal whose
outer two directions fall in cones too sparse to measure while the middle one is
well covered suppressed the whole line, the d_min spread with it. All three are
tested now.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016L1qig74oYQzfUJJZbbxFh