{"slate_id":"cfb-night-draftkings-2026-10-31","sport":"cfb","site":"draftkings","slate_date":"2026-10-31","slate_type":"night","slate_subtype":null,"tour":null,"competition":null,"league_label":null,"is_draft":false,"config":{"$comment":"PER-TEAM CAP DERIVED FROM THE 2-GAME RULE (2026-09-04). DraftKings football Classic states one roster-composition rule: \"rosters must include players from at least 2 different games\". There is no separate per-team cap, so the real ceiling is one short of the roster — 7 of 8: take 7 from one team and the last seat cannot be that team OR its opponent, because both sit in the same game. max_per_team was 4, which is not a DraftKings rule and refused legal lineups; min_games=2 is what actually enforces the published one. Matches nfl/draftkings/main.json, which has always been 8 of 9. || FanDuel is NOT the same: its football rulebook does cap a team at 4, so fanduel/*.json keep max_per_team=4 on purpose. || DK CFB Classic - 8 players, $50,000 cap: QB, RB, RB, WR, WR, WR, FLEX (RB/WR/TE), S-FLEX (QB/RB/WR/TE). Promoted 2026-07-30 from apps/web/lib/configs/json/cfb/draftkings/main.json, where this exact config had been shipping to the browser sim engine since the 2026-05-04 sport expansion. It was never copied into packages/slate-configs (the API's source of truth) and 'main' was never added to the cfb registry matrix, so the sport was selectable and publicly advertised but no CFB salary-cap slate could be imported - see SPORT_COVERAGE_REMEDIATION_PLAN.md section A5. Roster shape, scoring and export format are unchanged from the browser copy; only this comment was added. CFB's superflex (S-FLEX) slot accepting QB is what distinguishes it from the NFL config. OPERATOR VERIFICATION REQUIRED: confirm the roster shape and scoring against the live DK CFB rulebook page and one real CFB DKSalaries export. || FLEX ELIGIBILITY CORRECTED 2026-09-14. Both flex slots listed TE. DraftKings' published CFB Classic roster is '1 QB, 2 RB, 3 WR, 1 FLEX (RB, WR), 1 SUPER FLEX (QB, RB, WR)' - there is no TE slot and no TE in either flex. The operator's own export agrees: every real DK CFB main file in this repo carries Position in {QB, RB, WR} and Roster Position in {QB/S-FLEX, RB/FLEX/S-FLEX, WR/FLEX/S-FLEX} - no TE row exists, so the token was unreachable rather than harmful. Removed so the file states the rule. NOTE this is DraftKings-specific: FanDuel's CFB pool DOES contain tight ends (see fixtures/fanduel/FanDuel_cfb_classic_133585.csv, 41 of them), which is why fanduel/cfb keeps TE. If DraftKings ever adds tight ends to a CFB pool, test_no_player_in_a_real_export_is_unrosterable will fail on the first real export and say so.","site":"draftkings","sport":"cfb","slate_type":"main","salary_cap":50000,"roster_slots":[{"name":"QB","eligible":["QB"]},{"name":"RB1","eligible":["RB"]},{"name":"RB2","eligible":["RB"]},{"name":"WR1","eligible":["WR"]},{"name":"WR2","eligible":["WR"]},{"name":"WR3","eligible":["WR"]},{"name":"FLEX","eligible":["RB","WR"]},{"name":"S-FLEX","eligible":["QB","RB","WR"]}],"max_per_team":7,"min_teams":2,"min_games":2,"scoring":{"passing_yard":0.04,"passing_td":4,"passing_int":-1,"passing_300_bonus":3,"rushing_yard":0.1,"rushing_td":6,"rushing_100_bonus":3,"receiving_yard":0.1,"receiving_td":6,"reception":1,"receiving_100_bonus":3,"fumble_lost":-1},"export_format":{"header":["QB","RB","RB","WR","WR","WR","FLEX","S-FLEX"],"id_format":"{name} ({site_player_id})"}},"locked_at":null,"first_game_start":"2026-10-31T23:00:00Z","last_game_start":"2026-10-31T23:45:00Z","late_swap_enabled":true,"display_name":null,"is_free":false,"group_key":"06f13190a66e7738","group_slate_type":"main","projection_window":null}