c51_loss and mse_loss kernels use NUM_ATOMS for loop bounds AND shared memory. Precompiling with NUM_ATOMS=51 then running with num_atoms=101 causes wrong loop iterations. These 2 kernels MUST use runtime #define injection to match the hyperopt config. 35 of 37 kernels remain precompiled. Only c51_loss and mse_loss use runtime NVRTC (they're the only kernels where a #define controls logic). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>