Review: bug: wrong email address across all westside repos
Verdict: APPROVED
Re-review. Previous verdict was NEEDS_REFINEMENT (3 issues). All 3 refinements applied and verified.
Refinement Resolution
- [x] [DECOMPOSE] Per-repo sub-ticket table added to issue body with 5 rows (basketball-api, westside-landing, westside-app, westside-playground, pal-e-platform). Each fits the 5-minute rule.
- [x] [SCOPE] arch label Changed from
arch:dataflow-westside-basketball(invalid) toarch:email. Verified on board item #909. - [x] [BODY] DB template audit New "DB Template Audit" section added to issue body. AC4 added for database template audit.
Template Completeness
- [x] Type — Bug
- [x] Lineage — Standalone, umbrella with decomposition
- [x] Repo — Cross-repo, all 5 repos listed with severity breakdown
- [x] What Broke — Detailed with severity tiers (CRITICAL/HIGH/LOW/MED)
- [x] Repro Steps — Clear steps for both frontend and backend paths
- [x] Expected Behavior — Correct email specified
- [x] Environment — prod, all westside services
- [x] Acceptance Criteria — 4 criteria (added DB audit), all testable
- [x] Decomposition — Per-repo table with file counts and hit counts
- [x] DB Template Audit — Explicit call-out for database-stored templates
- [x] Related — project reference, arch reference, story reference
Template is fully complete for Bug type. Exemplary scoping with decomposition table.
Traceability
- [x] story:WS-S7 label — "As an admin, I want to send branded email announcements so that parent comms are professional and consistent" — verified in project-westside-basketball user-stories section (Admin stories list)
- [x] arch:email label — present on board item (corrected from previous invalid label)
- [ ] arch note MISSING —
arch-emailnote does not exist in pal-e-docs. Pre-existing gap flagged across 5+ reviews. Does not block this ticket. - [x] Forgejo issue — forgejo_admin/basketball-api#412, open
File Targets
- [x]
basketball-api(4 files, 7 hits) — verified: exact match via grep - [x]
westside-app(9 files, 13 hits) — verified: exact match via grep, all undersrc/routes/(public)/ - [x]
westside-playground(10 files, 25 hits) — verified: exact match via grep - [x]
pal-e-platform(2 files, 4 hits) — verified:salt/pillar/secrets_registry.sls(3) +terraform/modules/monitoring/main.tf(1) - [?]
westside-landing(9 files, 13 hits) — NOT verifiable: repo not checked out locally. Plausible given mirror structure with westside-app.
Cross-check:
westsidebasktball@gmail.com (correct spelling) returns zero hits in basketball-api — confirming 100% of occurrences use the wrong spelling.Repo Placement
OK. Umbrella ticket filed on basketball-api (highest-severity repo). Decomposition table identifies all 5 repos with sub-ticket placeholders (TBD). Each sub-ticket will be filed on its own repo for proper
Closes #N semantics.Dependencies
No blocking dependencies. Related board items (#900 warm-up welcome email, #898 outbox processor dead, #732 welcome email spike) are independent. All 5 sub-tickets are independent and can run in parallel.
Acceptance Criteria
4 criteria, all assessable:
- AC1:
grep -r "westsidebasketball@gmail" .returns zero hits — fully automatable per-repo - AC2: Interest lead notification email arrives at real inbox — manual verification
- AC3: Public site mailto links compose to correct address — Playwright verifiable
- AC4: Database-stored email templates audited — query-based verification
Blast Radius
LOW. Pure string replacement with no behavioral side effects. Rollback is trivial. DB template audit (AC4) covers the one risk the original review identified.
Decomposition Assessment
ADDRESSED. Umbrella ticket with 5 sub-tickets, each under the 5-minute rule. Decomposition table in issue body. Route to
skill-decompose-ticket to create the actual sub-tickets and sub-board.Recommendation
No blocking issues. Ticket is approved for advancement.
- Standing [SCOPE]:
arch-emailnote still missing in pal-e-docs (pre-existing gap, tracked across multiple reviews). Does not block this ticket. - Next step: Route to
skill-decompose-ticketto create the 5 per-repo sub-tickets from the decomposition table, then advance umbrella totodo.