Skip to content

v0.5.0: Geofences in any shape + four new hazard domains

Choose a tag to compare

@marc-shade marc-shade released this 01 Sep 18:38
· 17 commits to main since this release

Geofences in any shape, four new hazard domains, precise entity matching, and the last coverage zeros gone.

Geofences in three shapes (+2 tools)

  • intel_aoi_define_polygon - a named area bounded by 3-64 [lat, lon] vertices, for shapes a radius cannot express (a border region, a strait, an EEZ). Membership is exact: an event inside the bounding circle but outside the polygon is excluded. Polygons may cross the antimeridian. Existing AOI databases migrate in place.
  • intel_aoi_define_corridor - a waypoint route plus a width in km (a shipping lane, a supply road, a cable run), built on 0.4.0's great-circle segment distance; result distances are measured to the route.
  • Every intel_aoi_* tool (brief, escalation, change detection, update, list) is shape-aware through one shared filter whose circle behavior is test-verified identical to the old radius filter.

Four hazard/space domains (+4 tools = 128)

Each verified against its live API before the mocks were written:

  • intel_weather_alerts - NWS active CAP alerts (US only; zone-based alerts return honest null coordinates)
  • intel_launch_schedule - Launch Library 2 upcoming launches (hour-long cache for the free tier)
  • intel_volcano_activity - Smithsonian GVP / USGS Weekly Volcanic Activity Report
  • intel_cyclones - NHC active storms (Atlantic, Eastern/Central Pacific; zero storms is a quiet tropics, not an outage)

Precise entity and event matching

Countries, leaders, organizations, and companies no longer substring-match: "usa" inside "thousand" no longer tags the United States, "hamas" inside "Bahamas" no longer fires, "strike" inside "airstrike" no longer adds a labor-unrest category and severity bump. Word-boundary alternations and boundary-anchored keyword stems, with 15 failing-first regression tests - and measured faster per call, not slower.

Test suite

745 non-smoke tests (309 at v0.3.0), 90% statement coverage (59% before the 0.4.0 audit), with the CI ratchet raised to 89 the same day it was installed. cli.py (all 52 reachable commands) and the collector run loop - the last coverage zeros - are now tested.

Known issues, pinned by tests and tracked in ROADMAP Phase 24.5: ~30 CLI commands render upstream errors as healthy empty states, and Rich markup swallows lowercase bracketed values in CLI output. Both are the next arc.

Full detail in CHANGELOG.md.