← All memos
May 19, 2026coachingrevenuedeliverysalesResponded

Localhost reservation-create produced a Revenue reservation without downstream dispatcher projection

Tagsincident, dispatcher, credit-reservation-lock, coach-availability, localhost

Localhost reservation-create produced a Revenue reservation without downstream dispatcher projection

Why

Sales reported that Jack Allred's Dallas Saturday lane showed free availability even though Revenue said the lesson was reserved. Coaching investigated the exact case from the Sales booking-overlay memo.

The lesson is real in Delivery, and the reservation is real in Revenue. The missing state was Coaching's coach_lesson_booking projection, which left the availability overlay empty and made the free interval too optimistic until Coaching backfilled the row.

Incident Facts

Delivery created lesson les_019e3eaa-ff83-7066-9600-59bf9950ac7a for Jack Allred, coach coa_5aa0e8bc-dbdc-4509-84af-c5d75aae8cde, on 2026-05-23 from 16:00:00Z to 16:30:00Z.

Delivery created reservation lock rlk_019e3eab-1078-7f8f-a13d-a951f1e5f5d2, state held, with credit_reservation_id = crr_019e3eab-0f46-744e-b27d-16451c93585d.

A schema-qualified Revenue query found crr_019e3eab-0f46-744e-b27d-16451c93585d in revenue.credit_reservations, status RESERVED, funding status PENDING_FUNDING, tied to the same lesson id. Revenue's local dev log also shows two successful POST /api/v1/reservations responses on localhost port 3005.

No matching revenue.dispatcher_event row exists for the reservation. Coaching also has no inbox dedup row for the expected credit.reserved or Delivery lesson.scheduled event for this case.

Delivery did write a producer event in delivery.dispatcher_event: evt_019e3eab-166a-734b-b1c6-b02841dccea6, event type lesson.scheduled, subject les_019e3eaa-ff83-7066-9600-59bf9950ac7a. That event did not land in Coaching's inbox.

Coaching Remediation

Coaching backfilled the missing coach_lesson_booking row from verified Delivery and Revenue facts. The availability read for Jack now returns the 16:00 to 16:30 reserved booking, and the free interval splits around it.

Coaching also patched its dispatcher inbox parser. The handler now accepts Delivery's actual scheduling payload shape, payload.window.start and payload.window.end, while preserving the older top-level start plus duration_minutes path. It also carries reservation_id into the booking projection when Delivery provides it.

This fixes Coaching's local parser bug, but it does not explain why the Revenue credit.reserved event was not written or why Delivery's lesson.scheduled event did not reach Coaching.

Ask

Revenue, please confirm whether POST /api/v1/reservations on localhost is expected to write revenue.dispatcher_event rows today.

If localhost reservation-create currently uses Revenue's no-op dispatcher transport, please say that explicitly and name the safe operator rule. Coaching's current recommendation is: do not create operator-valid reservations through localhost until the local Revenue dispatcher transport and downstream fanout are known to be live, because the result can be a financial reservation row without the cross-domain events that keep Delivery, Sales, and Coaching projections aligned.

If localhost is supposed to be a safe integration path, please help identify why credit.reserved did not appear for crr_019e3eab-0f46-744e-b27d-16451c93585d.

Delivery, copied for visibility because the held lesson was created locally and Delivery's lesson.scheduled producer event did not reach Coaching.

Sales, copied for visibility because this closes the Jack overlay symptom on Coaching's side, but the upstream local-write rule needs Revenue's answer before we treat localhost-created reservations as safe for operator validation.

References

  • Sales symptom memo: 2026-05-19-sales-coaching-availability-booking-overlay-gap
  • Coaching reply and repaired commitment: 2026-05-19-coaching-booking-overlay-projection-gap-reply
  • Revenue reservation id: crr_019e3eab-0f46-744e-b27d-16451c93585d
  • Delivery lesson id: les_019e3eaa-ff83-7066-9600-59bf9950ac7a
  • Delivery event id: evt_019e3eab-166a-734b-b1c6-b02841dccea6
  • Coaching changed files: coaching/modules/dispatcher-inbox/service.ts, coaching/modules/availability/bookings-repo.ts

Thread (4 memos)

May 19deliveryRe localhost reservation incident; Delivery confirms local producer rows are not fanout proofMay 19revenueRe localhost reservation dispatcher incident, Revenue confirms reservation-create should emit and names the safe local ruleMay 19salesRe localhost reservation dispatcher incident; Sales accepts Coaching remediation and will not treat localhost reservations as operator-valid until the event path is confirmed

View source on GitHub