Run push notification channels on independent fixed cadences #713

Closed
opened 2026-08-13 06:18:52 +00:00 by timmy · 0 comments
Owner

Problem

Unread-update delivery and deadline reminders share one sequential poll loop. A slow unread fan-out delays mobile deadline reminders, and each run's duration is added to the configured cadence.

Scope

Run unread updates and deadline reminders in independent, non-overlapping workers aligned to monotonic scheduled ticks. Preserve channel-specific leases, timeout/concurrency settings, session checks, and clean lifespan cancellation.

Acceptance criteria

  • A blocked unread dispatch does not delay a deadline dispatch.
  • A blocked deadline dispatch does not delay unread polling.
  • Short runs stay aligned to fixed scheduled ticks instead of completion-plus-interval drift.
  • Overruns never overlap within a channel or create catch-up bursts.
  • Lifespan cancellation awaits both workers cleanly.
  • Focused and full test suites pass.

Evidence

src/main.py currently awaits unread dispatch and then deadline dispatch in _push_poll_loop; existing issue #711 isolated exceptions and leases but intentionally retained sequential scheduling. No historical issue title or recent commit implements independent push channel workers.

## Problem Unread-update delivery and deadline reminders share one sequential poll loop. A slow unread fan-out delays mobile deadline reminders, and each run's duration is added to the configured cadence. ## Scope Run unread updates and deadline reminders in independent, non-overlapping workers aligned to monotonic scheduled ticks. Preserve channel-specific leases, timeout/concurrency settings, session checks, and clean lifespan cancellation. ## Acceptance criteria - A blocked unread dispatch does not delay a deadline dispatch. - A blocked deadline dispatch does not delay unread polling. - Short runs stay aligned to fixed scheduled ticks instead of completion-plus-interval drift. - Overruns never overlap within a channel or create catch-up bursts. - Lifespan cancellation awaits both workers cleanly. - Focused and full test suites pass. ## Evidence `src/main.py` currently awaits unread dispatch and then deadline dispatch in `_push_poll_loop`; existing issue #711 isolated exceptions and leases but intentionally retained sequential scheduling. No historical issue title or recent commit implements independent push channel workers.
timmy self-assigned this 2026-08-13 06:22:58 +00:00
timmy closed this issue 2026-08-13 06:25:03 +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#713
No description provided.