{"slate_id":"golf-single_stat-draftkings-2026-10-29-birdies","sport":"golf","site":"draftkings","slate_date":"2026-10-29","slate_type":"single_stat","slate_subtype":"birdies","tour":"pga","competition":null,"league_label":"PGA Tour","is_draft":false,"config":{"site":"draftkings","sport":"golf","slate_type":"single_stat","salary_cap":null,"roster_slots":[{"name":"UTIL1","eligible":["*"]},{"name":"UTIL2","eligible":["*"]},{"name":"UTIL3","eligible":["*"]}],"min_teams":1,"min_games":0,"scoring_by_subtype":{"birdies":{"birdies":1,"eagles":1,"albatrosses":1}},"export_format":{"header":["UTIL","UTIL","UTIL"],"id_format":"{name} ({site_player_id})"},"$comment":"DK Golf 'Birdies or Better' — the single-stat product: 6 golfers, no salary cap, one point per birdie-or-better. Verified against a real 2026-08-13 export (header Position,Name + ID,Name,ID,Roster Position,Game Info,TeamAbbrev,AvgPointsPerGame,Status — note NO Salary column, which is what types the file as single_stat; Roster Position is 'G', not the 'UTIL' the other single-stat products use). || min_teams 1 / min_games 0 (2026-08-14): they were 2 and 2, copied from the team-sport single-stat configs, and they made this slate type produce ZERO lineups. A golf pool has exactly ONE team — DraftKings exports TeamAbbrev='Golf' for the entire field — and no linked Game rows at all, so the optimizer's 'len(team_counts) < min_teams or len(games) < min_games' check rejected every candidate lineup it built. Nothing downstream reported it as a constraint failure: the run simply returned no lineups. Golf is a field, not a set of matchups, and the only honest values for a one-field sport are 1 and 0. Compare golf/draftkings/showdown.json, which has always carried 1/1 and has always worked. NOTE the sibling golf configs main.json (min_teams 6, max_per_team 1) and tiers.json (2/2) have the same defect and are NOT changed here. || ROSTER SIZE CORRECTED 2026-09-11, from six slots to three. DK's published rules say, in the same words for every sport it sells a single-stat contest in, 'Lineups will consist of 3 players and must include players from at least 2 different <SPORT> teams' -- NFL gameTypes 353/354/355, CFB 363/364, MLB 334/337/338/342/345/346, NBA+WNBA 335/336/343/344/348, CBB 362, NHL 358/359, golf 341/347/349-352. Six was a guess, and the config that introduced it said so: 'LESS CERTAIN -- SPOT-CHECK: the roster SIZE (6) ... none of which the export states.' It was carried into every later single-stat config by copying. The export cannot state it, because a capless pool's CSV has no roster block -- only the rules do. || min_games stays 0 and min_teams 1, unlike every other sport in that sweep. Golf has no games and no teams: the whole field ships on one placeholder team, and a per-game floor of any size rejects every lineup the optimizer can build. See the 2026-08-14 golf_lineup_constraints migration, which set exactly these two values for exactly this reason. The three-pick correction applies here as it does everywhere -- DK's golf single-stat rules say 'selecting any three golfers' -- but the composition rules do not. || scoring_by_subtype KEYS CORRECTED 2026-09-28 to the corpus vocabulary (see _registry.json single_stat_subtypes): the previous keys matched no projected stat and scored 0.0 for everyone.","event_timezone":"America/Mexico_City","league_detection":{"kind":"tour","code":"pga","label":"PGA Tour","method":"players","matched":115,"total":120,"support":100,"share":0.833,"counts":{"women":0,"men":115,"pga_regulars":100,"dpwt":3,"liv":0},"excluded":null,"evidence":"100/120 players are PGA Tour regulars (5+ PGA Tour or Korn Ferry events in the last year)"}},"locked_at":null,"first_game_start":"2026-10-29T10:00:00Z","last_game_start":"2026-10-29T14:00:00Z","late_swap_enabled":false,"display_name":null,"is_free":false,"group_key":"","group_slate_type":"single_stat","projection_window":null}