Rotation::evaluateVector() computes angle = 2*acos(w) which gives
values in [0, 2*pi]. When the relative quaternion has w < 0 (opposite
hemisphere), the angle exceeds pi even though q and -q represent the
same rotation. This caused the validator to report ~350 degree 'flips'
and reject valid solver output.
Fix: map the angle to [0, pi] before comparing against the 91-degree
threshold. This is the short-arc equivalent — the minimum rotation
angle between two orientations regardless of quaternion sign convention.