7f3c048cbf
UAT seed reproducibility fix for route optimization (§4.16). No live geocoder (UAT has no Google Maps key; provider is nearest_neighbor) — coordinates are hand-picked Seattle-metro fixtures. - seedUatRouteCohort(): 12 fixed-id clients/pets/appointments for uat-groomer on fixed date 2026-09-15. 10 pre-geocoded (multi-stop optimized route) + 2 intentionally un-geocoded (skip-and-surface path, TC-API-16.4). Idempotent: clients/pets/appointments upserted by deterministic UUID; skips cleanly when uat-groomer is absent (prod/demo). - UAT receptionist: standing `uat-receptionist@groombook.dev` staff record (role=receptionist) + Better-Auth credential from SEED_UAT_RECEPTIONIST_PASSWORD, so the route 403 path (TC-API-16.9) is reproducible without a hand-built session. - UAT_PLAYBOOK §4.16: replace manual-PATCH/geocoding pre-condition with the seeded cohort + receptionist. The SEED_UAT_RECEPTIONIST_PASSWORD secret/env wiring in groombook/infra is a separate change; the seed degrades gracefully (warn + skip) without it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>