Fix sharpness calibration and simplify intervention hook
- Use random noise images instead of solid-color (blur had no effect
on spatially uniform images, making calibration a no-op)
- Generate images per-batch to avoid 200 MB upfront allocation
- Simplify hook algebraically: patches + delta * pc1_dir eliminates
projection/reconstruction/residual intermediates (~24 MB per step)
- Move SCALE_FACTOR, SHIFT_FACTOR, find_step_index to core/sampling.py
- Rename sd → shd to avoid confusion with state_dict convention
- Remove redundant [:,:,:,:3] slice and unused imports