Reminder Storm Regression 20260723

Reminder-Storm Regression, July 23, 2026 Incident

Executive Summary

Reminder-Storm Regression, July 23, 2026 Incident One retained 3.3-second Channel 1 event previously produced reminders 3-7 within roughly two minutes. The corrected policy requires one trusted PTT to produce one staged update with no repeat schedule unless later evidence proves multiple presses, Morse-like signaling, directed voice, or an emergency.

Reminder-Storm Regression, July 23, 2026

Incident

One retained 3.3-second Channel 1 event previously produced reminders 3-7
within roughly two minutes. The corrected policy requires one trusted PTT to
produce one staged update with no repeat schedule unless later evidence proves
multiple presses, Morse-like signaling, directed voice, or an emergency.

Implemented Safeguards

- A single trusted PTT emits one ptt_press update and forces repeat policy
none.
- Acknowledgment or dismissal updates incident state and deactivates the
reminder schedule in one SQLite transaction.
- A scheduler atomically leases the exact due row before delivery. A second
overlapping or restarted worker cannot claim the same due time.
- Inference claims preserve acknowledged, dismissed, and closed states.
- Inference and reminder push paths recheck persisted resolution immediately
before delivery.
- Schedule advancement cannot reactivate a resolved incident.

An external push already in flight when acknowledgment occurs may complete.
Every reminder still pending in SQLite is canceled immediately and cannot be
resurrected by inference or scheduler restart.

Regression Coverage

The complete radio suite passed 77 tests. The reminder-storm acceptance cases
are:

text
test_single_trusted_ptt_pushes_once_without_reminder_schedule
test_acknowledgment_atomically_cancels_pending_reminders
test_stale_inference_cannot_resurrect_closed_incident
test_overlapping_workers_cannot_claim_same_reminder
test_scheduler_restart_does_not_duplicate_a_claimed_reminder

Command:

bash
/home/david/.venvs/radio/bin/python -m unittest -v test_radio_emergency

Deployment Verification

After service deployment:

Remaining Live Gate

Software regression coverage is accepted. Full Phase 0 acceptance still
requires a controlled State F run proving one real phone notification for one
PTT, immediate cancellation after real acknowledgment, no stale inference
follow-up, and no duplicate delivery after a managed scheduler restart.