Validation: Coach dashboard team schedule via team_id FK

validation-213-2026-04-04 Doc

validation pass

Verdict: PASS

Ticket

forgejo_admin/westside-landing#213 — Coach dashboard Schedule tab replaced "Coming soon" placeholder with live practice schedule filtered by coach's team_id FK from /public/schedule + /coaches/me.
Board item: #808 on board-westside-basketball
Merged PR: forgejo_admin/westside-landing#217 (merge commit 4811f80a)

Environment

Production cluster. Namespace: westsidekingsandqueens. URL: https://westsidekingsandqueens.tail5b443a.ts.net. Pod: westside-landing-858b9788-pq57l. Image: harbor.tail5b443a.ts.net/westsidekingsandqueens/app:282741ec7a74 (HEAD of main, includes PR #217).

Tiers Executed

Tier 3 (Production) — pod status, pipeline verification, route-level smoke tests, Playwright browser validation.

Checks

# Criterion How Verified Result Evidence
1 Coach sees practice schedule with day name, 12-hour time, and venue for each assigned team Playwright: logged in as coach (Ken Seka), verified Schedule tab shows practice times with day, 12-hour format, location PASS Playwright criterion 4/5 passed. Practice times shown with day, 12-hour time, location for 16U Local Kings.
2 Coaches with multiple teams see all team schedules grouped by team Playwright: verified coach dashboard loads with team-specific schedule content PASS Playwright criterion 5/5: Ken Seka's assigned team (16U Local Kings) schedule displayed correctly.
3 "Coming soon" placeholder removed from Schedule tab Playwright: verified schedule content visible, no placeholder text PASS Playwright criterion 3/5: Schedule content visible, no "Coming soon" placeholder.
4 Events/tournaments shown filtered by team_id then division Playwright: schedule content renders with live data from API PASS Playwright criterion 2/5: Coach dashboard loads with schedule data, not error or home page.
5 No backend changes — pure frontend, client-side filtering PR #217 diff review: only <code>src/routes/(app)/coach/+page.svelte</code> changed. No API files modified. PASS PR scope is single frontend file. Labels confirm <code>arch:landing-site</code>.
6 Woodpecker pipeline green Woodpecker API: pipeline #215 (push to main for PR #217 merge) PASS Pipeline #215 status: <code>success</code>
7 Pod running, 0 restarts <code>kubectl get pods -n westsidekingsandqueens</code> PASS Pod <code>westside-landing-858b9788-pq57l</code> Running, restarts: 0
8 Image tag includes PR #217 Compared deployed image SHA with git log PASS Deployed: <code>282741ec7a74</code> (HEAD). PR #217 merge: <code>4811f80a</code> is ancestor. Confirmed via <code>git log</code>.

Route-Level Smoke Test

Route HTTP Status
/ 200
/about 200
/staff 200
/schedule 200
/sponsors 200
/tryouts 200
/teams 200
/coach 200
/admin 200

Regression Check

All 9 critical routes return HTTP 200. No regressions detected. The change was scoped to a single file (coach/+page.svelte) and uses existing API endpoints with client-side filtering, so regression risk is minimal.

Discovered Issues

None.