From 4f73e919a0954c1b199d9d9f2f85ee69ee21704f Mon Sep 17 00:00:00 2001 From: serversdown Date: Tue, 15 Sep 2026 14:34:04 +0000 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20Unreleased=20=E2=80=94=20FFT?= =?UTF-8?q?,=20USBM=20compliance=20chart,=20sensor=20self-check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document the feat/fft-series3 work under Unreleased: Blastware-compatible channel FFT, the USBM RI8507/OSMRE compliance chart on the event-report PDF, the decoded sensor self-check strip + Frequency/Overswing sub-rows, and the seismo_lab Inspector hex reader — plus the two report-panel fixes (tick collision, header serial fit). Additive, no .h5/DB change or backfill. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01YDXjZCr4RqT2U3QvMDhgzf --- CHANGELOG.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a742b9..2650bdd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,66 @@ All notable changes to seismo-relay are documented here. --- +## Unreleased + +**Blastware Event/FFT-Report parity — the FFT, the USBM compliance chart, and +the sensor self-check.** Three analyses Blastware derives from event data, +reverse-engineered against BE12844 (MiniMate Plus) reports and reproduced in +seismo-relay: the compliance chart and the sensor-check strip now render on +the event-report PDF, and the FFT reproduces Blastware's FFT Report. All three +are additive and read from data already on disk — the `.h5` samples and the +retained raw BW binary — so there is **no `.h5`/DB change, no migration, and no +backfill**: a report regenerated for an existing event simply gains the new +panels. + +### Added +- **Blastware-compatible channel FFT (`waveform_fft`).** Reproduces Blastware's + FFT Report: DC-removed, no window, zero-padded to 4096 (0.25 Hz bins at + 1024 sps), single-sided `2/N` amplitude. Matches Blastware's dominant + frequency to the exact bin and the amplitude to report precision across all + 28 channels of the 7-event BE12844 oracle set. `channel_spectrum()` / + `dominant_frequency()`; tests in `tests/test_waveform_fft.py`. + +- **USBM RI8507 / OSMRE compliance chart on the event-report PDF + (`sfm/compliance.py`).** The velocity-vs-frequency blasting-compliance + scatter Blastware draws in the upper-right of its Event Report: each channel's + significant cycles as `(frequency, peak velocity)` points (zero-crossing + method, so each channel's cloud tops out at its PPV) plotted against the + RI8507 Drywall (0.75 in/s) and plaster (0.50 in/s) limit curves, drawn + continuous (constant-displacement bounds meeting the plateaus — no vertical + steps). Sized and positioned to match a Blastware report, measured off the + reference PDF. A technical breakdown of the curve is in + `docs/ri8507_compliance_curve.md`. + +- **Sensor self-check waveforms decoded and drawn (`minimateplus.sensor_check`).** + The "Sensor Check" traces Blastware shows to the right of the waveform panel + live in the series-3 binary's trailing block as four length-prefixed records + (`0x3c`–`0x3f`) using the same delta-block codec as the main waveform: + Tran/Vert/Long geophone ring-downs (the transducer's damped impulse response — + resonant frequency + overswing/damping) and a MicL pulse train (the mic's + known-signal gain check). `gather_report_data` decodes them from the retained + BW binary at report time; the report renders them as a strip flush against the + waveform panel plus the **Sensor Check → Frequency / Overswing Ratio** sub-rows + in the stats table. Verified against the reports on all 7 oracle events (mic + zero-crossing frequency = 20.1 Hz exact; geophone ring-downs consistent + ~7.5 Hz with overswing ~3.5). Tests in `tests/test_sensor_check.py`. + +- **Inspector tab in `seismo_lab.py` — annotated hex reader for series-3 + binaries (`minimateplus/binary_annotate.py`).** Tiles a raw Blastware file + into labeled spans (header / STRT / body record-chain / trailing metadata + + calibration + sensor-check records / footer) so a binary can be combed by eye. + +### Fixed +- **Event-report waveform panel — stacked-lane y-tick collision.** The lanes + touch, so each lane's bottom `-1.0` overprinted the next lane's top `1.0` at + the shared boundary. Prune the extreme ticks so each lane shows clean interior + ticks only. +- **Event-report header — serial+firmware line ran off the page.** The long + `BE##### V ##.##-#.## MiniMate Plus` string overflowed the right margin; + tighter right-column indent + BW's slightly smaller header size so it fits. + +--- + ## v0.30.0 — 2026-09-12 **The series-4 correctness release** — the Thor / Micromate counterpart to