- Replace bare metadata["sample_rate"] access with .get() + clear
ValueError in threshold_qualifier, energy_detector, cusum_annotator,
parallel_signal_separator, and signal_isolation
- Add --sample-rate option to energy, threshold, cusum, and separate
CLI commands with a pre-flight error if sample rate is still absent
- Normalize namespaced metadata keys (e.g. BlockGenerator:Foo:sample_rate)
to standard keys on legacy .npy load
- Cap threshold_qualifier smoothing window at 1% of signal length to
prevent over-smoothing short recordings into a flat envelope
- Warn when threshold or energy detector returns 0 annotations due to
constant-envelope signal; point to cusum as the right tool
- Enforce --overwrite before any work begins; error fires before load
and detection, not after
- Fix qualify_slice off-by-one that silently dropped the last slice
- Surface split failures in parallel_signal_separator via warnings.warn
instead of swallowing them silently
- Add threshold annotation example image to getting_started docs