| Field | Value |
|---|---|
| Scene | agents/hermes/demo_scenes/dental_appointment_booking |
| Run ID | dental_appointment_booking_20260813T071554Z |
| Started (UTC) | 2026-08-13 07:15:54 |
| Finished (UTC) | 2026-08-13 07:31 |
| Result | PASS |
| Target | https://test-client-dental.dental.veripath.co.uk |
| Role | RECEPTION (reception.test-client-dental, test-client-dental realm) |
| Mutation | Yes — a real appointment booked (id 486), reseeded before each run |
| Interactive | Yes — 3 discussion blocks; audience resumed blocks 2 and 3; zero questions/notes |
Outcome: The receptionist booked a real appointment for Oliver Reed (Filling, NHS
Band 2, Sarah Holloway, Monday 17 Aug 2026 09:00) through the native dental booking
flow. The symptoms note triggered rule-based AI triage; the booking landed in the
triage queue with AI Priority 1/5. Every scene step and verification passed.
Infrastructure note: At step 14 the booking form was found to be serving a
stale in-memory template (the running daphne process predated today's 06:40
template fix, which preserves the practice selection across dependent-select
submits and adds the hiddenprovider_id/appointment_typePOST inputs).
dental_appwas restarted to load the fix; the form steps were then re-run
cleanly. All three defects flagged in run...055534Zare verified fixed in
this run (see Development notes).
| # | Role | Action | Result | Screenshot |
|---|---|---|---|---|
| 1 | — | NOTE (welcome narration) | OK | — |
| 2 | RECEPTION | USER (session isolated, signed out first) | OK | — |
| 3 | RECEPTION | NAVIGATE | OK → Keycloak login | — |
| 4 | RECEPTION | KEYCLOAK_LOGIN | OK → redirected to /dental/practices/ |
— |
| 5 | RECEPTION | VERIFY_VIEW /dental/practices/ |
OK | — |
| 6 | RECEPTION | NAVIGATE /dental/appointments/ |
OK | — |
| 7 | RECEPTION | VERIFY_VIEW /dental/appointments/ |
OK | — |
| 8 | RECEPTION | VERIFY_TEXT "Appointments" | OK | — |
| 9 | RECEPTION | SCREENSHOT appointment_list | OK | ![]() |
| 10 | RECEPTION | PAUSE_AND_DISCUSS (entry point, 26 appointments) | OK — timed out, no questions | — |
| 11 | RECEPTION | NAVIGATE /dental/appointments/create/ |
OK | — |
| 12 | RECEPTION | VERIFY_VIEW create | OK | — |
| 13 | RECEPTION | VERIFY_TEXT "Book Appointment" | OK | — |
| 14 | RECEPTION | TYPE practice → Test Client Dental Practice | OK (pk 34; retried after template-fix reload) | — |
| 15 | RECEPTION | WAIT_MS 1500 | OK | — |
| 16 | RECEPTION | TYPE appointment_type → Filling | OK (practice param preserved — fix verified) | — |
| 17 | RECEPTION | WAIT_MS 1500 | OK | — |
| 18 | RECEPTION | TYPE provider → Holloway, Sarah | OK (pk 88) | — |
| 19 | RECEPTION | WAIT_MS 1500 | OK | — |
| 20 | RECEPTION | TYPE date → 2026-08-17 (NEXT_MONDAY) | OK | — |
| 21 | RECEPTION | WAIT_MS 1500 | OK | — |
| 22 | RECEPTION | VERIFY_TEXT "Available slots" | OK — 19 slots | — |
| 23 | RECEPTION | TYPE patient_id → Oliver Reed | OK (pk 14) | — |
| 24 | RECEPTION | TYPE nhs_band → Band 2 | OK | — |
| 25 | RECEPTION | TYPE symptoms → "Sharp pain on hot and cold, dark spot on lower right premolar" | OK | — |
| 26 | RECEPTION | CLICK first slot | OK — 2026-08-17T09:00:00+00:00 | — |
| 27 | RECEPTION | SCREENSHOT booking_form_filled | OK | ![]() |
| 28 | RECEPTION | PAUSE_AND_DISCUSS (form ready — submit?) | OK — resumed by audience | — |
| 29 | RECEPTION | CLICK submit | OK — no JS injection needed; hidden fields present | — |
| 30 | RECEPTION | WAIT_MS 2500 | OK | — |
| 31 | RECEPTION | VERIFY_VIEW /dental/appointments/ |
OK — detail page /dental/appointments/486/ |
— |
| 32 | RECEPTION | VERIFY_TEXT "Appointment booked" | OK — success banner rendered (messages block fixed) | — |
| 33 | RECEPTION | VERIFY_TEXT "Oliver Reed" | OK | — |
| 34 | RECEPTION | VERIFY_TEXT "BOOKED" | OK — Status: Booked | — |
| 35 | RECEPTION | VERIFY_TEXT "AI Priority" | OK — 1 / 5 | — |
| 36 | RECEPTION | SCREENSHOT booking_created | OK | ![]() |
| 37 | RECEPTION | PAUSE_AND_DISCUSS (triaged — view the queue) | OK — resumed by audience | — |
| 38 | RECEPTION | NAVIGATE /dental/triage/ |
OK | — |
| 39 | RECEPTION | VERIFY_VIEW /dental/triage/ |
OK | — |
| 40 | RECEPTION | VERIFY_TEXT "AI Triage Dashboard" | OK | — |
| 41 | RECEPTION | VERIFY_TEXT "Oliver Reed" | OK — top of "Needs Triage (2)" | — |
| 42 | RECEPTION | SCREENSHOT triage_queue | OK | ![]() |
| 43 | — | NOTE (closing narration) | OK | — |
No viewer questions were submitted during this run. The audience actively resumed
the discussion at steps 28 and 37 ("Demo resumed" system events); step 10
auto-continued on timeout.
No viewer-requested notes were captured this run (notes.md empty).
Verified fixed (regression check against run ...055534Z): the three defects
flagged by the previous run are confirmed resolved in the deployed app:
?practice=34&appointment_type=FILLING&provider=88&date=2026-08-17).provider_id / appointment_type inputs.provider_id=88 and appointment_type=FILLING without any JSbase_dental.html.One process note for OpenCode: the template fixes sat on disk (06:40/06:42) but the
daphne process was serving the stale compiled template until docker restart dental_app. If you deploy template changes, remember to restart the app (or add a
reload trigger) so live instances pick them up.
/opt/hermes-demo/runs/dental_appointment_booking_20260813T071554Z/shots/dental_appointment_booking_{appointment_list,booking_form_filled,booking_created,triage_queue}.png (also embedded above from /demo-runs/)steps.log — per-step record; outbox.json — control-channel conversation