events: booking cancellation + seat release + 13 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 24s
Booking stream carries :booking/:cancel events; live roster is the folded replay so cancelling frees a seat and capacity reopens. ev/cancel! (retrying append-expect), no-op on unbooked, cancelled actor may re-book. Capacity count is folded roster size. 110/110 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` → **97/97** (Phase 1 complete + Phase 2 capacity-safe booking)
|
||||
`bash lib/events/conformance.sh` → **110/110** (Phase 1 complete + Phase 2 booking + cancellation)
|
||||
|
||||
## Ground rules
|
||||
|
||||
@@ -64,7 +64,7 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
## Phase 2 — Ticketing + booking
|
||||
- [x] capacity rules; transactional booking → `persist` (no overbooking)
|
||||
- [ ] wire `booking.sx` into `api.sx` (persist-backed `ev/book`)
|
||||
- [ ] cancellation (tombstone events) + seat release
|
||||
- [x] cancellation (tombstone events) + seat release
|
||||
- [ ] paid tickets compose with `commerce` order flow
|
||||
- [x] tests: capacity edge, double-book guard, conflict detection
|
||||
|
||||
@@ -81,6 +81,13 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
|
||||
|
||||
## Progress log
|
||||
|
||||
- 2026-06-07 — Cancellation + seat release. Booking stream now carries
|
||||
:booking / :cancel events; the live roster is the FOLDED replay (book adds,
|
||||
cancel removes) so capacity reopens when a seat is freed. `ev/cancel!`
|
||||
(retrying, append-expect), `ev/cancel-with-observed`. Edge cases: cancelling
|
||||
an unbooked actor → :not-booked (no-op), double cancel → :not-booked,
|
||||
cancelled actor may re-book. Capacity count is the folded roster size, not
|
||||
the physical event count. +13 tests, 110/110 green.
|
||||
- 2026-06-07 — **Phase 2 start: capacity-safe booking.** `booking.sx`: one
|
||||
append-only persist stream per occurrence; roster = stream replayed. Booking
|
||||
decisions made against an OBSERVED (roster, last-seq) snapshot, committed via
|
||||
|
||||
Reference in New Issue
Block a user