Happy Halloween!

Merry Christmas and happy holidays! 🎄

Season 13 Week 1 Regular Season

Season Format

Season Format

Purpose

This page defines the season lifecycle and scheduling rules that are currently enforced by league code.

Policy

  1. The active season state is stored on Season with season, current_week, game_week, last_paid_week, and a phase.
  2. Valid system phases are:
  3. DRAFT
  4. MORATORIUM
  5. FREE_AGENCY
  6. REGULAR_SEASON
  7. PLAYOFFS
  8. OFFSEASON
  9. Season phase changes are staff-controlled through season management views.
  10. Season rollover resets weekly counters (current_week, game_week) and last_paid_week.
  11. Regular-season schedule generation uses a double round-robin algorithm:
  12. first pass assigns one matchup per pair
  13. second pass mirrors home/away assignments
  14. Scheduling uses active/enabled TeamSeasonMembership records when present; otherwise it falls back to all teams in that league bucket.
  15. Surge schedule generation uses the same scheduler for surge teams and may be run independently with surge-only replacement.
  16. Tradable pick windows are phase-dependent:
  17. non-draft phases allow current season through two future seasons
  18. draft phase extends to three future seasons

Operational Notes

  • current_week and game_week are separate counters and are consumed by different systems.
  • Moratorium-to-free-agency transition flows can trigger uncontracted-player release behavior in season tooling.

Known Gaps (TBD)

  • Preseason policy (the app phase enum does not include a PRESEASON phase).
  • Published game-count policy for main and surge leagues.
  • Trade deadline week policy text.
  • Tie-break policy text for standings and seeding.
  • Public announcement protocol for phase changes.

Change Log

  • 2026-03-17: Initial scaffold created.
  • 2026-03-18: Replaced scaffold with repository-backed season lifecycle policy baseline.