Competition operations
Seasons and queues
Seasons
A season has a stable ID, display name, optional description, starting MMR, start, and optional end. Ranges are half-open—start inclusive, end exclusive—and PostgreSQL prevents overlap. Exactly one row may be marked current. New accounts take that season's starting MMR; existing season statistics retain their recorded starting value.
Before changing the current season, confirm old-season end/ending MMR handling, create and validate the next pools, and avoid a gap where no current active season exists. A queue join fails with NO_CURRENT_SEASON during such a gap.
Queue settings
| Setting | Effect |
|---|---|
| slug/name | Stable machine identifier and player-facing label. |
| pool | The only source of dealt and replacement maps. |
| competitive | Whether decisive results change seasonal MMR. |
| enabled | Immediate operator switch independent of schedule. |
| min/max MMR | Inclusive player eligibility band. |
| player-one decision | Lowest MMR, highest MMR, or random becomes red/first picker. |
| starting health | Initial health for both players; must be positive. |
| K-factor | Rating volatility; must be a positive integer. |
| opens/closes | Opens inclusive, optional close exclusive. |