Umbrella ticket for players seeing and being notified about byes in Phoenix.
Child Tickets
- HYD2-5025 — No place to view earned byes on Phoenix
- HYD2-5340 — Notify players when they are assigned a bye
- HYD2-4769 — BYEs should show up at the bottom of the Phoenix pairings list
Orchestration Summary
Dependency Graph
HYD2-4769 (S) ──── fully independent (backend ordering only)
HYD2-5340 (S) ──── fully independent (Novu notification for bye assignment)
HYD2-5025 (L) ──── independent but requires investigation of data model first
Recommended Order
- HYD2-4769 — Already has full technical details scoped (pre-existing). Backend-only ordering fix. Ship first — zero risk, immediate value.
- HYD2-5340 — S notification fix. Requires confirming whether
round_give_assigned_byes() triggers notifications or not. Can be done in parallel with HYD2-4769.
- HYD2-5025 — L new feature. Must first investigate where "earned regional bye" data is stored. Block on stakeholder answers before building the Phoenix UI.
Stacking Strategy
- HYD2-4769 and HYD2-5340 are independent and can be stacked simultaneously (HYD2-4769 is pure backend selectors; HYD2-5340 is
round_services.py + Celery task).
- HYD2-5025 should be started only after the data model investigation is complete. It may require a new model or field, making it a larger PR.
How to QA
- HYD2-4769: Open Phoenix pairings for an event with bye matches. Confirm bye pairings appear at the bottom, non-bye matches appear in ascending table number order.
- HYD2-5340: In a live test event, assign a player a bye mid-round (after round is published). Confirm the player receives a Novu in-app notification saying "You have a Bye."
- HYD2-5025: After implementation, log in as a Riftbound player who has won a Skirmish. Navigate to account/profile in Phoenix and confirm a "Regional Byes" section shows the earned bye with relevant context.