Review: Promote jersey page design from playground to production (re-review)

review-907-2026-04-08-v2 Review

review ready

Verdict: READY

Re-review of board item #907 after refinement. Previous review: review-907-2026-04-08 (NEEDS_REFINEMENT). Both issues resolved.

Previous Issues Resolved

  • [x] [LABEL] arch:frontend changed to arch:landing-site — verified on board item
  • [x] [LABEL] Board item title set to "Promote jersey page design from playground to production" — verified on board item

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Standalone, discovered during jersey email send
  • [x] Repo — forgejo_admin/westside-landing
  • [x] User Story — As a parent clicking a jersey link from email...
  • [x] Context — Thorough explanation of unstyled CSS classes and playground redesign
  • [x] File Targets — 4 modify/create targets, 2 do-not-touch, 2 read-only references
  • [x] Acceptance Criteria — 8 criteria covering division logic, mobile/desktop, layout, Stripe flow
  • [x] Test Expectations — Manual test with real token, visual check, no unit tests (appropriate for visual promotion)
  • [x] Constraints — 5 constraints covering script preservation, URL stability, CSS conventions
  • [x] Checklist — PR, no unrelated changes, mobile/desktop screenshots, real token test
  • [x] Related — project-westside-basketball, playground URL

Traceability

  • [x] story:WS-S18 label — "As a parent, I want to receive a branded email with jersey ordering link so that I can order without bringing cash"
  • [x] story note verified — found in project-westside-basketball user-stories section (Parent stories list)
  • [x] arch:landing-site label — references the westside-landing frontend component
  • [ ] arch note MISSING — arch-landing-site not found in pal-e-docs. However, this is a systemic gap: 30+ board items use arch:landing-site including many in done. Not a blocker for this ticket.
  • [x] Forgejo issue — forgejo_admin/westside-landing#236, state: open

File Targets

  • [x] src/app.css — verified: 3878 lines, zero jersey-page/jersey-card/jersey-grid CSS classes (issue claim accurate)
  • [x] src/routes/(app)/jersey/+page.svelte — verified: exists (source for move to (public))
  • [x] src/routes/(app)/jersey/success/+page.svelte — verified: exists
  • [x] src/routes/(app)/jersey/cancel/+page.svelte — verified: exists
  • [x] src/routes/(public)/+layout.svelte — verified: public layout exists (target route group ready)
  • [x] ~/westside-playground/jersey.html — verified: exists (read-only source)
  • [x] ~/westside-playground/shared/style.css — verified: 29 jersey-related CSS references (read-only source)

Repo Placement

OK. Local ~/westside-app is forgejo_admin/westside-landing (confirmed via git remote). Issue filed on correct repo. Single-repo change.

Dependencies

  • [x] #733 "Fix 9 failing jersey/checkout tests" — in_progress, same story:WS-S18. Not a blocker (test fixes are independent of CSS/layout changes).
  • [x] #696 "Update jersey/checkout pages to support session auth" — QA column. Agent must preserve dual-auth script logic during move. Satisfied.
  • [x] #718 "Remove opt-out from jersey ordering options" — QA column. Aligned with AC. Satisfied.
  • [x] #695 "Add jersey order card to player profile page" — QA column. Not blocking.
  • [x] #694 "Add player_id param for multi-player parents" — QA column. Not blocking.
No unresolved dependencies that would block execution.

Acceptance Criteria

8 criteria — all specific and agent-testable:
  • Division-conditional images (Queens/Kings) — testable via token with known player division
  • Size + number validation enabling Order button — testable via DOM interaction
  • Stripe redirect — testable with real tokenized link
  • Mobile vertical stack / desktop 2-column grid — testable via viewport resize screenshots
  • Opt-out not rendered — testable via DOM check
  • Public layout (site-nav + footer) — testable via layout element presence

Blast Radius

16 files reference "jersey" in src/. All are URL references (/jersey), not component imports. SvelteKit route groups don't affect URL paths, so moving from (app) to (public) preserves all existing /jersey?token=... links. Low risk. Rollback is straightforward.

Decomposition Assessment

3 discrete changes (move route group, paste CSS into app.css, update markup) in 1 repo. 8 AC but all visual checks on the same page — one atomic change. Estimated agent time: 3-4 minutes. No decomposition needed.

Recommendation

  • [SCOPE] Create architecture note arch-landing-site in pal-e-docs — systemic gap affecting 30+ board items. Not a blocker for this ticket; should be tracked as a separate backlog item.
No other action needed. Ticket is ready for execution.