QA approved. CI clean (lint+typecheck, test, build all pass). Code review: GRO-2342 service lookup batched correctly, shape consistent across appointment and waitlist cards, guard w.serviceId correct. Tests cover both card shapes cleanly. GRO-2139 advisory lock wraps full drop->migrate->seed chain, pool max:6 load-bearing. UAT_PLAYBOOK.md TC-API-8.20 present. GRO-2294 carry-forward plumbing in scope. LGTM — self-merge.
QA approved (GRO-2331). CI green (Lint, Test, Docker all success). Diff scoped to GRO-2319 only. UAT_PLAYBOOK TC-API-8.19 added. GET /portal/appointments surfaces active waitlist rows as synthetic waitlisted cards correctly. Seed upsert is idempotent. Tests cover presence and absence cases.
QA approved (GRO-2331). CI green (Lint, Test, Docker all success). Diff scoped to GRO-2319 only. UAT_PLAYBOOK §5.12f (TC-WEB-5.12.26–29) updated. normalizeStatusKey no_show→no-show, deriveDisplayStatus, and waitlist card styling/actions logic correct. Tests cover all new paths.
LGTM. Code review PASS: all 4 fields match spec, medicalAlerts jsonb cast correct, updatePetSchema via .partial() correct, UAT_PLAYBOOK.md §3 TC-API-3.8→3.15 already documented. CI: Test ✓, Lint & Typecheck ✓ (first L&TC was a 12m runner flake; rerun passed).
Code review passed. All CI green (Test, Lint/Typecheck, Docker).
LGTM. Both changes are clean and correct:
QA approved. All 10 checklist items verified: export buttons conditional on stops, iOS/Android prominence correct, error path closes pre-opened tab + shows inline error, offline caching correct (NetworkFirst api-cache + CacheFirst osm-tiles), tile pre-warm on load/optimize/reorder, responsive layout single-column ≤768px, UAT_PLAYBOOK.md §5.30 present and matches implementation, CI green.
Code review passed — GRO-2157/2235/2225 all clean.
QA approved — GRO-2241 review pass. GRO-2234 handleConfirmBooking: 401 → remint → one retry with fresh session id. Header sequence test confirmed. CI green. UAT_PLAYBOOK §5.12e TC-WEB-5.12.25 confirmed. Self-merge cleared.
QA approved — GRO-2241 review pass. GRO-2234 validatePortalSession: SSO-bridge scoped sliding TTL, 30-min idle/8h cap, expired sessions blocked before slide, write-throttle present. 6 test cases clean. CI green. UAT_PLAYBOOK §8.17 confirmed. Self-merge cleared.
LGTM — code review complete (GRO-2237). Travel buffer + conflict detection: correct first-stop-zero rule, null-travel-as-zero, overlapping appointment handling, pure flag-only (no auto-move). recomputeLegsForOrder correctly uses offline heuristic for manual reorder. Two-pass stopOrder update avoids unique-constraint collision. Permutation validation exhaustive. Buffer re-applied correctly across all three endpoints. 7 unit tests cover all edge cases. CI green (Test / Lint & Typecheck / Build). UAT playbook §4.16-4.17 complete.
LGTM. GRO-2203 UUID guard is correct: safeParse before DB select, mirrors the GRO-2014 pattern in pets.ts, test covers 404 + zero-mutation, TC-API-8.16 added to UAT_PLAYBOOK.md. CI lint/typecheck pull_request failure is a transient runner checkout flap (push-event lint green on same SHA). Approved for uat merge.