v0.9.1 — fs-aware envelope band, clean refusal on undeclared unit
Patch release: two robustness fixes of the same class, found by diagnosing crash reports from a pre-0.9.0 server. Both reported symptoms were already resolved in v0.9.0 at the tool boundary; this release hardens the underlying functions so the same failures cannot resurface through any other caller.
Fixes
generate_envelope_reportnow resolves its default upper band edge fs-aware (min(5000, Nyquist-1)) instead of a fixed 5000 Hz. On any signal sampled below 10 kHz the fixed default exceeded Nyquist and the report failed with an invalid-band error; a default envelope report now succeeds on sub-10 kHz signals. An explicitly requested band above Nyquist is still rejected — never clamped silently.- The ISO unit conversion refuses an undeclared (
None) unit with an actionable message instead of crashing with'NoneType' object has no attribute 'lower'. It refuses, it never guesses a unit — consistent with the v0.9.0 declared-unit discipline.
Verification — test-first (both reproduced, then fixed), surface unchanged at 33 tools + 3 prompts, full suite 887 passed across Python 3.11/3.12 on Windows, Linux, and macOS.
Install: pip install predictive-maintenance-mcp==0.9.1