Four patients seated within 15 minutes across four chambers (9:00 / 9:05 / 9:15) — the exact scenario the old platform couldn't do.
Try to book over an occupied chamber — including its cleaning buffer — and it's refused with a reason. Different chambers never block each other.
The hatched tail is part of the appointment. Move the session and it follows; the chamber is occupied through the end of the buffer, but the appointment stays its session length.
A booking whose session + buffer would run past closing is rejected. Back-to-back bookings (buffer end touching the next start) are allowed.
“AI books next” assigns the first free chamber automatically, never names a chamber, and runs the exact same rules as staff — no double-booking, no override.
Every booking carries who made it (staff / AI) and its status (booked, no-show, cancelled) — no-show is distinct from cancelled for reporting.
Demo runs the identical conflict engine as the production build. Times shown are America/Montreal. Data is in-memory for the demo — refresh to reset.