Context
Physical GPU validation for PR #79 passed all gates, but Gate C identified one remaining medium-severity finite-input-validation gap. The validated finite-input paths are correct; this issue tracks consistent rejection of NaN/Inf across the remaining public estimator entry points.
Goal
Introduce a shared backend-native finite-input validation contract for NumPy, CuPy, and Torch without transferring complete GPU arrays to CPU.
Scope
- identify public
fit, predict, transform, and inference entry points that do not consistently reject NaN/Inf;
- validate
X, y, sample_weight, cluster labels where numerical, offsets/exposure, and relevant initialization arrays;
- preserve selected backend, dtype, and device;
- avoid full-array GPU-to-CPU transfers or per-element Python loops;
- standardize exception type and actionable error messages;
- add NumPy/CuPy/Torch regression tests, including device-purity assertions;
- document any estimators that intentionally permit NaN values.
Acceptance criteria
- all public numerical entry points either reject non-finite values consistently or explicitly document supported missing-value behavior;
- metamorphic NaN/Inf tests pass across all three backends;
- device-purity audit reports no full-design transfers introduced by validation;
- complete CPU and physical-GPU suites pass.
Relationship
Follow-up to PR #79. This is non-blocking for the finite-input paths validated there.
Context
Physical GPU validation for PR #79 passed all gates, but Gate C identified one remaining medium-severity finite-input-validation gap. The validated finite-input paths are correct; this issue tracks consistent rejection of NaN/Inf across the remaining public estimator entry points.
Goal
Introduce a shared backend-native finite-input validation contract for NumPy, CuPy, and Torch without transferring complete GPU arrays to CPU.
Scope
fit,predict,transform, and inference entry points that do not consistently reject NaN/Inf;X,y,sample_weight, cluster labels where numerical, offsets/exposure, and relevant initialization arrays;Acceptance criteria
Relationship
Follow-up to PR #79. This is non-blocking for the finite-input paths validated there.