The writer's MX plugin decided the image-scale arrays were present whenever
its own vector was non-empty, which is always, so every data file wrote them
as NaN - and the master's SaveVectorIfMissing then left the end message's
values out. It now marks them present only when an image message carries a
scale. rugnux, whose scale exists only after the image messages went to the
file, puts the per-image scale, its CC and mosaicity into the end message, so
imageScaleFactor/imageScaleCC/imageScaleMosaicity hold the run's values
(NaN only for frames without a scale).
The usage line of -e now says the end image is exclusive, which is what the
code does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>