multiversion is allowed in this project for autovectorization dispatch on scalar loops (e.g., scaling.rs). Prefer the defaults provided by multiversed for new code — use multiversion only where multiversed doesn't fit.
For explicit SIMD intrinsics, use archmage (already in use for transpose.rs).
Do NOT replace min(max(...)) patterns with .clamp() on floats. f32::clamp() propagates NaN, while min(max(...)) suppresses it. In image processing pipelines, NaN propagation turns a single bad pixel into a full-image corruption. The min(max(...)) pattern is intentional NaN defense.
Always commit cargo fmt changes as a separate commit from code changes.
All integration tests live in imageflow_core/tests/integration/ as a single binary.
just test # run all tests with nextest
just test-filter NAME # run tests matching NAME
just test-update # run tests, auto-accept checksums within tolerance
just test-replace # reset all checksum baselines to current output
just test-list # list all test names
just test-build # compile-check tests without runningChecksum TOML files: imageflow_core/tests/visuals/checksums/
Reference images: imageflow_core/tests/visuals/checksums/images/
- Licensing/caching module (
imageflow_helpers/src/unused/): ~2300 lines of draft licensing, caching, and polling code. Currently unreferenced (nomoddeclaration). Needs review, modernization, and wiring into the build when ready to complete.