1.4 KiB
1.4 KiB
V1 ADR 008: Notification Abstraction
Status: Accepted; updated to match current app state
Date: 2026-06-26
Last reviewed: 2026-07-07
Decision
NotificationAdapter in scheduler_notifications is the platform-neutral
boundary for reminder delivery. It exposes:
schedule(NotificationRequest request)cancel(String id)Stream<NotificationFeedback> feedback
The pure scheduler core computes reminder policy and directive values only. It does not import desktop, OS, process, or notification APIs.
The test fake, FakeNotificationAdapter, stores scheduled requests,
normalizes/captures cancellations, and can emit feedback events for workflow
tests.
The desktop implementation lives in scheduler_notifications_desktop.
It delegates to platform backends:
- Linux:
notify-send - macOS:
osascript - Windows and unsupported platforms: stdout fallback
The current desktop adapter satisfies the feedback-stream contract with an empty stream. OS-level click/action feedback is not implemented in V1.
Consequences
- Reminder delivery remains replaceable at the composition boundary.
- Core tests can use the fake adapter without depending on platform APIs.
- Future OS feedback support must extend the desktop package without changing the scheduler core boundary.