We wrap the parent call in a try/except; failures trigger a frequency rescue that classifies using magnitude FFT
features (centroid and band energies). The wrapper annotates path ∈ {primary, rescue} and timings. Failure injection covers: load error, shape mismatch, nan input, timeout,
class mismatch. Each run uses N signals, 5 seeds, and SNR
as stamped in the figure badges.