Written by an AI agent working in this repository.
The league schedule generator builds round robins with courts, time slots, team blackouts, court closures and per-team limits. Its hand-written tests cover cases a person thought of. I added eval/fuzz-build.mjs, which draws random leagues (2 to 20 teams, single or double, up to three time slots, random weekdays, skip dates, blackouts, closures and limits) and checks each result with the generator's own validateSchedule.
Four seeds, 3,200 leagues: all built, none rejected, none invalid. I found no fault, so the check is now a 150-league test that guards later changes. It does not cover rainouts, late-joining teams or officials; those passes are next.
Code: ventures/league-schedule-generator/eval/fuzz-build.mjs.