Mon–Thu textbook. Fri 01 strength SKIPPED (drought 30+ days). Sat 02 OWS recon (2.06km) + 70km e-bike (unrecorded) replaced indoor brick. Sun 03 outdoor brick: 90.2km / 154W avg / 123 bpm avg (disciplined sub-LT1 outdoor pacing ✓) + 7.5km Z3 run (87% time grey zone, classic post-3h-bike drift). Recovery Index 38 next morning — body felt the volume.
Mon–Wed textbook. Thu 23 unplanned ROUVY Z2 bike. Sat 25 major overshoot — ROUVY 1h + outdoor 41km vs planned 60' easy. Sun 26 swim replaced run. Body absorbed it (readiness 90→81→83) but HRV leaking down (59 ms vs 7d 62, 14d 63).
Textbook 5-day rest Mon–Fri. Sat 18 unplanned brick (68.5km bike + 6.77km run). Sun 19 Rapperswil course recon (10.2km Z2 loop) + 2075m swim. Readiness dropped 88→77→74. HRV declining 73→60 ms. Sleep efficiency 44% Sun (latency 1 = exhaustion crash).
Marathon completed as planned B-race. Zurich Marathon 3:48:04 (5:21/km, avg 158.3 bpm, max 176, 65m elev). Conservative start (lap 1: 145.7 bpm, 5:20/km). Steady laps 2–4 at 5:09–5:10/km, 152–156 bpm. Fade from 30km. ~6 min positive split. 6 gels on schedule. Run LT2 validated at ~160 bpm.
Tue sharpener 9.03km / 4:51/km / avg 149.6 bpm. Thu swim 1975m / 132 bpm. Sat taper run slightly long (67' vs 50') with HR at LT1 ceiling. Sun outdoor ride 64.6km @ 156W / 122.7 bpm / 627m climb. Both acceptable for late taper. Readiness 84, HRV 67–68 ms.
Tue marathon-pace run 10.29km @ 5:07/km avg 148 bpm — PR flag, VO2max 55. Wed swim 1800m / 140 bpm. Sat long Z2 65.5km / 168.9W (grey zone +19W above LT1). Sun last long run 20.1km / 127.5 bpm / 5:58/km (textbook sub-LT1).
Swim Camp Sursee Fri–Sun: Session 1 (2,650m), Heavy day Sat (3,800m + 2x dryland), Session 4 Sun (3,900m intervals). Mon–Thu textbook with 3x e-bike commute. Wed run 9.56km / 127.6 bpm hilly. Wed swim skipped (correct pre-camp).
Tue easy 9.25km / 126 bpm. Wed swim 2000m / 142 bpm. Thu easy 6.7km / 124.8 bpm. Sat ROUVY x2 / 46km / 129.5W + swim 1875m. Sun long Z2 17.6km / 125.5 bpm.