{"today":"2026-04-26","week_index":7,"start_date":"2026-04-20","end_date":"2026-04-26","phase":"Tri base → build","focus":"More race-effort bike; optional tempo run.","days":[{"date":"2026-04-20","dow":"Monday","status":"rest","phase":"Tri base → build","is_today":false,"rest_suggestion":"Optional mobility + easy walk; rest if you feel beat up."},{"date":"2026-04-21","dow":"Tuesday","status":"workout","phase":"Tri base → build","is_today":false,"workout":{"type":["swim"],"title":"Pool swim: aerobic development + pacing","duration_min":45,"intensity_overall":{"rpe":"2-6","zones":"Mostly Z1-Z3"},"segments":[{"name":"Warm-up","duration_min":8,"details":"300m easy + 4×25m build, 15s rest"},{"name":"Drills","duration_min":8,"details":"4×50m drill/swim, 20s rest"},{"name":"Main set","duration_min":22,"details":"8×100m steady, 20–25s rest. Negative split last 2 reps."},{"name":"Cool-down","duration_min":7,"details":"200m easy"}],"target_volume":"1400-1800m","substitution_ids":["swim_no_access"],"equipment_group_ids":["swim"]}},{"date":"2026-04-22","dow":"Wednesday","status":"rest","phase":"Tri base → build","is_today":false,"rest_suggestion":"Optional mobility + easy walk; rest if you feel beat up."},{"date":"2026-04-23","dow":"Thursday","status":"workout","phase":"Tri base → build","is_today":false,"workout":{"type":["bike","run_brick"],"title":"Bike: tempo development + brick","duration_min":45,"intensity_overall":{"rpe":"2-8","zones":"Mostly Z1-Z3; quality reps Z4-Z5 when scheduled"},"segments":[{"name":"Warm-up","duration_min":8,"details":"Easy spin + 2×20s fast legs"},{"name":"Main set","duration_min":22,"details":"3×5 min tempo/race-effort (RPE 6–7) / 2 min easy"},{"name":"Brick run","duration_min":10,"details":"Easy jog; focus on relaxed cadence"},{"name":"Cool-down","duration_min":5,"details":"Easy spin/walk"}],"substitution_ids":["bike_bad_weather","run_bad_weather"],"equipment_group_ids":["bike","run"]}},{"date":"2026-04-24","dow":"Friday","status":"rest","phase":"Tri base → build","is_today":false,"rest_suggestion":"Optional mobility + easy walk; rest if you feel beat up."},{"date":"2026-04-25","dow":"Saturday","status":"workout","phase":"Tri base → build","is_today":false,"workout":{"type":["bike"],"title":"Bike: endurance + race-effort blocks","duration_min":75,"intensity_overall":{"rpe":"2-8","zones":"Mostly Z2; controlled Z3-Z4 blocks; brief Z5 surges when scheduled"},"segments":[{"name":"Warm-up","duration_min":10,"details":"Easy spin"},{"name":"Main set","duration_min":55,"details":"3×10 min at steady race effort (RPE 6–7) / 3 min easy; remainder Z2"},{"name":"Cool-down","duration_min":10,"details":"Easy spin"}],"substitution_ids":["bike_bad_weather"],"equipment_group_ids":["bike"]}},{"date":"2026-04-26","dow":"Sunday","status":"workout","phase":"Tri base → build","is_today":true,"workout":{"type":["run","strength"],"title":"Run: tempo option + strength B","duration_min":75,"intensity_overall":{"rpe":"2-7","zones":"Mostly Z2; tempo segments Z3-Z4 when scheduled"},"segments":[{"name":"Warm-up","duration_min":12,"details":"Easy jog"},{"name":"Tempo blocks","duration_min":24,"details":"2×10 min tempo (RPE 6) / 3 min easy"},{"name":"Easy","duration_min":19,"details":"Easy jog"},{"name":"Strength block B","duration_min":20,"details":"See strength_exercises list; keep 1–2 reps in reserve (no grinding)."}],"substitution_ids":["run_bad_weather"],"equipment_group_ids":["gym","run"],"strength":{"block_id":"B","sets_rule":"meta.strength_blocks.progression"}}}]}