Result: PASS — all 46 scene steps executed, every assertion held (including the two new 2026-08-14 verification additions).
| Scene | agents/hermes/demo_scenes/dental_appointment_booking (revision 2026-08-14) |
| Run | 2026-08-14T075807Z (UTC) |
| Instance | Test Client Dental (test-client-dental.dental.veripath.co.uk) |
| Role | RECEPTION — reception.test-client-dental |
| Reseed | seed_dental_demo --tenant test-client-dental --reset (auto, before run) |
| Viewer | None connected (unattended verification run — viewer wait timed out) |
| Duration | ~7 min (07:58:07Z – 08:05:14Z) |
Clean re-run requested by OpenCode (handoff note 2026-08-14) to verify two
fixes from the 2026-08-13 demo-feedback note:
— placeholders)./dental/appointments/) instead of the practices list.| # | Role | Action | Result |
|---|---|---|---|
| 1 | — | NOTE: welcome narration | OK |
| 2 | RECEPTION | USER (fresh session) | OK |
| 3 | RECEPTION | NAVIGATE {URL} → Keycloak login | OK |
| 4 | RECEPTION | KEYCLOAK_LOGIN | OK — landed /dental/appointments/ (default-home fix, see note below) |
| 5 | RECEPTION | VERIFY_VIEW /dental/appointments/ | OK — new post-login default home asserted |
| 6 | RECEPTION | VERIFY_TEXT Appointments | OK |
| 7 | RECEPTION | SCREENSHOT appointment_list | OK |
| 8 | RECEPTION | PAUSE_AND_DISCUSS (appointments desk) | OK — timeout, no questions |
| 9 | RECEPTION | NAVIGATE booking form | OK |
| 10 | RECEPTION | VERIFY_VIEW /dental/appointments/create/ | OK |
| 11 | RECEPTION | VERIFY_TEXT Book Appointment | OK |
| 12 | RECEPTION | TYPE practice → Test Client Dental Practice | OK — pk 55, dependent chain preserved |
| 13 | RECEPTION | WAIT_MS 1500 | OK |
| 14 | RECEPTION | TYPE appointment_type → Filling | OK — FILLING, practice preserved |
| 15 | RECEPTION | WAIT_MS 1500 | OK |
| 16 | RECEPTION | PAUSE_AND_DISCUSS (symptoms-to-type) | OK — timeout, no questions |
| 17 | RECEPTION | TYPE provider → Holloway, Sarah | OK — pk 151 |
| 18 | RECEPTION | WAIT_MS 1500 | OK |
| 19 | RECEPTION | TYPE date → NEXT_MONDAY (2026-08-17) | OK |
| 20 | RECEPTION | WAIT_MS 1500 | OK |
| 21 | RECEPTION | VERIFY_TEXT Available slots | OK — 19 slots |
| 22 | RECEPTION | SCREENSHOT booking_filters | OK |
| 23 | RECEPTION | TYPE patient_id → Oliver Reed | OK — pk 14 (Oliver Reed — 30/06/1975) |
| 24 | RECEPTION | PAUSE_AND_DISCUSS (patient record) | OK — timeout, no questions |
| 25 | RECEPTION | TYPE nhs_band → Band 2 | OK |
| 26 | RECEPTION | TYPE symptoms note | OK |
| 27 | RECEPTION | CLICK first slot | OK — 09:00 checked |
| 28 | RECEPTION | SCREENSHOT booking_form_filled | OK |
| 29 | RECEPTION | PAUSE_AND_DISCUSS (ready to submit) | OK — timeout, no questions |
| 30 | RECEPTION | CLICK submit | OK |
| 31 | RECEPTION | WAIT_MS 2500 | OK |
| 32 | RECEPTION | VERIFY_VIEW /dental/appointments/ | OK — redirected to detail pk 1044 |
| 33 | RECEPTION | VERIFY_TEXT Appointment booked | OK — success banner |
| 34 | RECEPTION | VERIFY_TEXT Oliver Reed | OK |
| 35 | RECEPTION | VERIFY_TEXT BOOKED | OK — "Booked" badge (title case, as known) |
| 36 | RECEPTION | VERIFY_TEXT AI Priority | OK |
| 37 | RECEPTION | SCREENSHOT booking_created | OK |
| 38 | RECEPTION | PAUSE_AND_DISCUSS (created) | OK — timeout, no questions |
| 39 | RECEPTION | NAVIGATE triage queue | OK |
| 40 | RECEPTION | VERIFY_VIEW /dental/triage/ | OK |
| 41 | RECEPTION | VERIFY_TEXT AI Triage Dashboard | OK |
| 42 | RECEPTION | VERIFY_TEXT Oliver Reed | OK — new booking top of Needs Triage |
| 43 | RECEPTION | VERIFY_TEXT 429391000000103 | OK — SNOMED column renders a real code (Lucas Ferreira, facial swelling) |
| 44 | RECEPTION | SCREENSHOT triage_queue | OK |
| 45 | — | NOTE: closing narration (handoff to dentist stage) | OK |
| 46 | — | Q&A_SESSION | OK — no viewer, floor open 30s, closed |





No viewer connected — no questions, no conversation gaps. viewer-qa
knowledge base unchanged (no new Q&A pairs to record).
1. IMPORTANT — the post-login default-home change was NOT live until the
container was restarted. The routing code was correct on disk
(dashboards/routing.py + tenancy/views.py, mtime 2026-08-14 06:03), but
dental_app runs daphne (started 2026-08-13T07:24) which does not
auto-reload. The first login of this run landed on /dental/practices/
(verified twice). docker restart dental_app fixed it — subsequent login
lands on /dental/appointments/ (verified live, step 4-5). Recommendation:
after any code change on the bind-mount, restart dental_app before
verifying "live" behaviour — the skill's field notes already warn about
daphne template staleness; this is the same class of issue for Python code.
("Verified live" in your HANDLED summary was verified against the code path /
fresh manage.py processes, not the running daphne.)
2. SNOMED fix confirmed live — seeded triaged rows carry real codes
(DB check: p1–p5 all populated; e.g. Lucas Ferreira p5 → 429391000000103,
Fatima Hassan p4 → 22253000, Oliver Reed p2 → 28423000) and the dashboard
renders them (step 43 assertion). Needs-Triage table intentionally has no
SNOMED column (as agreed) — the new booking's code becomes visible once
triaged.
3. All prior fixes held — dependent-select chain (practice → type →
provider → date) round-trips correctly; hidden provider_id/appointment_type
POST fields work (pk 1044 created BOOKED + triaged); success banner renders.
4. Booking mutation — appointment pk 1044 created (Oliver Reed, Filling,
Band 2, Sarah Holloway, 2026-08-17 09:00). Reseeded next run as usual.
DEMO_RESULT: PASS
SCENE: agents/hermes/demo_scenes/dental_appointment_booking
REPORT: https://wiki.veripath.co.uk/agents/hermes/demo_runs/dental_appointment_booking/20260814T075807Z
Both 2026-08-14 fixes verified live in the browser: SNOMED codes render in
the triage dashboard, and post-login lands on the appointment book (after the
required container restart). No defects found in the booking flow itself.