Merge loops/events into architecture: events-on-sx cross-event conflict-checked booking (311 tests, 12 suites)
ev/book-checked! prevents an attendee double-booking themselves across different events by consulting their persist-derived availability for the occurrence window (:time-conflict on overlap; same-occurrence re-book stays idempotent).
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` → **303/303** (Phases 1-4 + 9 ext: fed f/b, waitlist, EXDATE/RDATE, overrides, booking/reschedule-notify, fed transport, timezones+DST, e2e delivery pipeline)
|
||||
`bash lib/events/conformance.sh` → **311/311** (Phases 1-4 + 10 ext: …timezones+DST, e2e delivery pipeline, cross-event conflict-checked booking)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -88,6 +88,13 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
|
||||
## Progress log
|
||||
|
||||
- 2026-06-07 — Cross-event conflict-checked booking (extension). Capacity is
|
||||
per-event, but `ev/book-checked!` also prevents an attendee double-booking
|
||||
THEMSELVES across different events: it consults the actor's persist-derived
|
||||
availability (ev/free-p?) for the occurrence's window and returns
|
||||
:time-conflict on overlap, else the normal ev/book-occ! result. Re-booking
|
||||
the same occurrence is idempotent (:already, not a conflict); other actors are
|
||||
unaffected. `ev/would-time-conflict?` predicate. +8 tests, 311/311 green.
|
||||
- 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,
|
||||
|
||||
Reference in New Issue
Block a user