Execute Marcus 2026-04-10 batch: 6 contracts + 9 jersey emails #424
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#424
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone — discovered during 2026-04-10 Westside Ops session. Coach Marcus sent two messages in WKQ Stakeholders group (plus one DM preview for Marie) naming 9 players needing contract offers and/or jersey emails. All 4 of Lucas's clarifying questions answered. This ticket is the execution tracker for the operational batch — not a code change, but a series of triggered sends through the blast approval gate.
Repo
forgejo_admin/basketball-apiUser Story
As Lucas operating Westside Kings & Queens
I want a single tracked item for Marcus's 2026-04-10 batch of 9 players
So that every contract offer and jersey email from this batch is auditable, none are lost if the session ends, and the approval-gate execution is visible on the board
Context
Marcus's original messages and my parsed decisions (from WKQ Stakeholders group, 2026-04-10):
Message 1 (Marcus): "Jersey emails need to be sent out. Also if they need a contract I'll also add that: Alice - jersey email and local 16u local contract; Vince - jersey email and 16u elite contract; Brian rhay - jersey email and 17u select or local contract; David kaneko - jersey email; Jace Bronson - jersey email and 16u local contract"
Message 2 (Marcus, earlier): "Jersey email please send to: Zack bod, Zayvion brown, Kevin porja and also contract for 17u select or 17u local"
DM preview (Marcus): "Also Marie needs a 17u travel contract"
Marcus's answers to my 4 clarifying questions:
Marcus's fee list: Jacelyn $160, Alice $100, Brian $200, Kevin $160. Everyone else defaults to $200 (implicit from the question framing).
File Targets
No code changes. This ticket tracks operational sends through existing basketball-api endpoints:
send_contract_offer(or equivalent) — for contract creation + signing link emailsend_jersey_reminder_email— for jersey payment link email (basketball-api/src/basketball_api/services/email.py:1140)Files NOT to touch: any source code. This is a pure execution ticket. If we discover a bug mid-batch, file it as a separate ticket.
Acceptance Criteria — Per Player
Contract offers (6 to send):
none → offered, token minted, email sent to parent, confirmed inemail_logsignedon 16U Elite Queens at $160. Needs to be moved to 16U Local Queens (depends on basketball-api #422 for team creation) and re-issued a new contract at $160. This is the firstsigned → move → re-offerflow the system has seen.Jersey emails (9 to send):
Per-send approval gate (per
feedback_email_blast_nuclear_gate):Test Expectations
email_logrow exists with correct recipient + template nameplayers.contract_status = 'offered'andplayers.contract_token IS NOT NULLfor the target playerConstraints
pal-e-deployments #105— hostPath email templates (enables fast iteration on copy during the draft/approve phase)basketball-api #420— Alice Uwamahoro dedupe (delete row 201 before sending to row 202)basketball-api #422— Create 16U Local Queens team (required for Jacelyn's move)basketball-api #418— Email normalization root cause fixbasketball-api #421— Vince Ifote parent name fixbasketball-api #423— Unknown Player investigationdeclinedstate as part of this batchChecklist
contract_status = 'offered'in DBemail_logRelated
westside-basketball— project this affects2026-04-10/11 Execution Status
✅ Completed
Dependency PRs merged and deployed:
6 contract offers minted via POST /admin/contract/offer:
X5ANnqX-...HEyBkpwq...yJfWaZlN...AVnVe4WB...Qj4QYtgJ...qilIolLm...— FIRST-EVER signed→offered tier change on the platform, audit row contract_audit_log.id=1, event_type='tier_change', actor='draneylucas@gmail.com'Wave 3 blast (contract emails) — SENT to 15 parents via POST /admin/email/blast:
22-player list approval from Marcus in WKQ Stakeholders:
🟡 In Flight (pending Marcus review)
Apaisa family correction:
fjOXPKtm...WqqJGPbu...QLHbMP5K...❌ Deferred / Not This Batch
Wave 4 (jersey emails for 9 players): NOT sent. Marcus's original list included jersey emails for Alice, Brian, Vince, Kevin, Marie, Jacelyn, David Kaneko, Zachary Bod, Zayvion Brown. These have NOT been sent yet. Still a pending action in this umbrella ticket.
Jencarlo Diaz, Benjamin Betancourt: removed from batch scope per Marcus's latest WKQ reply.
📋 Follow-Up Tickets Created
Next Actions (when Marcus approves)