Review: Remove cash payment option from registration form

review-859-2026-04-06 Doc

review ready

Verdict: READY

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Standalone, discovered during registration flow review
  • [x] Repo — forgejo_admin/westside-landing
  • [x] User Story — clear parent registration flow story
  • [x] Context — sufficient background on cash operational overhead
  • [x] File Targets — 2 files to modify, 1 file explicitly excluded
  • [x] Acceptance Criteria — 4 testable conditions
  • [x] Test Expectations — manual browser verification
  • [x] Constraints — do-not-touch list, companion API ticket noted
  • [x] Checklist — PR, tests, no unrelated changes
  • [x] Related — project and companion repo identified

Traceability

  • [x] story:WS-S17 label — "As a parent, I want to register my child online (info + photo + payment + waiver) so that signup is one seamless flow"
  • [x] story note verified — found in project-westside-basketball user-stories section (Parent list)
  • [x] arch:westside-app label — westside SvelteKit frontend
  • [ ] arch note MISSING — [SCOPE] Create architecture note arch-westside-app for component westside-app
  • [x] Forgejo issue — forgejo_admin/westside-landing#223, open

File Targets

  • [x] src/routes/(app)/register/+page.svelte — verified: cash radio button at L479-481, cash conditional note at L486-488, cash branch in getSubmitText() at L79
  • [x] src/app.css — verified: .cash-note rule at L2106, .info-value-cash rule at L3584-3586
  • [x] src/routes/(app)/players/[id]/+page.svelte (DO NOT TOUCH) — verified: "Mark Paid (Cash)" button at L647, handleMarkPaid() at L279

Repo Placement

OK. Issue filed on forgejo_admin/westside-landing, which is the correct repo for the westside SvelteKit frontend. Companion API ticket identified (board item #860 on basketball-api) for removing cash from API validation — correctly scoped as a separate ticket in a separate repo.

Dependencies

  • [x] Board item #860 ("Remove cash from registration payment method validation") — independent. Frontend removal can deploy first; the API still accepts cash but no UI path will offer it. Not a blocker.
  • [x] No items in in_progress that block this work.

Acceptance Criteria

4 criteria, all manually testable via browser verification. Clear before/after behavior defined. Card and promo flows are existing functionality (regression only). The "Mark Paid (Cash)" admin button criterion ensures the do-not-touch constraint is verified. No ambiguous language.

Blast Radius

  • .info-value-cash CSS class is dead code — defined in app.css at L3584 but never referenced in any Svelte component. Safe to remove.
  • No other components reference the cash payment method outside the registration form and the player profile admin button (explicitly excluded).
  • basketball-api still accepts "cash" as a valid payment_method at routes/register.py:1182 — companion ticket #860 handles that separately.
  • Rollback is straightforward: revert a single PR on one repo.

Decomposition Assessment

2 files to modify (register page + app.css), 4 acceptance criteria, single repo. 3 discrete code changes (remove radio button + conditional, remove getSubmitText cash branch, remove 2 CSS rules). Fits within both the three-thing limit and the five-minute rule. No decomposition needed.

Recommendation

  • [SCOPE] Create architecture note arch-westside-app for the westside SvelteKit frontend component. This is a platform-wide gap, not specific to this ticket — does not block dispatch.
No other action needed. Ticket is dispatch-ready.