DataCollectionParameters.transmission was the outlier: int percent 0-100
while BeamlineStatus / SimpleScanParameters / FluorescenceSpectrum already
used a 0-1 fraction. Per the DAQ/DB consensus it is now a strict
Annotated[float, Field(ge=0.0, le=1.0)] fraction (1.0 = full beam);
percent-scale values in (1.0, 100.0] fail validation by design instead of
being silently reinterpreted. RotationScanRequest / RasterGridRequest gain
the same constraint (production data is already fraction on those paths).
Human-facing surfaces (user spreadsheets, AareDB public API) stay percent;
their converters live in AareDB at the boundary.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HiGzkkuiZXei894cnJfgSg