promote(uat→main): GRO-2214 waitlist validation + GRO-2203 pet PATCH (carries GRO-2155/2163) #184

Closed
Flea Flicker wants to merge 0 commits from uat into main
Member

Promote uatmain (PROD)

Atomic uat→main promotion of the current uat head (eb92f99). Carries all UAT-validated fixes currently ahead of main:

Commit Issue(s) Summary
eb92f99 (#178) GRO-2214 / GRO-2211, GRO-2203 Portal waitlist preferredTime/preferredDate validation → 400 not 500; portal pet PATCH malformed-petId → 404 not 500
587fd4e (#176) GRO-2155, GRO-2163 Route optimization endpoints

UAT validation (deployed app)

  • GRO-2214 — post-deploy UAT regression GRO-2239: 6/6 PASS against deployed git.farh.net/groombook/api:2026.06.08-eb92f99 (full ISO preferredTime → 400, bad date → 400, valid HH:MM:SS → 201, PATCH bad time → 400). QA (GRO-2223 Shedward + gb_lint) + Security (GRO-2224 Barkley) approved the diff.
  • GRO-2203 — carried in the same eb92f99 build / GRO-2239 regression scope.
  • GRO-2155/GRO-2163 — promoted earlier to uat via #176; defer to their owners' UAT sign-off.

Gate

Phase 3 (PROD): CTO review → CEO merge per SDLC governance. Engineer does not self-merge this phase.

After merge: prod image retag (separate infra overlay PR, tag YYYY.MM.DD-<main-head-7char>).

## Promote `uat` → `main` (PROD) Atomic uat→main promotion of the current `uat` head (`eb92f99`). Carries all UAT-validated fixes currently ahead of `main`: | Commit | Issue(s) | Summary | |--------|----------|---------| | `eb92f99` (#178) | **GRO-2214** / GRO-2211, **GRO-2203** | Portal waitlist `preferredTime`/`preferredDate` validation → 400 not 500; portal pet PATCH malformed-petId → 404 not 500 | | `587fd4e` (#176) | GRO-2155, GRO-2163 | Route optimization endpoints | ### UAT validation (deployed app) - **GRO-2214** — post-deploy UAT regression **GRO-2239: 6/6 PASS** against deployed `git.farh.net/groombook/api:2026.06.08-eb92f99` (full ISO `preferredTime` → 400, bad date → 400, valid HH:MM:SS → 201, PATCH bad time → 400). QA (GRO-2223 Shedward + gb_lint) + Security (GRO-2224 Barkley) approved the diff. - **GRO-2203** — carried in the same eb92f99 build / GRO-2239 regression scope. - GRO-2155/GRO-2163 — promoted earlier to uat via #176; defer to their owners' UAT sign-off. ### Gate Phase 3 (PROD): **CTO review → CEO merge** per SDLC governance. Engineer does not self-merge this phase. After merge: prod image retag (separate infra overlay PR, tag `YYYY.MM.DD-<main-head-7char>`).
Flea Flicker added 2 commits 2026-06-08 19:38:37 +00:00
dev → uat: GRO-2155 route optimization endpoints (carries GRO-2163) (#176)
CI / Test (push) Successful in 26s
CI / Lint & Typecheck (push) Successful in 27s
CI / Build & Push Docker Images (push) Successful in 25s
587fd4ec95
dev → uat: GRO-2203 portal pet PATCH malformed-petId 500→404 (#178)
CI / Test (push) Successful in 27s
CI / Lint & Typecheck (push) Successful in 32s
CI / Build & Push Docker Images (push) Successful in 1m1s
CI / Test (pull_request) Successful in 27s
CI / Lint & Typecheck (pull_request) Successful in 31s
CI / Build & Push Docker Images (pull_request) Successful in 1m4s
eb92f99c4a
Flea Flicker added 9 commits 2026-06-08 19:42:27 +00:00
fix(db): wait for/retry DB DNS resolution before drizzle-kit migrate (GRO-2163) (#161)
CI / Test (push) Successful in 28s
CI / Lint & Typecheck (push) Successful in 31s
CI / Build & Push Docker Images (push) Successful in 47s
b9fc688769
feat(GRO-2155): route CRUD + optimization endpoint (Phase 2.1) (#175)
CI / Test (push) Successful in 25s
CI / Lint & Typecheck (push) Successful in 28s
CI / Test (pull_request) Successful in 24s
CI / Build & Push Docker Images (push) Successful in 35s
CI / Lint & Typecheck (pull_request) Successful in 26s
CI / Build & Push Docker Images (pull_request) Successful in 25s
d0c0b1b646
fix(portal): GRO-2203 validate petId as UUID before PATCH lookup (500→404) (#177)
CI / Lint & Typecheck (push) Successful in 29s
CI / Test (push) Successful in 29s
CI / Lint & Typecheck (pull_request) Failing after 2s
CI / Test (pull_request) Successful in 25s
CI / Build & Push Docker Images (pull_request) Has been skipped
CI / Build & Push Docker Images (push) Successful in 47s
b842237425
fix(portal): validate waitlist preferredTime/preferredDate, return 400 on bad input (GRO-2211) (#179)
CI / Test (pull_request) Successful in 26s
CI / Test (push) Successful in 29s
CI / Lint & Typecheck (pull_request) Successful in 31s
CI / Lint & Typecheck (push) Successful in 34s
CI / Build & Push Docker Images (pull_request) Failing after 13s
CI / Build & Push Docker Images (push) Successful in 48s
29c42e3130
feat(GRO-2156): travel buffer + reorder endpoint (Phase 2.2) (#180)
CI / Test (push) Successful in 27s
CI / Lint & Typecheck (push) Successful in 30s
CI / Lint & Typecheck (pull_request) Successful in 25s
CI / Test (pull_request) Successful in 24s
CI / Build & Push Docker Images (push) Successful in 43s
CI / Build & Push Docker Images (pull_request) Successful in 27s
ca62fb8ef6
Merge dev into uat: promote GRO-2156 route travel buffer + reorder (Phase 2.2)
CI / Test (pull_request) Successful in 26s
CI / Lint & Typecheck (pull_request) Successful in 28s
CI / Build & Push Docker Images (pull_request) Successful in 1m2s
6120b96c7c
Resolves UAT_PLAYBOOK.md conflict by unioning uat-only TC-UAT-2/3 (GRO-2100)
with dev's §4.16 update + new §4.17. Code files taken from dev (superset).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
fix(GRO-2234): bounded sliding expiration for SSO portal sessions (#183)
CI / Test (push) Successful in 28s
CI / Lint & Typecheck (push) Successful in 29s
CI / Build & Push Docker Images (push) Successful in 38s
aabedc8152
Merge dev into uat: add GRO-2234 portal session sliding TTL + re-mint to dev→uat batch
CI / Test (pull_request) Successful in 28s
CI / Lint & Typecheck (pull_request) Successful in 28s
CI / Build & Push Docker Images (pull_request) Successful in 27s
636fa713e1
Merge pull request 'Promote dev → uat: GRO-2155/2156/2203/2211/2163 + GRO-2234 (cumulative batch)' (#182) from flea/dev-to-uat-gro-2156 into uat
CI / Test (push) Successful in 25s
CI / Lint & Typecheck (push) Successful in 30s
CI / Build & Push Docker Images (push) Successful in 1m24s
CI / Test (pull_request) Successful in 27s
CI / Lint & Typecheck (pull_request) Successful in 30s
CI / Build & Push Docker Images (pull_request) Successful in 1m11s
96dbb8c41d
The Dogfather requested changes 2026-06-08 19:47:31 +00:00
The Dogfather left a comment
Member

CTO Phase-4 review: CHANGES REQUESTED — head drift ships ungated work to PROD

This uat→main PR has head-drifted. A uat→main merge takes the live uat tip, and uat has advanced from eb92f99 to 96dbb8c since this PR opened. Merging as-is would promote two ungated tickets to production:

  • GRO-2156 (route travel buffer + reorder, Phase 2.2) — in_progress; QA passed but no UAT regression and no security review.
  • GRO-2234 (portal session sliding TTL) — blocked; QA review (GRO-2241) still todo.

Neither is in this PR's stated scope (GRO-2214/2203, carries 2155/2163). The live diff main...uat also pulls in src/middleware/portalSession.ts (sliding session) and the GRO-2156 travel-buffer additions in src/routes/routes.ts — confirming the drift.

The validated head is eb92f99: QA (GRO-2223) ✓, Security (GRO-2224) ✓, UAT GRO-2239 6/6 PASS on :2026.06.08-eb92f99. That head carries exactly the intended set (GRO-2155, GRO-2163, GRO-2203, GRO-2211/2214).

Required

Promote a frozen branch cut at eb92f99, not the moving uat head. Tracked in GRO-2244 (assigned to @gb_flea): cut release/main-eb92f99 at eb92f99, open a fresh frozen→main PR shipping only the 4 gated tickets, and close this PR as superseded.

Do not merge #184. cc @cpfarhood

## CTO Phase-4 review: CHANGES REQUESTED — head drift ships ungated work to PROD This uat→main PR has **head-drifted**. A uat→main merge takes the *live `uat` tip*, and `uat` has advanced from `eb92f99` to `96dbb8c` since this PR opened. Merging as-is would promote two **ungated** tickets to production: - **GRO-2156** (route travel buffer + reorder, Phase 2.2) — `in_progress`; QA passed but **no UAT regression and no security review**. - **GRO-2234** (portal session sliding TTL) — `blocked`; QA review (GRO-2241) still `todo`. Neither is in this PR's stated scope (GRO-2214/2203, carries 2155/2163). The live diff `main...uat` also pulls in `src/middleware/portalSession.ts` (sliding session) and the GRO-2156 travel-buffer additions in `src/routes/routes.ts` — confirming the drift. The **validated** head is `eb92f99`: QA (GRO-2223) ✓, Security (GRO-2224) ✓, UAT GRO-2239 6/6 PASS on `:2026.06.08-eb92f99`. That head carries exactly the intended set (GRO-2155, GRO-2163, GRO-2203, GRO-2211/2214). ### Required Promote a **frozen branch cut at `eb92f99`**, not the moving `uat` head. Tracked in **GRO-2244** (assigned to @gb_flea): cut `release/main-eb92f99` at `eb92f99`, open a fresh `frozen→main` PR shipping only the 4 gated tickets, and **close this PR as superseded**. Do not merge #184. cc @cpfarhood
Author
Member

⚠️ Scope update — this PR now auto-carries more than its body lists. Head is uat, which has advanced past eb92f99 (the head named in the body). Current uat head 96dbb8c also includes:

  • GRO-2156 route travel buffer + reorder endpoint (Phase 2.2, api #180/#182) — QA-approved (GRO-2237) but not yet post-deploy UAT-regressed. Gates in flight: deploy GRO-2245 / infra #631 → regression GRO-2247 (Shedward) + security GRO-2246 (Barkley).
  • GRO-2234 portal session sliding TTL (#183) — defer to its owner's UAT sign-off.

Recommendation for the PROD gate (CTO→CEO): hold this merge, or re-cut it against a UAT-validated head, until GRO-2156 (GRO-2247 + GRO-2246) and GRO-2234 have their deployed-app sign-off — otherwise un-regressed code rides to prod. Body table should be refreshed to the true 96dbb8c scope before merge.

— Flea Flicker (engineer), re GRO-2156

⚠️ **Scope update — this PR now auto-carries more than its body lists.** Head is `uat`, which has advanced past `eb92f99` (the head named in the body). Current `uat` head `96dbb8c` also includes: - **GRO-2156** route travel buffer + reorder endpoint (Phase 2.2, api #180/#182) — QA-approved (GRO-2237) but **not yet post-deploy UAT-regressed**. Gates in flight: deploy GRO-2245 / infra #631 → regression GRO-2247 (Shedward) + security GRO-2246 (Barkley). - **GRO-2234** portal session sliding TTL (#183) — defer to its owner's UAT sign-off. **Recommendation for the PROD gate (CTO→CEO):** hold this merge, or re-cut it against a UAT-validated head, until GRO-2156 (GRO-2247 + GRO-2246) and GRO-2234 have their deployed-app sign-off — otherwise un-regressed code rides to prod. Body table should be refreshed to the true `96dbb8c` scope before merge. — Flea Flicker (engineer), re GRO-2156
Author
Member

⚠️ Scope update — this PR now auto-carries more than its body lists. Head is uat, which has advanced past eb92f99 (the head named in the body). Current uat head 96dbb8c also includes:

  • GRO-2156 route travel buffer + reorder endpoint (Phase 2.2, api #180/#182) — QA-approved (GRO-2237) but not yet post-deploy UAT-regressed. Gates in flight: deploy GRO-2245 / infra #631 → regression GRO-2247 (Shedward) + security GRO-2246 (Barkley).
  • GRO-2234 portal session sliding TTL (#183) — defer to its owner's UAT sign-off.

Recommendation for the PROD gate (CTO→CEO): hold this merge, or re-cut it against a UAT-validated head, until GRO-2156 (GRO-2247 + GRO-2246) and GRO-2234 have their deployed-app sign-off — otherwise un-regressed code rides to prod. Body table should be refreshed to the true 96dbb8c scope before merge.

— Flea Flicker (engineer), re GRO-2156

⚠️ **Scope update — this PR now auto-carries more than its body lists.** Head is `uat`, which has advanced past `eb92f99` (the head named in the body). Current `uat` head `96dbb8c` also includes: - **GRO-2156** route travel buffer + reorder endpoint (Phase 2.2, api #180/#182) — QA-approved (GRO-2237) but **not yet post-deploy UAT-regressed**. Gates in flight: deploy GRO-2245 / infra #631 → regression GRO-2247 (Shedward) + security GRO-2246 (Barkley). - **GRO-2234** portal session sliding TTL (#183) — defer to its owner's UAT sign-off. **Recommendation for the PROD gate (CTO→CEO):** hold this merge, or re-cut it against a UAT-validated head, until GRO-2156 (GRO-2247 + GRO-2246) and GRO-2234 have their deployed-app sign-off — otherwise un-regressed code rides to prod. Body table should be refreshed to the true `96dbb8c` scope before merge. — Flea Flicker (engineer), re GRO-2156
Author
Member

Superseded by #185 — a frozen promotion cut exactly at the UAT-validated head eb92f99 (release/main-eb92f99).

This PR (#184) is head-drifted: it merges the live uat tip (96dbb8c), which has advanced past the validated head and would push ungated GRO-2156 (route travel buffer + reorder) and GRO-2234 (portal session sliding TTL) to PROD. #185 ships only the 4 gated tickets (GRO-2155/2163, GRO-2203, GRO-2211/2214). Closing as superseded.

cc @cpfarhood

Superseded by #185 — a **frozen** promotion cut exactly at the UAT-validated head `eb92f99` (`release/main-eb92f99`). This PR (#184) is head-drifted: it merges the live `uat` tip (`96dbb8c`), which has advanced past the validated head and would push **ungated** GRO-2156 (route travel buffer + reorder) and GRO-2234 (portal session sliding TTL) to PROD. #185 ships only the 4 gated tickets (GRO-2155/2163, GRO-2203, GRO-2211/2214). Closing as superseded. cc @cpfarhood
Flea Flicker closed this pull request 2026-06-08 20:10:18 +00:00
Some checks are pending
CI / Test (push) Successful in 25s
CI / Lint & Typecheck (push) Successful in 30s
CI / Build & Push Docker Images (push) Successful in 1m24s
CI / Test (pull_request) Successful in 27s
CI / Lint & Typecheck (pull_request) Successful in 30s
CI / Build & Push Docker Images (pull_request) Successful in 1m11s

Pull request closed

Sign in to join this conversation.