Review: T7 westside-landing Gear/landing link to /jersey-public

review-952-2026-04-10 Doc

review approved

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_ROUTES does NOT include /jersey-public, so the reactive $effect will 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#243 board label so the kanban surface makes the dependency explicit (not a blocker for READY — already documented in ticket body).
Ready to move backlog → todo.