Validation: Issue #413 — Queens pink palette for girls program emails

validation-413-2026-04-11 Doc

validation pass

Ticket

Forgejo: basketball-api#413 — board item #910
Shipped: Queens pink palette (#e91e8c) added to brand.py + email.py. _brand_wrapper() accepts optional accent_color parameter (defaults to Kings red). send_first_payment_email() selects pink when player.division == Division.girls. Backward compatible with 7 other email functions.

Environment

Prod cluster, basketball-api namespace, pod basketball-api-7c7847dfc9-lvx2g then 7d4c488776-t9gsw (post-deploy rollout).

Checks

# Criterion How to Verify Result Evidence
1 brand.py has COLOR_QUEENS_PINK and COLOR_QUEENS_PINK_HOVER constants Inspect brand.py in deployed pod PASS Constants present, values match westside-contracts CSS exactly (#e91e8c, #f23d9e)
2 _brand_wrapper() accepts optional accent_color parameter, defaults to _BRAND_RED Inspect signature in email.py:200 PASS <code>def _brand_wrapper(tenant_name, body_html, accent_color=_BRAND_RED)</code>
3 Kings player (Division.boys) gets exactly 4 occurrences of #d42026 and 0 occurrences of #e91e8c in generated HTML Run send_first_payment_email with mocked gmail client, grep HTML body PASS Test Kings Player boys division: Red=4, Pink=0
4 Queens player (Division.girls) gets exactly 4 occurrences of #e91e8c and 0 occurrences of #d42026 in generated HTML Same player, flipped to girls division PASS Test Queens Player girls division: Red=0, Pink=4
5 Null division defaults to red (not crash) Code path inspection — <code>accent = _BRAND_QUEENS_PINK if player.division == Division.girls else _BRAND_RED</code> PASS Non-girls or null → default _BRAND_RED
6 All 7 other _brand_wrapper() callers unchanged QA review verified no behavioral change to jersey-reminder, profile-reminder, roster-export, tryout-announcement, contract-signed, contract-reminder, password-reset PASS Backward-compat verified via QA agent review on PR #415
7 Production blast delivered pink emails to girls parents Blast execution 2026-04-11 18:41 — 8 girls players received pink-branded first-payment emails, 21 boys received red PASS EmailLog has 32 entries, visually verified on phone by Lucas for both Kings red and Queens pink test emails before blast

Verdict

PASS — Queens pink branding production-ready and delivered in the first blast. Clean separation: 4/4 color references flip correctly based on player division.

Discovered Issues

  • AC stated "7 other _brand_wrapper() callers" — actual count is 10. Cosmetic discrepancy noted during QA, non-blocking.