Review: T7 westside-landing Gear/landing link to /jersey-public
Verdict: APPROVED
Trivial scope — CTA link addition from (public) Gear/landing to
/jersey-public. Existing guard handles unauthenticated bounce. No decomposition needed.Template Completeness
- [x] Type (Feature)
- [x] Lineage (depends on #243, arch-jersey-intake)
- [x] Repo (forgejo_admin/westside-landing)
- [x] User Story
- [x] Context (explains bounce behavior via existing guard)
- [x] File Targets (both primary + optional secondary + explicit hands-off list)
- [x] Acceptance Criteria (6 criteria, all testable)
- [x] Test Expectations
- [x] Constraints (no Tailwind, no analytics, no auth code)
- [x] Checklist
- [x] Related
Traceability
- [x] story:WS-S31 label — admin public jersey order link
- [x] story note verified — found in project-westside-basketball user-stories section (stories-admin-list)
- [x] arch:jersey-intake label — Jersey Intake Systems (A, B, C)
- [x] arch note verified — arch-jersey-intake exists (doc, active, westside-basketball)
- [x] Forgejo issue — forgejo_admin/westside-landing#245, state=open
File Targets
- [x]
src/routes/(public)/gear/+page.svelte— verified exists on main via Forgejo API - [x]
src/routes/(public)/+page.svelte— verified exists on main via Forgejo API (optional secondary CTA) - [x]
src/routes/(app)/+layout.svelte— guard verified:PUBLIC_APP_ROUTESdoes NOT include/jersey-public, so the reactive$effectwill redirect unauthenticated users to/signin. Claim in ticket context is accurate. - [x]
src/routes/(app)/jersey-public/*— correctly absent; that route is created by T1/#243, which this ticket explicitly depends on.
Repo Placement
OK. Single repo (westside-landing). Scope matches file targets.
Dependencies
Hard dependency on
westside-landing#243 (T1, jersey-public route). Documented in Lineage, Context, and Checklist. If merged before #243, the CTA link 404s — dev agent must wait for #243 merge or coordinate merge order. Recommend tagging as blocked-by:#243 on the board for visibility.Acceptance Criteria
All six criteria are agent-verifiable: visible CTA presence, correct
href="/jersey-public", plain anchor (no JS interception), mobile ≥44px tap target, and manual bounce verification. "Reuses existing styles — no new visual invention" is a taste call but sufficient for PR review. Landing CTA has an explicit escape hatch (omit + document why) which is appropriate given Lucas's iteration preferences.Blast Radius
Minimal. Two
(public) marketing pages, additive only. No auth code touched (explicit constraint). No shared components changed. Existing guard is production-verified. Cannot break other routes.Decomposition
No decomposition needed. 1 required file + 1 optional file, 6 AC, plain anchor tag, no logic. Well under 5-minute rule.
Recommendation
APPROVED. No action needed on ticket body or labels.
- [OPTIONAL] Consider adding
blocked-by:westside-landing#243board label so the kanban surface makes the dependency explicit (not a blocker for READY — already documented in ticket body).
Ready to move backlog → todo.