pub fn boundary_density(states: &[u8], k: usize, window: usize) -> f64
Compute rolling boundary density: fraction of last W windows in Boundary state. states is a slice of 0=Admissible, 1=Boundary, 2=Violation
states