Run315

Race plan

2026-09-28 · 10.00 km

Club 10K

42:01 4:12 /km
Projected finish
+3:01 goal 39:00
Short of your goal
21 days to go
Trend -0.2% · your bias +0.6%

Race-day readiness

If you hold your current 66 load per day

-1
Form on race day · no taper
+16
Form with a 14-day taper
Fitness would still be 56.

Form above about +10 on the day is where most people race well. Cutting volume to roughly 55% for the last 14 days moves you from -1 to +16 without losing meaningful fitness.

The course

Attach the course and the pacing below stops being a guess about a flat road. Upload the organiser GPX, or point at a run where you covered the same ground.

Training block

3 weeks · peaks at 66 km in week 2

Built from what you are running now, not from a template. Volume rises across the block, backs off every fourth week, and the heaviest week lands just before the taper. Every session is a band off your own curve, so it stays right as you get fitter.

Under eight weeks is short for a real build -- expect to arrive fit rather than peaked.
122%
Of the plan, actually run
2 of 3 finished weeks on target · 3/3 long runs done.

You are tracking the plan closely -- within a tenth on most weeks, which is as close as anyone follows a schedule.

Base Build Peak Taper
WeekPhaseVolume Long runKey sessions
1 · 3 to go Base 60 km 15.6 km
Steady 4:35–4:51 /km
20-30 min continuous, comfortably hard
Strides 3:46–3:58 /km
6 x 20 s relaxed and fast off a jog
2 · 2 to go Build 66 km 19.8 km
Threshold 4:16–4:27 /km
3 x 8 min with 2 min jog
Intervals 4:00–4:12 /km
6 x 3 min hard with 2 min jog
3 · 1 to go Taper 23 km 5.8 km
Sharpener 4:16–4:27 /km
10 min easy, 6 x 90 s at race effort, 10 min easy

A schedule, not a prescription. It has no idea whether you slept, and the readiness read on the dashboard is the thing that should override it.

Split targets

Slightly negative — 1% steadier out, 1% quicker back

Checkpoint Projected Goal
1K 4:15 3:56
2K 8:29 7:53
3K 12:44 11:49
4K 16:59 15:45
5K 21:13 19:42
6K 25:23 23:33
7K 29:33 27:25
8K 33:42 31:17
9K 37:52 35:08
Finish 42:01 39:00
, so the check has to wait for the parsed document. addEventListener('DOMContentLoaded', function () { try { var dm = ['standalone', 'minimal-ui', 'fullscreen', 'window-controls-overlay']; if (!document.getElementById('frozen-note') && (navigator.standalone || dm.some(function (m) { return matchMedia('(display-mode: ' + m + ')').matches; }))) { var pk = 'portal-installed', reg = JSON.parse(localStorage.getItem(pk) || '{}'); reg.Run315 = Date.now(); localStorage.setItem(pk, JSON.stringify(reg)); } } catch (e) { /* private mode - ignore */ } }); // Installable, and readable on the train. See templates/sw.js. if ('serviceWorker' in navigator) { addEventListener('load', function () { navigator.serviceWorker.register('/Run315/sw.js'); }); }
Static demo. A synthetic athlete, frozen to files — every page here is the real app rendering real analysis, but anything that writes (Garmin sync, adding a race, the coach review) is switched off, because a file server has nothing to write to. Source & how to run it for real.