events: end-to-end delivery pipeline (derivation -> notify flow) + 8 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m1s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m1s
ev/deliver-messages bridges SX notification messages to the Scheme notify flow: each (id recipient body) is serialized to s-expr text, spliced as quoted data into the digest-flow program, delivered over an injected transport, and results unboxed. Integration suite drives all three derivations (reminders / booking-notify / reschedule) through delivery end to end; empty batch guarded (empty digest completes without suspending). 303/303 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` → **295/295** (Phases 1-4 + 8 ext: fed f/b, waitlist, EXDATE/RDATE, overrides, booking/reschedule-notify, fed transport, timezones+DST)
|
||||
`bash lib/events/conformance.sh` → **303/303** (Phases 1-4 + 9 ext: fed f/b, waitlist, EXDATE/RDATE, overrides, booking/reschedule-notify, fed transport, timezones+DST, e2e delivery pipeline)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -74,6 +74,8 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
- [x] retry/backoff on transport failure (flow suspend/resume)
|
||||
- [x] tests: delivery success, retry path, idempotent re-send
|
||||
- [x] wire reminders to occurrences (`reminders.sx` — derive from agenda + roster)
|
||||
- [x] end-to-end pipeline: derive (reminders/booking/reschedule) → deliver via
|
||||
the notify flow (`ev/deliver-messages`, SX→Scheme bridge)
|
||||
- [ ] 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.**
|
||||
@@ -86,6 +88,16 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
|
||||
## Progress log
|
||||
|
||||
- 2026-06-07 — End-to-end delivery pipeline (closes the derivation↔delivery
|
||||
gap). `ev/deliver-messages` bridges SX notification messages to the Scheme
|
||||
notify flow: each (id recipient body) is `serialize`d to s-expression text,
|
||||
spliced as quoted data into the digest-flow program, delivered over an
|
||||
injected transport-src, and results unboxed ({:scm-string}→str). New
|
||||
integration suite drives all three derivations through delivery: reminders →
|
||||
delivered (ids = idempotency keys), transient-fail transport → failed,
|
||||
waitlist-promotion notification → delivered, reschedule notice → delivered,
|
||||
empty batch → empty (guarded: an empty digest completes without suspending).
|
||||
+8 tests, 303/303 green.
|
||||
- 2026-06-07 — Timezone + DST support (user request). `timezone.sx`: a tz maps
|
||||
wall-clock LOCAL ↔ absolute UTC (offset = local-utc). :fixed (constant) and
|
||||
:dst (std/dst offsets + two UTC transition rules, e.g. EU last-Sun-Mar/Oct
|
||||
|
||||
Reference in New Issue
Block a user