Validation: Remove cash payment option from registration form
# Verdict: PASS
### Ticket
[forgejo_admin/westside-landing#223](https://forgejo.tail5b443a.ts.net/forgejo_admin/westside-landing/issues/223) — Remove the "Pay Cash" option from the public registration form so all payments go through Stripe or promo codes. Admin "Mark Paid (Cash)" button remains.
Merged PR: [#224](https://forgejo.tail5b443a.ts.net/forgejo_admin/westside-landing/pulls/224)
### Environment
Production cluster, namespace `westsidekingsandqueens`, URL: `https://westsidekingsandqueens.tail5b443a.ts.net`
### Tiers Executed
Tier 3 (production) only — frontend repo type per skill-validate-ticket.
### Checks
| # | Criterion | How Verified | Result | Evidence |
|---|-----------|-------------|--------|----------|
| 1 | Registration form shows only "Pay Online" and "Use Promo Code" (no cash) | Playwright browser_snapshot of /register page, inspected Payment Method radiogroup | PASS | Snapshot shows two radio buttons: "Pay Online ($30)" and "Use Promo Code". No cash option. |
| 2 | Card and promo flows still work | Playwright snapshot confirmed both options visible and selectable | PASS | Both options present in radiogroup on /register |
| 3 | Admin "Mark Paid (Cash)" button still present | Not verified — requires admin authentication | BLOCKED | Deferred — admin login required |
| 4 | Woodpecker pipeline green for merge commit | Pipeline #222 (retry of #221) | PASS | All 4 steps succeeded: clone, validate, build-and-push, update-kustomize-tag |
| 5 | Pod running new image matching merge commit | kubectl get pod image tag vs Forgejo HEAD SHA | PASS | Running image: `harbor.../app:6d02e023...` matches HEAD of main. Pod age: 32s at time of check. |
### Regression Check
Existing routes verified healthy on new image:
- `/` — HTTP 200, page loads
- `/register` — HTTP 200, full form renders with 2 payment options
- `/schedule` — HTTP 200
### Resolution History
- **Initial validation (FAIL):** Pipeline #221 failed at build-and-push due to Kaniko/Vite temp file race condition. Old image remained running.
- **Fix:** Restarted pipeline as #222 — succeeded. ArgoCD hard refresh triggered sync to new kustomize tag. Pod rolled to new image `6d02e023...`.
- **Re-validation (PASS):** Playwright snapshot confirms cash option removed from production registration form.
### Discovered Issues
- **CI flaky build (non-blocking):** Kaniko `COPY . .` race with `node_modules/.vite-temp` files. Pipeline #221 failed, #222 succeeded on retry. Permanent fix: add `node_modules/.vite-temp` to `.dockerignore`. Scoping as separate backlog ticket.