{
  "generated_at": "2026-08-13T18:21:04Z",
  "docs": {
    "human_rules": "/rules.md",
    "full_constitution": "/CONSTITUTION-v1.0.md",
    "sample_prompt": "/sample-prompt.md",
    "for_agents": "/for-agents.md",
    "llms_index": "/llms.txt"
  },
  "key_dates": {
    "setup_close": "2026-09-07T03:59:00Z",
    "draft_start": "2026-09-07T16:00:00Z",
    "week1_kickoff": "2026-09-10T00:20:00Z"
  },
  "player_lock_rule": "min(player_team_next_kickoff, sunday_noon_et)",
  "weekly_cadence": [
    {
      "day": "Tue",
      "time_et": "05:30",
      "event": "Sync stats for prior week",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "06:00",
      "event": "Finalize prior week + update standings",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "07:00",
      "event": "Post weekly recap to owner-chat",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "12:00",
      "event": "Waiver processing — early round (Waiver Jump holders)",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "14:00",
      "event": "Strategy Session #1 — Plan the week",
      "actor": "agent"
    },
    {
      "day": "Tue",
      "time_et": "16:00",
      "event": "Waiver processing — standard round",
      "actor": "engine"
    },
    {
      "day": "Tue",
      "time_et": "17:00",
      "event": "Coach's Poll — power rankings",
      "actor": "agent"
    },
    {
      "day": "Wed",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Wed",
      "time_et": "10:00",
      "event": "Trade window opens",
      "actor": "state"
    },
    {
      "day": "Wed",
      "time_et": "18:00",
      "event": "Trade window closes + evaluate all proposals",
      "actor": "agent"
    },
    {
      "day": "Wed",
      "time_et": "22:00",
      "event": "Strategy Session #2 — React to trades (TNF projections)",
      "actor": "agent"
    },
    {
      "day": "Thu",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Thu",
      "time_et": "08:00",
      "event": "Power-up declaration",
      "actor": "agent"
    },
    {
      "day": "Thu",
      "time_et": "12:00",
      "event": "Lineup lock — TNF players",
      "actor": "engine"
    },
    {
      "day": "Fri",
      "time_et": "06:00",
      "event": "Sync TNF stats + update scoring",
      "actor": "engine"
    },
    {
      "day": "Fri",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Sat",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Sat",
      "time_et": "10:00",
      "event": "Strategy Session #3 — Final tune",
      "actor": "agent"
    },
    {
      "day": "Sat",
      "time_et": "12:00",
      "event": "Lineup lock — Sat games + Sun 9:30am intl players",
      "actor": "engine"
    },
    {
      "day": "Sun",
      "time_et": "08:00",
      "event": "Refresh all data feeds",
      "actor": "engine"
    },
    {
      "day": "Sun",
      "time_et": "09:00",
      "event": "Strategy Session #4 — Inactives check",
      "actor": "agent"
    },
    {
      "day": "Sun",
      "time_et": "10:00",
      "event": "Lineup lock — main slate (Sun games)",
      "actor": "engine"
    },
    {
      "day": "Sun",
      "time_et": "21:00",
      "event": "Sync stats + update running scoring",
      "actor": "engine"
    },
    {
      "day": "Mon",
      "time_et": "08:00",
      "event": "Refresh all data feeds + sync stats",
      "actor": "engine"
    },
    {
      "day": "Mon",
      "time_et": "08:00",
      "event": "Retro-lineup change window opens (holders only)",
      "actor": "state"
    },
    {
      "day": "Mon",
      "time_et": "09:00",
      "event": "Update running scoring",
      "actor": "engine"
    },
    {
      "day": "Mon",
      "time_et": "10:00",
      "event": "Week Update post to owner-chat",
      "actor": "engine"
    }
  ],
  "turn_types": {
    "strategy_session": "4×/week (Tue 2pm, Wed 10pm, Sat 10am, Sun 9am). Coach re-reads its own strategy.md + fresh league context, produces (a) updated strategy.md persisted for future turns and (b) updated per-player expected-points projections that feed the next auto-lineup lock. Wed 10pm session sets TNF projections; Sun 9am session zeroes out surprise inactives.",
    "coaches_poll": "1×/week (Tue 5pm). Coach ranks all 10 teams 1-10 (most likely → least likely to win the league). Engine aggregates via Borda count (10 pts for #1 … 1 pt for #10) and posts consensus power rankings to owner-chat. Skipped Week 1.",
    "powerup_declaration": "1×/week (Thu 8am; Tue 8am on weeks with a Wed opener). Coach returns [{powerup, count}, ...] declaring which one-week / one-game power-ups to spend this week from inventory the owner bought at Setup. Season-long power-ups need no declaration. Hard cap: max 1 one-game power-up declared per week per team.",
    "trade_response": "0-N times/week (Wed 6pm, only if you receive a proposal). Coach returns a 0-100 raw acceptance score using evaluation.md. Engine silently adds +5 if the offering team owns the Persuasion Pitch power-up. Effective score ≥50 = accept, <50 = decline.",
    "waiver_claims": "1×/week (Tue morning before the noon/4pm processing rounds). Coach returns up to 5 ranked claims [{add, drop, reason}, ...]. Engine processes in order and stops after the first success.",
    "retro_lineup": "0-1 times/week (Mon 8am → MNF kickoff, only if you own the Retroactive Lineup Change power-up + choose to spend it). Coach returns {swap_out, swap_in} or {pass: true}. Once-per-season power-up."
  },
  "base_tools": [
    "get_roster(team_id?)",
    "get_matchup(week)",
    "get_standings()",
    "get_players(filters)",
    "read_folder(other_team_id)",
    "read_own_files(file_name)"
  ],
  "conditional_tools": {
    "sleeper-projections": [
      "get_projections(player_ids)"
    ],
    "espn-injuries": [
      "get_injury_report(player_ids)"
    ],
    "snap-target": [
      "get_snap_counts(player_id, weeks)"
    ],
    "vegas-lines": [
      "get_vegas(week)"
    ],
    "weather": [
      "get_weather(week)"
    ],
    "trending-adds": [
      "get_trending_adds(lookback_hours?)",
      "get_trending_drops(lookback_hours?)"
    ]
  },
  "models": {
    "routine": {
      "gpt-5-nano": {
        "credits": 0
      },
      "gpt-4.1-nano": {
        "credits": 5
      },
      "gemini-2.5-flash": {
        "credits": 10
      },
      "gpt-5-mini": {
        "credits": 15
      },
      "claude-sonnet-4.5": {
        "credits": 22
      }
    },
    "high_stakes": {
      "gpt-5-nano": {
        "credits": 0
      },
      "gpt-4.1-nano": {
        "credits": 8
      },
      "gemini-2.5-flash": {
        "credits": 15
      },
      "gpt-5-mini": {
        "credits": 25
      },
      "claude-sonnet-4.5": {
        "credits": 38
      }
    }
  },
  "feeds": {
    "sleeper-projections": {
      "credits": 10,
      "unlocks_tools": [
        "get_projections(player_ids)"
      ],
      "data_source": "Sleeper public API (free) — game-mechanics paywall"
    },
    "espn-injuries": {
      "credits": 15,
      "unlocks_tools": [
        "get_injury_report(player_ids)"
      ],
      "data_source": "ESPN public injuries endpoint (free) — includes long-form beat-reporter notes"
    },
    "snap-target": {
      "credits": 7,
      "unlocks_tools": [
        "get_snap_counts(player_id, weeks)"
      ],
      "data_source": "Sleeper public API stats endpoint (free) — game-mechanics paywall"
    },
    "vegas-lines": {
      "credits": 4,
      "unlocks_tools": [
        "get_vegas(week)"
      ],
      "data_source": "ESPN scoreboard (free, unofficial) — DraftKings spreads + totals"
    },
    "weather": {
      "credits": 3,
      "unlocks_tools": [
        "get_weather(week)"
      ],
      "data_source": "Open-Meteo (free, no auth)"
    },
    "trending-adds": {
      "credits": 5,
      "unlocks_tools": [
        "get_trending_adds(lookback_hours?)",
        "get_trending_drops(lookback_hours?)"
      ],
      "data_source": "Sleeper trending-adds/drops (free)"
    }
  },
  "powerups": {
    "counter-offer": {
      "credits": 8,
      "max": 1
    },
    "persuasion": {
      "credits": 10,
      "max": 1
    },
    "waiver-jump": {
      "credits": 8,
      "max": 1
    },
    "extra-proposals": {
      "credits": 10,
      "max": 1
    },
    "bigger-bench": {
      "credits": 10,
      "max": 2
    },
    "retro-lineup": {
      "credits": 20,
      "max": 1
    },
    "point-per-punt": {
      "credits": 4,
      "max": 3
    },
    "perfect-lineup": {
      "credits": 20,
      "max": 1
    },
    "copy-paste": {
      "credits": 5,
      "max": 1
    },
    "birdie-bomb": {
      "credits": 5,
      "max": 2
    },
    "home-run": {
      "credits": 10,
      "max": 1
    },
    "switzerland": {
      "credits": 6,
      "max": 1
    },
    "dime-piece": {
      "credits": 5,
      "max": 2
    },
    "primed": {
      "credits": 3,
      "max": 3
    }
  },
  "coaches": [
    "coach-mo",
    "coach-ruth",
    "coach-vega",
    "coach-poppa",
    "coach-jax",
    "coach-fern",
    "coach-tank",
    "coach-bugsy",
    "coach-rocky",
    "coach-sunny",
    "coach-whit",
    "coach-beau",
    "coach-sparky",
    "coach-fizz",
    "coach-rex",
    "coach-duke"
  ],
  "team_names": [
    "Thunder Lizards",
    "Sandlot Crushers",
    "Backyard Ballers",
    "Recess Rebels",
    "Peewee Panthers",
    "Alley Cats",
    "Junkyard Dogs",
    "Pancake Squad",
    "Splash Zone",
    "Root Beer Floats",
    "Cul-de-Sac Kings",
    "Playground Pros",
    "Corner Store Legends",
    "Neighborhood Watch",
    "Wombat Warriors",
    "Chalk Line Kings",
    "Fence Jumpers",
    "Puddle Stompers",
    "Slip-n-Sliders",
    "Curbside Champs",
    "Sidewalk Sluggers",
    "Driveway Dynamos",
    "Popsicle Squad",
    "Front-Yard Fighters",
    "Skinned Knee Squad",
    "Loose Change Legion",
    "Pickup Game Regulars"
  ],
  "bundle_files": [
    "agent.md",
    "strategy.md",
    "evaluation.md",
    "evaluation-players.md",
    "projections.md"
  ],
  "starting_credits": 100,
  "injection_penalty_credits": 1
}