# Hitscan movement speed normalization and airborne floor RE-610. Reproduce with `python3 scripts/analyze_qvm_spread_speed.py`; check with `python3 scripts/test_qvm_spread_speed.py`. The [machine report](qvm-spread-speed.json) retains source identity and bounded fixtures. Actual290807–290968 follows the parameter prefix. Supplied native−107 computes f32 sqrt; source normalizes PS32 velocity into local12/16/20 when nonzero. For IDs14/23 while ground==1023, length strictly below fileword1130391142 (~224.4) becomes340. Equality does not floor, producing a non-monotonic spread input across that threshold. All lengths then cap at340, multiply by radians literal1016003125 and0.01, and only then split excess above200 into local92. For the tested finite nonnegative lengths, the converted value stays below0.06 and excess remains0; do not reinterpret the source as a raw-speed200 split. Local44 is table20×0.4×0.75 in source f32 order. Zero velocity retains zero normalization. Random sampling, trig offsets and endpoint writes remain pending. No original executable/full QVM/native collision/physics/rendering executes. Native responses and legal input domains are supplied or unverified where stated; full runtime/macOS/Linux Rust/Bevy/Solari gameplay remains open.