Playoffs, cross-tier season end, and the game-day spine
Seasons are a promise that effort compounds: thirty match days should mean something at the bottom of the table, and promotion should not be a spreadsheet edit. The stake in late May was structural integrity — a daily tick that advanced the world in a known order, and a playoff system that respected the pyramid without poisoning league standings.
What shipped arrived as two complementary landings. First, a game-day tick orchestrator ran ordered world phases (birthdays, availability, suspensions, fitness, training, facilities, finance, transfers, staff) while match simulation stayed on its own wall-clock path rather than hitchhiking on every clock advance. League suspension rules became configurable, with squad warnings when a yellow card sat one step from a ban. Second, cross-tier playoffs after MD30 built brackets, kept standings frozen by excluding playoff fixtures from the table, and wrote promotion and relegation results for the next season’s group memberships. Admin and game schedule surfaces gained playoff visibility so the FA and managers shared one calendar story. In simple terms: the spine of the season became explicit, and the ending stopped being hand-waved.
The challenges were coupling and fairness optics. Mixing match enqueue into the daily tick is convenient until a clock catch-up floods the queue; freezing standings while playoffs run is correct football and confusing UI until banners exist. We chose ordered phases and a separate simulation schedule inasmuch as reproducibility of “what the world did on this game date” matters more than a single cron’s elegance. The strength is a season that can be reasoned about; the drawback is more moving parts for operators to preview before advancing time.
Paths not taken included auto-promoting on points alone without playoffs, keeping playoff matches inside the same standings view, or advancing the world and enqueueing fixtures in one undifferentiated job. Pure points is simpler and less dramatic; polluted tables punish teams that earned a top-half finish; a single job is easier to schedule and harder to trust when something fails mid-flight.
What it unlocked was automated rollover thinking, season awards at a real end condition, and every later competition (cups, youth leagues) that assumes the calendar already knows how a season closes.