Youth academy, U21 competitions, and finishing the Nest/Go split

milestone youth, competitions, architecture

A club without a pathway is a roster rental. Late July’s stake was to make youth first-class — intake, U21 league and cup, eligibility, registration — while finishing the Nest/Go houseclean so academy work did not land on duplicate tick orchestrators.

What shipped was the youth academy foundation across Nest APIs, contracts, game UI, admin surfaces, and Go workers: U21 competitions, intake flows, squad registration, and the eligibility rules tactics already needed to respect. Nest slimmed further — game-clock read/preview/sync and admin enqueue/preview helpers rather than parallel lifecycle executors — with remaining duplicate tick and domain paths removed now that Go owned them. Cup-bracket generation for youth followed the enqueue-and-poll pattern rather than reintroducing Nest apply logic. In simple terms, the pyramid gained a nursery, and the API process stopped pretending it still ran the nursery’s clock.

The challenges were eligibility edges and role clarity. Parent-club managers must see enough to register and select without collapsing senior and youth into one squad bag; admin generate actions must enqueue rather than silently reimplement Go. The strength of shipping academy with the dedup is one behavioural story; the drawback is a large PR surface that mixes product and architecture — acceptable here because leaving Nest tick residue would have sabotaged the next realism pass.

Paths not taken included a cosmetic “youth list” without competitions, keeping Nest tick orchestrators beside Go “for youth only,” or delaying academy until player-development ceilings were perfect. Lists without matches teach nothing about minutes; youth-only Nest crons would reopen dual-heartbeat risk; waiting on ceilings would strand intake without a place to play.

What it unlocked was the realism work on birth ceilings, bloom, and division-anchored intake PA — growth rules that only matter once there are academy players and U21 minutes to grow into.

← All entries