events: reminders + digests from the agenda + 14 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
reminders.sx bridges calendar + durable rosters to notify: ev/occurrence- reminders (one per booked attendee, fires lead before start, idempotency key occ-key/recipient/lead), ev/agenda-reminders (sorted by fire-at), ev/due-reminders (fire-at <= now), ev/reminder->msg (notify wire shape), ev/agenda-digest + ev/agenda-for-p. 196/196 green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@ capacity rules, transactional booking, and a flow-driven notification dispatcher
|
||||
|
||||
## Status (rolling)
|
||||
|
||||
`bash lib/events/conformance.sh` → **182/182** (Phases 1-2 + Phase 3 notification delivery flows)
|
||||
`bash lib/events/conformance.sh` → **196/196** (Phases 1-2 + Phase 3: notification flows + reminders)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -73,7 +73,7 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
- [x] `notify.sx` — reminder/digest flows over injected transport
|
||||
- [x] retry/backoff on transport failure (flow suspend/resume)
|
||||
- [x] tests: delivery success, retry path, idempotent re-send
|
||||
- [ ] wire reminders to occurrences (schedule "starts in 1h" from agenda)
|
||||
- [x] wire reminders to occurrences (`reminders.sx` — derive from agenda + roster)
|
||||
- [ ] NOTE: shared with `feed/notify` — candidate for later extraction to a
|
||||
`delivery-on-sx` once a second consumer is real. **Delivery core
|
||||
(request→dispatch→resume, idempotent, bounded retry) is the extraction seam.**
|
||||
@@ -84,6 +84,14 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
|
||||
## Progress log
|
||||
|
||||
- 2026-06-07 — Reminders + digests from the agenda. `reminders.sx` bridges
|
||||
calendar + durable rosters to notify: `ev/occurrence-reminders` (one per
|
||||
booked attendee, fires `lead` before start, idempotency key
|
||||
occ-key/recipient/lead), `ev/agenda-reminders` (window-wide, sorted by
|
||||
fire-at), `ev/due-reminders` (fire-at ≤ now — the scheduler query),
|
||||
`ev/reminder->msg` (projects to notify's (id recipient body) shape),
|
||||
`ev/agenda-digest` + `ev/agenda-for-p` (an actor's upcoming booked
|
||||
occurrences). +14 tests, 196/196 green.
|
||||
- 2026-06-07 — **Phase 3 start: notification delivery flows.** `notify.sx`:
|
||||
reminders + digests as durable `flow`s over an INJECTED transport (the host
|
||||
`dispatch`). A flow `request`s delivery (suspend), the host sends and resumes
|
||||
|
||||
Reference in New Issue
Block a user