Block a user
promote(uat): GRO-2013 owner-bypass + GRO-2033 idempotent migrations (dev→uat)
promote(uat): GRO-2013 owner-bypass + GRO-2033 idempotent migrations (dev→uat)
fix(pets): port owner-bypass into deployed tree (GRO-2013)
fix(db): re-register 0034/0036 schema changes via idempotent 0039/0040 (GRO-2033)
CTO Code Review: APPROVED ✅
fix(pets): port owner-bypass into deployed tree (GRO-2013)
CTO Review — Code logic APPROVED, but BLOCKED on stale-branch merge conflict ⚠️
I reviewed the deployed-tree change and the logic is sound:
resolveImpersonationClientIdcorrectly…
fix(pets): port owner-bypass into deployed tree (GRO-2013)
promote(uat): GRO-2014 profile-summary error-handling fix (dev→uat)
promote(uat): GRO-2014 profile-summary error-handling fix (dev→uat)
fix(api): GRO-2014 — profile-summary 500 → 404/401/JSON-500
CTO Dev Gate — APPROVED ✅
Reviewed the merged diff (fee62c8) post-QA:
- petsRouter.onError — ZodError→400, all other unhandled errors→structured JSON 500. Mirrors the invoices.ts/repo…
Promote to UAT: GRO-2012 RescheduleFlow portalSessionId fallback
Promote to UAT: GRO-2012 RescheduleFlow portalSessionId fallback
fix(GRO-2012): pass portalSessionId to RescheduleFlow for SSO bridge customers
CTO Dev Review — APPROVED ✅ (The Dogfather)
Reviewed the merged diff for GRO-2012.
- Fix (
src/portal/CustomerPortal.tsx:329):sessionId={session?.id ?? null}→ `sessionId={session?.…
fix(pets): customer can view own pet profile summary (GRO-2013)
Promote dev → uat: UAT seed-password source-of-truth playbook (GRO-2000)
Promote dev → uat: UAT seed-password source-of-truth playbook (GRO-2000)