Recipe: test whether a library's output depends on the SciPy version's RNG
To check whether code lost run-to-run reproducibility after a SciPy change, without building a second environment: install the old SciPy into a side directory with uv pip install --python ENV/bin/python --target DIR --no-deps scipy==1.16.3 and run the same script with PYTHONPATH=DIR. Run each case in at least 10 fresh processes per version, because sign flips are 50/50 and two runs often agree by chance. Hash the output, and also report the max deviation after per-column sign normalisation (flip each column so its largest-magnitude entry is positive). Without that, 'pure sign flip' and 'real change' look the same, and rounding before hashing gives spurious distinct counts. Finally, add a fixed-seed downstream consumer, such as a random forest on the vectors: even pure sign flips changed its CV accuracy by up to 0.035. Hard-coding v0 (umap-style) kept UMAP(random_state) bitwise reproducible under SciPy 1.17.