Second adapter wired to the new pipeline (after NWS). Reuses the
store-side emission logic added in the NWS commit.
- FIRMSAdapter.to_event() maps stored dict to pipeline Event.
- Category decision: new_ignition vs wildfire_proximity based on
properties.new_ignition (computed by FIRMS during ingest from
proximity to known fires).
- Severity passes through (FIRMS already pre-maps to our 3-level
system during _parse_csv).
- group_key and inhibit_keys use a spatial grid key
(firms:LAT:LON rounded to 0.01 degrees, ~1km) so repeated
satellite detections of the same hotspot are coalesced and
lower-severity re-detections are inhibited.
- Summary text enriched with FRP, confidence, and distance from
the nearest region anchor when present.
- 13 tests covering category decision, severity pass-through,
spatial grouping, and defensive handling of incomplete dicts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>