Bug: Baby Betty has contradictory jersey state across legacy and generic checkout #171
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#171
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
Bug
Lineage
standalone — discovered during data audit, split from #170
Repo
forgejo_admin/basketball-apiWhat Broke
Player "Baby Betty" (id=161) has contradictory jersey state:
playerstable:jersey_option = opt_out,jersey_order_status = pending(set by legacy/jersey/checkoutpath)orderstable: order #14,status = pending, product_id=1 (Reversible Jersey, $90),custom_data = {"top_size": "L", "shorts_size": "L", "jersey_number": 55}She started a legacy opt-out (which set
pendingon player but never completed), then started a new-system reversible order (which created an Order row but never completed payment). Neither path completed. The player record says one thing, the orders table says another.Repro Steps
SELECT jersey_option, jersey_order_status FROM players WHERE id = 161;→opt_out / pendingSELECT id, product_id, status, custom_data FROM orders WHERE player_id = 161;→ order #14, product 1 (Reversible), pendingExpected Behavior
Player should have a single consistent state reflecting their actual intent. Since neither order completed payment, the cleanest fix is to reset both to
noneand let the parent re-order.Environment
basketball-apiAcceptance Criteria
playersrecord for id=161:jersey_option = NULL,jersey_order_status = noneordersrecord #14:status = canceledConstraints
Related
forgejo_admin/basketball-api#170— parent bug (webhook sync gap)project-westside-basketball— project this affectsScope Review: NEEDS_REFINEMENT
Review note:
review-393-2026-03-27Template is complete and well-written. Schema claims verified against codebase. Parent bug #170 is resolved (done). No blockers.
One issue found — blast radius on sibling players:
jersey.py:263-265andjersey.py:318-319operate on all players under a parent (for p in parent.players). If Baby Betty (id=161) shares a parent with other players, those siblings may have the same contradictory state.Action needed: Add an acceptance criterion to check for sibling players:
If siblings have contradictory state, include them in the same fix transaction.
Once the sibling check is added, this ticket is READY.
Issue body updated per scope review corrections.