8d0cd19e48
The rot3d combine emits fulls with partiality == 1 and image_scale_corr == 1, so the fulls are only ever scaled as per-frame partials upstream - their per-frame scale G is fit through the rocking-curve/partiality model (G*partiality*B*lp*Itrue - Iobs) and so absorbs any model error. XDS/DIALS instead scale the 3D-integrated fulls directly. --scale-fulls inserts a second scaling pass on the combined fulls with the Unity model (G*Itrue - I_full, no partiality term), between Combine3D and MergeOnTheFly, reusing ScaleOnTheFly on a Unity-configured experiment copy. It is a pure post-correction (updates the fulls' image_scale_corr 1 -> 1/G, no re-combine). HEWL crystal 2, anomalous S-peak height vs XDS: 0.53x -> 0.57x and ISa 9.4 -> 10.5 - improving precision and accuracy together (not the CC1/2-up / anomalous-down trade-off of outlier rejection). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>