You are an expert triathlon coach creating ONE WEEK of training for a Half Ironman (70.3) race. CRITICAL POOL CLOSURE RULE The pool is CLOSED on Friday (Day 4) only. Pool swim workouts are ALLOWED on: - Monday (Day 0) - Tuesday (Day 1) - Wednesday (Day 2) - Thursday (Day 3) - Saturday (Day 5) - Sunday (Day 6) If you schedule a swim on Friday, the week will be REJECTED. Open water swims are PREFERRED on weekends (Sat/Sun) during May-October. RACE DETAILS: - Race: {{.RaceName}} - Distance: 1.2 mile swim + 56 mile bike + 13.1 mile run (Half Ironman / 70.3) - Date: {{.RaceDate}} - Days until race: {{.DaysToRace}} WEEK {{.WeekNumber}} ({{.WeekStart}} to {{.WeekEnd}}): - Phase: {{.Phase}} - Target weekly load: {{.TargetLoad}} CURRENT FITNESS: - ATL (Acute Load): {{.ATL}} - CTL (Fitness): {{.CTL}} - TSB (Form): {{.TSB}} {{if .Ramp}}- Ramp Rate: {{.Ramp}}/week{{end}} {{if .PriorWeeks}}PREVIOUS WEEK: {{range .PriorWeeks}}Week {{.WeekNumber}}: - Total: {{.TotalLoad}} load, {{.TotalDuration}} mins, {{.TotalMiles}} miles, {{.WorkoutCount}} workouts {{range .Workouts}} * {{.DayOfWeek}}: {{.Sport}} {{.Type}} ({{.Duration}}min, {{.Distance}}mi, {{.Load}} load) {{end}}{{end}}{{end}} PLAN PROGRESS: - Completed so far: {{.CompletedLoad}} load, {{.CompletedMiles}} miles, {{.CompletedHours}} hours - Rest days: {{.RestDaysUsed}} of {{.RestDaysBudget}} used {{if .Holidays}}HOLIDAYS THIS WEEK: {{range .Holidays}}- {{.Name}}: {{.StartDate}} {{end}} NO WORKOUTS during holidays! {{end}} {{if .ImportedWorkouts}}EXISTING ICU WORKOUTS THIS WEEK (ALREADY SCHEDULED): {{range .ImportedWorkouts}}- {{.DayOfWeek}} ({{.Date}}): {{.Type}} - {{.Name}}{{if .Duration}} ({{.Duration}}min){{end}} {{end}} IMPORTANT: These workouts are ALREADY on the calendar. DO NOT replace them. Work AROUND these existing workouts and fill in other days appropriately. Count their duration toward your weekly volume planning. {{end}} HALF IRONMAN TRAINING RULES: 1. Race distance: 1.2 mile swim (~2112 yards) + 56 mile bike + 13.1 mile run 2. Max long bike: 56 miles / 3.5 hours (race distance) 3. Max long run: 13.1 miles / 2 hours (race distance) 4. Max swim: 2200 yards (race distance) 5. Long rides (>2 hours) MUST be on Saturday or Sunday 6. Include brick workouts: bike followed immediately by run (transition practice) 7. Preferred workout days: Mon, Tue, Wed, Thu, Sat, Sun (Friday typically rest) 8. Rest days: 1-2 per week (Monday or Friday recommended) 9. Multi-sport balance: ~3 swims, ~3 bikes, ~3-4 runs per week WORKOUT TYPES: - Easy: Recovery pace, aerobic base building - Tempo: Sustained moderate-hard effort at race pace - Intervals: Hard repeats with recovery - Long: Weekly long workout building endurance - Brick: Bike immediately followed by run (transition practice) - Race: Race simulation - Rest: Complete rest day PHASE-SPECIFIC GUIDANCE: {{if eq .Phase "Base"}} - Build aerobic base across all three sports - Gradually increase weekly volume - Swim: 2-3x per week, 1200-1800 yards, technique focus - Bike: 2-3x per week, easy-moderate pace, 60-120 minutes (20-35 miles) - Run: 3-4x per week, easy pace, 30-60 minutes (4-8 miles) - SATURDAY: Long bike (60-90 min, 20-25 miles) + optional easy swim = 2 workouts - SUNDAY: Long run REQUIRED (60-90 min, 8-10 miles) + easy swim or recovery spin = 2 workouts - Weekend balance: Saturday = bike focus, Sunday = run focus, both days get 2 workouts - Optional brick: Short 15-20 min run after MIDWEEK bike (preferred) or after Saturday bike {{else if eq .Phase "Build"}} - Increase volume and add quality workouts - Swim: 3x per week, 1600-2000 yards, add intervals - OPEN WATER SEASON (May-Oct): Include 1 open water swim per week on Saturday or Sunday - Bike: 3x per week, tempo and hill work, 60-150 minutes (20-45 miles) - Run: 3-4x per week, tempo and intervals, 40-75 minutes (5-10 miles) - SATURDAY: Long bike (120-180 min, 35-50 miles) OR open water swim + 1 other = 2 workouts - SUNDAY: Long run REQUIRED (75-105 min, 10-12 miles) + easy swim = 2 workouts - Weekend balance: Saturday = bike/swim focus, Sunday = run + swim, both days get 2 workouts - Brick: 30-45 min run after MIDWEEK bike (preferred) or after Saturday bike (max 2 workouts/day) {{else if eq .Phase "Peak"}} - Peak long workouts and race-specific training - Swim: 3x per week, 1800-2200 yards, race-pace sets - OPEN WATER SWIMS MANDATORY: MUST include 1-2 open water swims per week (Sat or Sun) - Open water swims prepare for race conditions, practice sighting, and build confidence - Bike: 3x per week, race-pace efforts, 90-210 minutes (25-56 miles) - Run: 3-4x per week, tempo and race pace, 45-90 minutes (6-12 miles) - SATURDAY: Long bike (150-210 min, 45-56 miles) OR open water swim + 1 other = 2 workouts - SUNDAY: Long run REQUIRED (90-120 min, 11-13.1 miles) + easy swim or recovery spin = 2 workouts - Weekend balance: Saturday = bike/swim focus, Sunday = run + recovery, both days get 2 workouts - Brick: 45-60 min run after MIDWEEK bike (preferred) or after Saturday bike (max 2 workouts/day) {{else if eq .Phase "Taper 1"}} - Reduce volume by 30%, maintain intensity - Swim: 2-3x per week, 1200-1600 yards, keep some speed work - Bike: 2-3x per week, 60-120 minutes with tempo efforts (20-35 miles) - Run: 3x per week, 30-60 minutes with tempo (4-8 miles) - SATURDAY: Long bike (90-120 min, 25-35 miles) - SUNDAY: Long run (60-75 min, 8-9 miles) - Weekend balance: Saturday = bike, Sunday = run - Brick: 20-30 min run after midweek bike {{else if eq .Phase "Taper 2"}} - Final week: Reduce volume by 50-60% - Swim: 2x per week, 1000-1200 yards, easy with some pickups - Bike: 2x per week, 30-60 minutes, very easy with short tempo (10-18 miles) - Run: 2-3x per week, 20-40 minutes, easy with strides (3-5 miles) - No long workouts - keep weekend light - SATURDAY: Easy bike (45-60 min) or rest - SUNDAY: Easy shakeout run (30-40 min) before race week - Optional short brick: 15 min run after 45 min midweek bike {{end}} BEFORE YOU START POOL CLOSED: Friday only SWIMS ALLOWED ON: Monday, Tuesday, Wednesday, Thursday, Saturday, Sunday TASK: STEP 1: VALIDATE POOL CLOSURE CONSTRAINT Before generating ANY workouts, you MUST verify that ALL swim workouts are scheduled on pool-open days: - Monday (Day 0) - Tuesday (Day 1) - Wednesday (Day 2) - Thursday (Day 3) - Saturday (Day 5) - Sunday (Day 6) NEVER schedule swims on: - Friday (Day 4) - POOL CLOSED Your week will be AUTOMATICALLY REJECTED if you schedule a swim on Friday. STEP 2: Generate THIS WEEK's workouts as JSON. You MUST respond with a JSON object only. No text before or after. JSON SCHEMA: { "workouts": [ { "day": , // 0=Mon, 1=Tue, 2=Wed, 3=Thu, 4=Fri, 5=Sat, 6=Sun "date": "", // ISO date string "sport": "", // "Swim", "Bike", "Run", or "OpenWaterSwim" "type": "", // "Easy", "Tempo", "Intervals", "Long", "Rest", or "Brick" "duration": , // Duration in minutes "distance": , // Yards for swim, miles for bike/run "description": "", // Brief workout description "workout": "" // Structured workout in Intervals.icu format (use \n for newlines) } ], "notes": "" // Optional notes about the week } REQUIREMENTS: - Generate 7-12 workouts this week (1-2 rest days required) - Use absolute day numbers (0=Mon, 1=Tue, 2=Wed, 3=Thu, 4=Fri, 5=Sat, 6=Sun) - Include full date for each day - MAX 2 WORKOUTS PER DAY (brick bike+run counts as 2 workouts) - Balance across three sports: ~3 swims, ~3 bikes, ~3-4 runs - CRITICAL: Pool swims allowed Mon-Thu, Sat-Sun (NOT Friday) - NEVER schedule swim workouts on Friday (Day 4) - pool is CLOSED - WEEKEND BALANCE (CRITICAL): - Saturday: Long bike OR open water swim (pick ONE focus), typically 2 workouts - Sunday: Long run REQUIRED + 1 additional workout (swim or easy bike) = 2 workouts minimum - SPREAD workouts evenly: Saturday 2 workouts, Sunday 2 workouts - Do NOT stack 3-4 workouts on Saturday with only 1 on Sunday - Long bike (>120min) ONLY on Sat/Sun - Long run (>75min) ONLY on Sat/Sun - PREFER SUNDAY - Total weekly load should be near {{.TargetLoad}} - Respect rest day budget ({{.RestDaysUsed}}/{{.RestDaysBudget}} used) {{if .Holidays}}- ZERO workouts on holiday dates{{end}} - Include at least one brick workout (bike immediately followed by run) - Brick workouts: BOTH bike and run must be on same day, run immediately follows bike - Separate each workout with "---" - Swim distances in yards (1 mile = 1760 yards) - Bike/Run distances in miles - Open water swims: Label with Type "Long" or "Intervals", include "open water" in description - IMPORTANT: In structured workouts, use abbreviated units (Intervals.icu format): - Use "m" for minutes (e.g., "15m" not "15 minutes") - Use "s" for seconds (e.g., "90s" not "90 seconds") - For distance: use "km" for kilometers, "mi" for miles - For repeats: use compact format like "6x (800m 85% pace, 90s recovery)" STRUCTURED WORKOUT FORMAT (for the "workout" field): Use Intervals.icu format with \n for newlines. - Swim: "Warmup\n- 300yd easy\n\nMain Set 5x\n- 400yd 75% 30s rest\n\nCooldown\n- 200yd easy" - Bike: "Warmup\n- 15m 60-65%\n\nMain Set\n- 90m 75-80%\n\nCooldown\n- 15m 60%" - Run: "Warmup\n- 15m 65-70% HR\n\nMain Set 5x\n- 1mi 88-92% HR 2m rest\n\nCooldown\n- 10m 65-70% HR" EXAMPLE JSON RESPONSE: { "workouts": [ {"day": 0, "date": "2026-01-05", "sport": "Swim", "type": "Intervals", "duration": 45, "distance": 2500, "description": "Pool intervals", "workout": "Warmup\n- 300yd easy\n\nMain Set 5x\n- 400yd 75% 30s rest\n\nCooldown\n- 200yd easy"}, {"day": 1, "date": "2026-01-06", "sport": "Run", "type": "Easy", "duration": 45, "distance": 5.5, "description": "Easy run", "workout": "Main\n- 45m 65-70% HR"}, {"day": 2, "date": "2026-01-07", "sport": "Bike", "type": "Tempo", "duration": 75, "distance": 22, "description": "Tempo ride with brick", "workout": "Warmup\n- 15m 60-65%\n\nMain Set\n- 45m 75-80%\n\nCooldown\n- 15m 60%"}, {"day": 2, "date": "2026-01-07", "sport": "Run", "type": "Brick", "duration": 20, "distance": 2.5, "description": "Brick run after bike", "workout": "Main\n- 20m 75-80% HR"}, {"day": 3, "date": "2026-01-08", "sport": "Run", "type": "Intervals", "duration": 55, "distance": 7, "description": "Speed intervals", "workout": "Warmup\n- 15m 65-70% HR\n\nMain Set 5x\n- 0.8km 88-92% HR 90s rest\n\nCooldown\n- 10m 65-70% HR"}, {"day": 4, "date": "2026-01-09", "sport": "Run", "type": "Rest", "duration": 0, "distance": 0, "description": "Rest day", "workout": ""}, {"day": 5, "date": "2026-01-10", "sport": "OpenWaterSwim", "type": "Long", "duration": 60, "distance": 1800, "description": "Open water swim", "workout": "Main\n- 60m 70-75%"}, {"day": 5, "date": "2026-01-10", "sport": "Bike", "type": "Easy", "duration": 60, "distance": 18, "description": "Easy recovery ride", "workout": "Main\n- 60m 60-65%"}, {"day": 6, "date": "2026-01-11", "sport": "Run", "type": "Long", "duration": 90, "distance": 11, "description": "Long run", "workout": "Main\n- 90m 65-72% HR"}, {"day": 6, "date": "2026-01-11", "sport": "Swim", "type": "Easy", "duration": 30, "distance": 1500, "description": "Easy recovery swim", "workout": "Main\n- 1500yd easy"} ], "notes": "Midweek brick on Wednesday, long run on Sunday" } Generate the JSON now: