season-ops
MythiStone season lifecycle and deployment: rollover wipe handshake, season snapshot archive, launch-day gating, Blizzard period quirks, build cadence, artifact-only Pages deploy. Use when touching .g
SKILL.md.claude/skills/season-ops/SKILL.md
GitHubSeason Ops domain
Gotchas
Before changing a file listed below, read its gotcha: ref/<id>.md in this skill (or kb_gotcha <id>).
| id | rule | files |
|---|---|---|
artifact-only-deploy |
Built pages are never committed; the site deploys straight from the Pages artifact and generated paths are gitignored | .github/workflows/buildPages.yml, .gitignore |
blizzard-preseason-period |
Two Blizzard period quirks shift the dashboard week axes or drop a region from the throughput charts, a phantom period that ends at season start and the KR/TW Thursday reset against the Wednesday-only static fetch | backend_scripts/fetchSeasonAndPeriodInfo.py, backend_scripts/generateDashboardPage.py, data/static/periods.json, .github/workflows/buildPages.yml |
build-cadence-phases |
buildPages schedules daily/every-3-days/weekly by phase, gated on days since the most recent content update (season start or a .5/.7 patch) | .github/workflows/buildPages.yml, backend_scripts/computeBuildPhase.py |
local-workflow-run |
A workflow change is verified by running the changed job through act (nektos/act) against the seeded local DB, from a scratch copy of the workflow | .github/workflows/* |
season-launch-day-presentation |
How the social auto-poster and the Discord bot present the pre-season gap vs the season's first 24h, and why launch day needs its own time-based gate | backend_scripts/season_gate.py, backend_scripts/social_posts/pipeline.py, backend_scripts/image_generation/season_countdown.py, discord_bot/guards.py, discord_bot/errors.py, discord_bot/embeds.py |
season-rollover-wipe |
The per-season DB wipe is a handshake between a CI workflow, the collector and a MySQL event, and its invariants are documented at each of those sites | .github/workflows/seasonRolloverWipe.yml, backend_scripts/requestSeasonWipe.py, backend_scripts/database.sql, backend_scripts/collectLeaderboardData.py, data/static/seasonInfo.json, docker-compose.yml |
season-snapshot-archive |
Each season's built _site is force-pushed to a season-<id> branch in a separate archive repo as cold storage before the DB wipe | .github/workflows/buildPages.yml |