Build Packages / Create release (push) Successful in 16s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 7m4s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 8m40s
Build Packages / build:viewer-tgz:cpu (push) Successful in 10m54s
Build Packages / build:viewer-tgz:cuda (push) Successful in 11m40s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m30s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 16m21s
Build Packages / build:windows:nocuda (push) Successful in 17m15s
Build Packages / build:windows:cuda (push) Successful in 19m56s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 15m10s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 24m33s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 17m31s
Build Packages / Generate python client (push) Successful in 45s
Build Packages / build:rugnux:windows (push) Successful in 11m0s
Build Packages / Build documentation (push) Successful in 1m21s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 19m34s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 19m30s
Build Packages / build:rpm (rocky8) (push) Successful in 17m7s
Build Packages / build:rpm (rocky9) (push) Successful in 17m50s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 14m50s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 13m28s
Build Packages / Unit tests (push) Successful in 1h39m47s
A production broker segfaulted inside std::sort in FilterFFTResults: a NaN length key violates strict weak ordering, and libstdc++'s unguarded partition scan then walks off the array (confirmed from the deployed binary's faulting instruction). No legitimate producer of that NaN exists - both FFT back-ends emit finite lengths - so the row was corrupted, most plausibly via the one gap in the path: neither kernel launch in FFTIndexerGPU::ExecuteFFT was error-checked, so a failed launch silently hands back uninitialised device memory. An audit of every sort/nth_element site then found two more places where a NaN key is reachable by construction. - FFTIndexerGPU: cudaGetLastError after both kernel launches (the idiom every other GPU translation unit already follows). - FilterFFTResults: drop non-finite rows when building the magnitude map; bit-identical in normal operation. - SearchSpaceGroup: PearsonCC deliberately returns NaN for an unscorable operator (n_pairs < 2, zero variance) and the score sort consumed it unfiltered - ~24 operators on a cubic holohedry is past the introsort threshold, the same crash waiting to happen. Unscorable operators now rank last under a well-defined comparator. - PostIndexingRefinement: a singular QR-solved cell puts inf into cell.inverse() and 0*inf = NaN into the residual norms fed to nth_element; non-finite distances now map to +inf, which says exactly "this spot does not index" and orders consistently. - ModelScaling: a NaN R factor from the first grid point latched into best_r and won every later comparison; it is now skipped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>