Skip to content

feat: Watch Duty report messages (Group C) - #169

Merged
zvx-echo6 merged 1 commit into
mainfrom
feat/watchduty-reports
Sep 16, 2026
Merged

zvx-echo6 merged 1 commit into
mainfrom
feat/watchduty-reports

Conversation

@zvx-echo6

@zvx-echo6 zvx-echo6 commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

Group C of 3, follows #167 and #170. Relays human-written Watch Duty incident updates as wildfire_report messages.

  • Reports are polled only for matched, active, non-muted fires. One fire's failure never affects the others.
  • A fire's existing backlog is never sent. The first poll records a sentinel and sends nothing, and a failed seed just retries.
  • Drops WildCAD/automated entries and NIFC restatements (report_filter_patterns, editable in Adapter Config).
  • At most one report per fire per poll (the newest), recorded as sent only after delivery.
  • Routine severity. Live routing check: the region_routes.cells.fire["SC Idaho"] cell has min_severity: routine, so reports go to the same channels as fire alerts (MT 2, MeshCore #mvalerts).

Example (127 of 140 chars):

Buckhorn Fire update:
Crews have mopped up deep into the timber stringer on the north ridge.
https://app.watchduty.org/i/119989

Deploy notes (all three PRs)

Tests

2241 passed, 0 failed (was 2197). New: test_watchduty_reports.py (44).

🤖 Generated with Claude Code

https://claude.ai/code/session_01CfJYSn4wcmPKhVb6MfSQnr

New wildfire_report message: relays human-written Watch Duty incident
updates for matched fires.

- Polls the reports endpoint for each matched, active, non-muted fire
  after each successful list poll (1 s between requests). A failed
  fetch for one fire is logged and skipped.
- The first poll for a fire marks its existing reports as seen (a
  sentinel row) and sends nothing; if that fetch fails, the next poll
  retries the seed.
- Drops automated reports (WildCAD reporter, default reporter flag,
  "reported by WildCAD") and NIFC restatements
  (watchduty.report_filter_patterns, hot-editable JSON list).
- At most one report per fire per poll: the newest qualifying one. The
  others are marked skipped. A report is recorded as sent only after
  delivery (deferred commit).
- Routine severity (not paced). Same fire toggle and region routing as
  fire alerts.
- Message: "<name> update:" + first two sentences + Watch Duty link
  (never truncated).
- Settings: report_alerts_enabled, reports_per_fire_limit,
  report_filter_patterns. Removes the Group A _seed_existing_reports stub.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CfJYSn4wcmPKhVb6MfSQnr
@zvx-echo6
zvx-echo6 force-pushed the feat/watchduty-reports branch from 73e0e4d to 0a1c3ff Compare September 16, 2026 20:45
@zvx-echo6
zvx-echo6 changed the base branch from feat/watchduty-evac to main September 16, 2026 20:45
@zvx-echo6
zvx-echo6 merged commit ce7de28 into main Sep 16, 2026
@zvx-echo6
zvx-echo6 deleted the feat/watchduty-reports branch September 16, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant