Validation: basketball-api#429 — Migration jersey_public_orders applied to prod

validation-429-2026-04-11 Doc

validation pass

Validation: basketball-api#429 — jersey_public_orders migration applied to production

Verdict: PASS — 2026-04-11 20:37 UTC.
Note: this migration was originally numbered 040 in PR #433, but renamed to 043 by PR #442 to resolve a dual-revision collision with 040_create_16u_local_queens_team.py from a concurrent merge. The schema content of the migration is byte-identical to the original; only the revision metadata changed. The migration finally executed in production after the WESTSIDE_STREAMLIT_RO_PASSWORD env var fix landed via pal-e-deployments#111 (see validation-449-2026-04-11 for that fix's full verification).

Acceptance criteria verified

Check Command Result
<code>jersey_public_orders</code> table exists <code>psql -c "\dt jersey_public_orders"</code> ✅ table present, owner=basketball
Migration revision applied <code>psql -tc "SELECT version_num FROM alembic_version"</code> ✅ <code>044</code> (chain reached past 043)
<code>JerseyPublicOrder</code> model importable <code>kubectl exec deploy/basketball-api -- python -c "from basketball_api.models import JerseyPublicOrder; print(JerseyPublicOrder.__tablename__)"</code> ✅ prints <code>jersey_public_orders</code> (verified via the running pod after rollout)
basketball-api pod healthy after migration <code>kubectl -n basketball-api get pods -l app=basketball-api</code> ✅ 1/1 Running, 0 restarts
ArgoCD basketball-api <code>kubectl -n argocd get application basketball-api</code> ✅ <code>Synced / Healthy</code>

Fix chain history

  • basketball-api#429 + PR #433 — original T2 ticket and merge. Introduced 040_add_jersey_public_orders.py. Created dual-revision collision with pre-existing 040_create_16u_local_queens_team.py.
  • basketball-api#441 + PR #442 — renamed jersey migration to 043. Fixed the 040 collision but uncovered a hidden 041 collision.
  • basketball-api#443 + PR #444 — renamed streamlit_ro_role migration to 044 to fix the 041 collision. Migration body of jersey unchanged.
  • basketball-api#449 + pal-e-deployments#111 — injected env var so migration 044 could finally run, which transitively allowed alembic to advance through 043 (this ticket's migration) and 044.

Schema verified in prod

Table jersey_public_orders created with all 21 columns, 3 CHECK constraints (kq, tier, status), 4 indexes (submitter_sub, email, status, created_at DESC), and 2 ON DELETE SET NULL FKs to parents and players. Schema matches the original PR #433 spec byte-for-byte.

What this unblocks

  • T3 (basketball-api#430) — POST /api/jersey-public-orders endpoint (Wave 2) can be dispatched now
  • T5 (basketball-api#432) — GET admin endpoint (Wave 2) can be dispatched now
  • System B production rollout is unblocked at the database layer
  • arch-jersey-intake
  • story:WS-S31
  • validation-449-2026-04-11 — sister validation for the env var fix that finally let this migration apply