Milestone: Tryout Day 1 (March 13, 2026)

milestone-2026-03-13-tryout-day-1 Doc

milestone

Tryout Day 1 — March 13, 2026

Numbers

Metric Count
Total players registered 53
Ready to play (paid + waiver) 45 (85%)
Needs waiver 5
Coaches signed up 6
Emails sent during tryouts 43+

What shipped

  • basketball-api deployed to HEAD — 9 commits of undeployed functionality (check-in toggle, assign-number, graduating_class, photo PVC, test fixes) pushed live mid-session. Zero downtime.
  • westside-app deployed from zero — SvelteKit dashboard went from undeployed to live at westsidekingsandqueens.tail5b443a.ts.net during tryouts. Stats page, admin triage (3-bucket), coach card grid — all SSR via basketball-api JSON endpoints.
  • Real-time email blast — 43 registration emails sent from the pod during tryouts. Parents received branded Westside emails with personal registration links.
  • Live data fixes — 3 families (Hasip x2, Jencarlo) had waiver records stuck due to email-mismatch bug. Diagnosed root cause (form creates duplicate parent when email differs from Stripe checkout) and manually corrected from verified DB records.
  • Stripe webhook recovery — Johan Kisuka's payment was in Stripe but webhook missed the record. Manually created player/parent/registration and sent email within minutes.

What we learned

  • Email-mismatch bug: Registration form looks up parent by email. If parent uses different email than Stripe checkout, a new parent record is created. Waiver lands on the new record, not the paid one. Needs fix: match by token, not email.
  • ArgoCD Image Updater broken platform-wide: Harbor credential error. All 7 apps affected. Manual image bumps required. Platform issue.
  • Woodpecker CI broken for SvelteKit apps: K8s backend log streaming bug. Manual docker build+push is the workaround.
  • Gmail SDK needs writable secrets dir: K8s secret mounts are read-only. Token refresh fails. Workaround: copy to /tmp before sending. Also credentials.json was missing from the secret — added manually.
  • Stripe webhook reliability: At least one payment (Johan Kisuka) was processed in Stripe but never triggered the webhook. Need to investigate missed webhooks or add a reconciliation job.

Platform under pressure

This was the first time the full Pal-E platform stack operated under real-world pressure — live users, real money, real deadlines. Two services deployed, 43+ emails sent, data fixed in real-time, a missed webhook recovered, all while 53 families were actively registering and coaches were waiting for rosters. Zero downtime. The enterprise SOP held.