37c9f7d67d
Covers the two offline (no-server) identification behaviors: - BinRAW->RAW route (4396c74): parser reconstructs a signed pulse train from the demodulated Data_RAW bit stream so has_raw_data becomes true and a BinRAW capture identifies through the same path as a RAW file. - Per-match catalog-category surfacing (41850b5): every engine match carries its own catalog category in match_details['device_category'], cross-checked against the protocol database and the DeviceMatch source value. Fixtures are embedded and written to tmp_path (the repo ignores *.sub), so a bare pytest runs green with no docker, no bound server, and no network. 11 tests, all passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>