Make deadline reminder polling eligibility-aware #717

Closed
opened 2026-08-13 07:19:28 +00:00 by timmy · 0 comments
Owner

Problem

Deadline reminder ticks load the complete assigned-issue snapshot before checking whether any opted-in device has reached its local reminder hour or already received today’s digest. At the default 30-second cadence, that can create 2,880 unnecessary snapshot refreshes per day and contend with foreground Agenda/My Work traffic.

Acceptance criteria

  • Before all enabled devices’ local reminder hours, a deadline tick makes zero assigned-snapshot calls.
  • Once all devices are delivered for their local day, subsequent ticks make zero assigned-snapshot calls.
  • When one or more devices are eligible, one complete snapshot is shared and existing privacy, session, lease, timeout, and once-per-local-day behavior remains intact.
  • Deadline checks use an independently configurable lower-frequency cadence without delaying unread notification polling.
  • Focused tests and the full suite pass.

Evidence

src/push_notifications.py currently calls assigned() before local-hour/delivery checks; src/main.py schedules both channels at STACKCHAIN_PUSH_POLL_SECONDS (default 30s). Historical title and recent-commit review found deadline channel isolation/bounding (#711/#713), but no eligibility preflight or reduced deadline cadence.

## Problem Deadline reminder ticks load the complete assigned-issue snapshot before checking whether any opted-in device has reached its local reminder hour or already received today’s digest. At the default 30-second cadence, that can create 2,880 unnecessary snapshot refreshes per day and contend with foreground Agenda/My Work traffic. ## Acceptance criteria - Before all enabled devices’ local reminder hours, a deadline tick makes zero assigned-snapshot calls. - Once all devices are delivered for their local day, subsequent ticks make zero assigned-snapshot calls. - When one or more devices are eligible, one complete snapshot is shared and existing privacy, session, lease, timeout, and once-per-local-day behavior remains intact. - Deadline checks use an independently configurable lower-frequency cadence without delaying unread notification polling. - Focused tests and the full suite pass. ## Evidence `src/push_notifications.py` currently calls `assigned()` before local-hour/delivery checks; `src/main.py` schedules both channels at `STACKCHAIN_PUSH_POLL_SECONDS` (default 30s). Historical title and recent-commit review found deadline channel isolation/bounding (#711/#713), but no eligibility preflight or reduced deadline cadence.
timmy self-assigned this 2026-08-13 07:19:28 +00:00
timmy closed this issue 2026-08-13 07:29:21 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#717
No description provided.