Review: Promote jersey page design from playground to production
Verdict: NEEDS_REFINEMENT
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:frontend label -- references frontend component
- [ ] arch note MISSING -- [SCOPE] Create architecture note arch-frontend for the westside-app frontend component
- [x] Forgejo issue -- forgejo_admin/westside-landing#236, state: open
File Targets
- [x] src/app.css -- verified: file exists, confirmed zero jersey-page/jersey-card/jersey-grid CSS classes (issue claim accurate)
- [x] src/routes/(app)/jersey/+page.svelte -- verified: exists, 448 lines, 14KB (source for move to (public))
- [x] src/routes/(app)/jersey/success/+page.svelte -- verified: exists, 439 bytes
- [x] src/routes/(app)/jersey/cancel/+page.svelte -- verified: exists, 1.1KB
- [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: exists, 29 jersey-related CSS references (read-only source)
All targets are specific enough for an agent to act on without guessing.
Repo Placement
OK. Local ~/westside-app directory is the forgejo_admin/westside-landing repo (confirmed via git remote). Issue filed on correct repo. Single-repo change -- no multi-repo coordination needed.
Dependencies
- [x] #733 "Fix 9 failing jersey/checkout tests" -- in_progress, same story:WS-S18. Not a blocker for this visual work (test fixes are independent of CSS/layout changes).
- [x] #696 "Update jersey/checkout pages to support session auth" -- QA column. Related: this ticket moves jersey to (public) layout. Agent must preserve dual-auth script logic during move. Satisfied (already in QA).
- [x] #718 "Remove opt-out from jersey ordering options" -- QA column. Aligned with AC ("Opt-out option is not rendered"). 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 evaluated:
- 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
All criteria are specific and testable. No ambiguous language.
Blast Radius
Moving routes from (app) to (public) group is low-risk: SvelteKit route groups do not affect URL paths, so existing /jersey?token=... links continue to resolve. The (app) layout (bottom-nav) will no longer render on jersey pages -- replaced by public layout (site-nav + footer). This is intentional per the issue. No other routes reference jersey page components. No downstream consumers affected. Rollback is straightforward (move files back to (app) group).
Decomposition Assessment
Three-thing limit: 3 discrete changes (move route group, paste CSS into app.css, update markup). Within limit.
Five-minute rule: 4 file targets in 1 repo. 8 acceptance criteria, but all are visual checks on the same page -- effectively one atomic change. Estimated agent time: 3-4 minutes. Within limit.
No independent subtasks that would benefit from parallelization. No decomposition needed.
Recommendation
- [SCOPE] Create architecture note arch-frontend for the westside-app frontend component in pal-e-docs to complete the traceability triangle.
- [LABEL] Board item #907 has an empty title. Set title to "Promote jersey page design from playground to production" to match the Forgejo issue.