Validation: basketball-api #473 first-payment 409 fix
Validation: basketball-api #473
Verdict
PASS — 2026-04-13 22:08 UTC
Ticket
- Issue:
forgejo_admin/basketball-api#473 - PR:
forgejo_admin/basketball-api#474(merged as0f5016a) - Supporting PR:
forgejo_admin/basketball-api#476(ruff fix, required to unblock push pipeline) - Deploy commit:
44aef6d(contains both #473 and #476)
Environment
- Cluster/namespace: prod /
basketball-api - Pod:
basketball-api-5cc695df4b-wcvmh - Image:
harbor.tail5b443a.ts.net/basketball-api/api:44aef6d564b843ab3f186061907b47f3f93c9edf - ArgoCD revision:
f158456
Evidence
- Pipeline: Woodpecker #487 push to main. build-and-push: success. update-kustomize-tag: success. Test step failed on 2 pre-existing issues unrelated to this fix.
- Image tag propagated:
kubectl get pods -n basketball-api— image tag matches44aef6d, status Running, 0 restarts. - ArgoCD: Synced and Healthy, revision
f158456(the kustomize tag update commit). - Smoke test:
GET /docsreturns 200. - Fix validation — Mateus (order 26): Pre-fix state: order 26 stale pending from 2026-04-11 19:32. After hit: order 26 status=canceled, new order 73 status=pending created 2026-04-13 22:07.
- Fix validation — Vince (order 27): Direct 307 redirect test. Response: 307 →
https://checkout.stripe.com/c/pay/cs_live_a1ndg8GTdAB... - Gmail send path: Test first-payment email sent to
draneylucas@gmail.com, Gmail message ID19d8927a07cd9e82.
Discovered Scope
GmailOAuthTokenExpiredalert is firing but Gmail client works (file-based token valid). Alert metric is based on file age, not auth validity — false positive. To be addressed inpal-e-platform#290observability ticket.- Forgejo squash-merge via API did not fire Woodpecker push webhook for PR #474 but did for PR #476. Root cause not identified. Merging #476 piggy-backed the #474 deploy.
- Pre-existing test failures on main:
test_send_first_payment_email(subject mismatch) andtest_migration_file_exists(missing migration 041). Separate tickets. - Two sibling checkout functions share the same stale-pending vulnerability pattern (flagged in ticket scope review). Not yet exploited in prod but worth a ticket.
Next Steps
- Lucas manual test of the payment link on phone
- Do NOT re-blast the first-payment email until Lucas confirms the flow end-to-end on a real device
- After confirmation, consider re-blast to stuck parents only (Mateus, Vince, Sarah, Jaxon, Jahzmyn)