The Scorer trait maps a PointOfInterest and InterestProfile to a f32
score. Implementations must be Send + Sync, return deterministic,
non-negative, finite values, and should normalize scores to 0.0..=1.0.
Scorer::sanitise is provided to clamp or reset invalid values.[^5]