On October 24, 2026, I want to run 30 kilometres in one go. That’s farther than I’ve ever run — my longest efforts so far have been half-marathon distance — and the date matters less than the manner: I want to arrive there without getting injured on the way.
That ordering is the whole plan, really:
- Don’t get injured.
- Don’t regress.
- Reach the goal.
A slower, healthy path beats an aggressive one that breaks down. If the build needs more time, the date slides before I do.
Why every single run is easy
I have a history: recurring calf, quad and plantar tightness, and a well-documented pattern where fast, flat running reliably flares something. So this plan has zero speed work. Every run is Zone 2, governed by heart rate — for me that’s 130–145 bpm — not pace. Pace is whatever it is that day; the heart rate cap is the contract.
The methodology leans on La Clinique du Coureur principles plus the boring classics: progress one variable at a time, respect the 10 % rule, cap long-run progression by duration, deload every third week, and keep the acute:chronic workload ratio in the 0.8–1.3 band.
The shape of it
Eighteen weeks, from ~35 km/week up to ~53 km/week at the peak. Each week looks like this:
- one long run (Saturday), the backbone of the build
- one medium-long run (Wednesday)
- easy runs to fill out the volume
- two strength sessions — non-negotiable, because I run in zero-drop Altras, which load the calves, Achilles and plantar fascia hard
Three stepping-stone events punctuate the build, and none of them are raced — all run controlled and easy:
- UTFS 10 km trail — August 9, climb-heavy
- Beluga 18 km trail — September 19, descent-heavy
- Half marathon — October 4, comfortable, not all-out
The real constraint
Young kids, unreliable sleep, the occasional daycare plague. My recovery capacity — not my ambition — is the binding constraint, so the plan is built to tolerate interruptions. Missed sessions are never made up; the plan absorbs them and moves on. Completion-driven, not calendar-driven.
The whole thing lives in org-mode, syncs itself to intervals.icu and my Garmin watch through a couple of Python scripts, and gets analyzed after every run. I’ll write about that tooling separately.
Week 1 is already in the books. More soon.