Build Packages / Create release (push) Successful in 21s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 7m17s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 8m19s
Build Packages / build:viewer-tgz:cpu (push) Successful in 9m39s
Build Packages / build:viewer-tgz:cuda (push) Successful in 11m13s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m16s
Build Packages / build:windows:nocuda (push) Successful in 16m42s
Build Packages / build:windows:cuda (push) Successful in 19m4s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 21m36s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 17m3s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 18m14s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m16s
Build Packages / build:rugnux:windows (push) Successful in 10m29s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m5s
Build Packages / Generate python client (push) Successful in 17s
Build Packages / Build documentation (push) Successful in 1m25s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 16m41s
Build Packages / build:rpm (rocky8) (push) Successful in 14m1s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 14m7s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 13m54s
Build Packages / build:rpm (rocky9) (push) Successful in 15m5s
Build Packages / Unit tests (push) Successful in 1h52m20s
The pseudo-translation test has two halves: a Patterson peak, judged against a permutation null, and an intensity modulation along that peak's vector, judged against a control. The control was the same greedy search run from random starting vectors over the SAME intensities - so it measured the search AND whatever modulation the crystal carries, because a greedy search started anywhere walks into a real modulation's basin. Measured over 110 merged datasets, single draws of that control reached 199x and 6162x on crystals whose own modulation reads 4.0x and 67x, and on 28 of the 110 the control came out at or above the signal it is subtracted from. Shuffle the intensities inside each resolution shell instead - the permutation the Patterson null in the same function already uses - and start the search where the measurement starts. The reflection count, the E^2 distribution and the phase-bin populations are untouched; the only thing removed is the correlation between a reflection's intensity and h.u, which is the thing the modulation claims to see. No threshold moved and no verdict changed: over those 110 datasets the same 8 are called, none gained, none lost. What goes away is a control that reads its own signal, and with it the one route by which something upstream can move the control while the modulation stands still. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011GxZqDiFP3KqriBhNdcR56 (cherry picked from commit bae480b9202b403629fcad5dc3408aec4998bd6a)