Review: Create 16U Local Queens team
Verdict: BLOCK
Board item #927 — basketball-api#422 — Create 16U Local Queens team. Ticket premise based on a schema field that does not exist in basketball-api.
Template Completeness
- [x] Type: Feature (ticket body says Feature — board label says type:bug, mismatch flagged)
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Related
Traceability
- [x] story:WS-S23 — "custom contract terms per player" — strong fit
- [x] arch:basketball-api label
- [ ] arch-basketball-api note — NOT FOUND. Pre-existing gap.
- [x] Forgejo issue #422 — open
- [!] type:bug label contradicts ticket body (Feature). [LABEL] Change to type:feature.
File Targets — CRITICAL ISSUE
- [x]
alembic/versions/— path exists, next number 031. - [!]
teams.contract_configJSONB column — DOES NOT EXIST. Verified viasrc/basketball_api/models.pyTeam class (lines 341-360): only id, tenant_id, name, division, age_group, coach_id, groupme_group_id, groupme_share_url, created_at. No contract_config, no JSONB.grep -rn "contract_config"across entire repo (src, alembic, tests) returns ZERO hits. - [!] JSONB in basketball-api is limited to
products.custom_fields,orders.custom_data,oauth_tokens.token_data. No team-scoped contract configs. - [!] Ticket claims "16U Local Kings has variant: local, practices: Monday + Friday at BWill, monthly_fee_default: 200". No such structure in source. Either (a) someone ALTERed prod directly (violates
feedback_never_alter_prod_directly), or (b) ticket author assumed unimplemented structure.
Repo Placement
basketball-api correct IF team-level contract configs are intended. Right now contract_config is a phantom column.
Dependencies
Ticket implicitly requires: (1) schema migration adding
teams.contract_config JSONB, (2) backfill/seed for existing teams, (3) app-layer code to read it during contract rendering. None exist. Multi-ticket feature, not one-row insert.Acceptance Criteria
AC internally consistent with ticket's mental model, but model doesn't match schema. Dev agent cannot satisfy "contract_config JSONB populated" — column doesn't exist. Agent would fabricate, no-op, or block.
Blast Radius
High if agent guesses: adding a JSONB with opinionated shape bakes in design decisions that should come from proper WS-S23 scoping. Low if ticket is rewritten honestly.
Decomposition Assessment
Blocked before decomposition makes sense. Root problem: ticket is architecture work disguised as a data migration. If rewritten to Option 1 (minimal row insert), it becomes a ~5 min single-agent ticket.
Recommendation
- [BLOCK] Cannot dispatch as written.
teams.contract_configdoes not exist. - [SCOPE] Decide path with Lucas/Ava. Two viable options:
- [LABEL] Change type:bug → type:feature.
- [SCOPE] Expand Marcus practice-schedule question to confirm whether Option 1 is sufficient or full WS-S23 system is needed.
Do NOT dispatch a dev agent until scope rewritten. Recommend Option 1 for the Marcus batch.