feat(rvcsi): rvcsi-dsp (DSP stages + SignalPipeline) + ADR-096 (FFI/crate layout)
- rvcsi-dsp — reusable signal-processing stages (ADR-095 FR4): mean/variance/
std_dev/median, remove_dc_offset, unwrap_phase, moving_average, ewma,
hampel_filter(_count), short_window_variance, subtract_baseline + DspError;
scalar features motion_energy(_series), presence_score (logistic, ≈0.5 at
threshold), confidence_score, breathing_band_estimate (heuristic, FFT-free);
SignalPipeline (hampel → smooth → DC-remove → baseline-subtract → unwrap,
non-destructive of validation state) + learn_baseline. 28 tests, clippy-clean,
forbid(unsafe_code), no heavy deps.
- docs/adr/ADR-096-rvcsi-ffi-crate-layout.md — the implementation ADR: 8-crate
topology, the napi-c shim record format + contract, the napi-rs Node surface,
build/test invariants, alternatives. Indexed in docs/adr/README.md.
- CHANGELOG: rvCSI entry updated to cover the implementation crates.
https://claude.ai/code/session_01CdYAPvRTjcch6YrYf42n1z