Review: Update landing page gear section with new jersey images
Verdict: READY
Re-review of board item #662. Previous review returned NEEDS_REFINEMENT with 4 findings. All 4 addressed in updated issue body and labels.
Template Completeness
- [x] Type — Feature
- [x] Lineage — Standalone, Marcus shared mockups via GroupMe 2026-03-29
- [x] Repo — forgejo_admin/westside-landing
- [x] User Story — prospect viewing gear page wants to see latest jersey designs
- [x] Context — explains 4 composite images replacing 3-per-program grid, clarifies each image is a 3-row composite (warmup + jersey + shorts/skirt)
- [x] File Targets — single file specified:
src/routes/(public)/gear/+page.svelte, plus 4 MinIO URLs and a do-not-touch exclusion - [x] Acceptance Criteria — 5 criteria, all verifiable
- [x] Test Expectations — Playwright screenshot on desktop + mobile, manual visual
- [x] Constraints — MinIO URLs, dark theme, remove old refs
- [x] Checklist — present
- [x] Related — project + cross-repo jersey email ticket (basketball-api#243)
Traceability
- [x] story:WS-S26 — Season 26 landing site identity. Correct fit for gear page image updates. (Fixed from prior review: was WS-S18)
- [x] arch:landing-site — correct architecture component for public gear page. (Fixed from prior review: was arch:westside-app)
- [x] Forgejo issue — forgejo_admin/westside-landing#179, state: open
File Targets
- [x]
src/routes/(public)/gear/+page.svelte— verified: file exists at ~/westside-app, 76 lines. Currently shows 3-image grid per program (Kings: away, home, warmup; Queens: away, home, detail). Matches ticket description exactly. (Fixed from prior review: exact path now specified) - [x] MinIO
kings-home-new.jpeg— verified: HTTP 200 - [x] MinIO
kings-away-new.jpeg— verified: HTTP 200 - [x] MinIO
queens-home-new.jpeg— verified: HTTP 200 - [x] MinIO
queens-away-new.jpeg— verified: HTTP 200 - [x] Do-not-touch:
src/routes/(app)/jersey/+page.svelte— verified: exists at expected path, correctly excluded from scope
Targets are specific enough for an agent to act without guessing. Exact file path, exact URLs, exact alt text values all provided.
Repo Placement
Correct. Issue filed on forgejo_admin/westside-landing. Local checkout ~/westside-app remote origin confirms same repo. Single-repo, single-file change. No cross-repo coordination needed (related basketball-api#243 is independent).
Dependencies
- [x] MinIO images uploaded — satisfied (all 4 URLs return HTTP 200, verified via curl)
- [x] Gear page exists — satisfied (board item #409 "New page: Gear" is in done)
- [x] No in_progress blockers — checked board, no related items blocking this work
No unresolved dependencies.
Acceptance Criteria
5 ACs from the Forgejo issue, all agent-verifiable:
- [x] "Gear page shows 2 images per program (home + away)" — DOM element count via Playwright
- [x] "Old 3-image grid replaced with 2-image layout" — verify old URLs absent from source
- [x] "Images load from MinIO URLs listed above" — src attribute check via Playwright snapshot
- [x] "Mobile responsive — images scale correctly on phone screens" — Playwright screenshot at 390px viewport
- [x] "Alt text: Kings Home, Kings Away, Queens Home, Queens Away" — attribute check on img elements
All criteria are concrete and testable. No ambiguous language. (Fixed from prior review: image count now clarified — 4 composites replace 6 individual shots, context explains each composite shows warmup + jersey + shorts in one image)
Blast Radius
- 1 file touched:
src/routes/(public)/gear/+page.svelte - Old image URLs (6 total) are only referenced in this single file — confirmed via grep across entire src directory
- Old images remain in MinIO (no deletion needed) — rollback is trivial (revert one file)
- Jersey ordering page (
(app)/jersey/+page.svelte) uses different images (logo only) — unaffected - Zero downstream risk
Decomposition Assessment
Three-thing limit: 1 file target, 1 discrete change (swap image grid from 3-per-program to 2-per-program). Pass.
Five-minute rule: estimated ~2 minutes agent work (replace 6 img tags with 4, adjust grid layout). Pass.
No independent subtasks to parallelize. No decomposition needed.
Recommendation
No action needed. Ticket is ready for dispatch.