Research · 2026-05-20

Published Plan Benchmarks — Overlay Our Model

Pick a famous training plan from the dropdown. The chart overlays the plan's published week-by-week km against what our continuous model and J-H-R cycle would produce starting from the plan's week 1. Use this to test our hypotheses against real coaching data. Companion to published-plan-benchmarks.md.

1 — Overlay

K = 4
0.90
1.30

2 — Cross-Plan Comparison Table

For each plan, our continuous model (K from Option B schedule) and J-H-R cycle starting at plan W1, simulated for the plan's duration. Compare peaks to see where our models land relative to coaching consensus.

Plan Start km Wks Plan peak Cont. peak (K=4) Cycle peak Plan max WoW%

3 — Cutback Magnitudes by Volume (The Inversion Finding)

Each dot is a single cutback week in a published plan. x = preceding 3-week peak volume. y = the % drop in that cutback week. Taper weeks (final 3 weeks pre-race) are excluded so we're looking at periodic recovery cutbacks, not race tapers.

Two findings.
  1. Strong, universal: coaching cutbacks cluster at 10-20 %, median ~12 %. Our current 28-30 % settings for new_runner and developing are too deep across the board — even Higdon's hardest plans only use 30 % at 85+ km/wk peaks.
  2. Qualified, coach-dependent: within the Higdon family (Novice 1 → Advanced 1), cutbacks get clearly deeper at higher volume (Pearson r = 0.72). Across all coaches the slope is present but weak (r = 0.17). Hansons is the outlier — universally shallow cuts (5-13 %) regardless of volume.
Filter by coaching philosophy — the inversion is clearest within Higdon-style plans:

Per-plan cutback summary

PlanPeak (excl. taper)Cutback rangeMedianCadence

Tren cycle rules vs published cutback magnitudes

Tier (current code)Current cut %Coaching consensusProposed
new_runner30 %~10 %10 %
developing28 %~15 %15 %
established sub-8015 %~20 %20 %
established ≥ 8025 %~25-30 %25 % (keep)
advanced/elite~30 %30 %

4 — Proposed Code Changes — Before / After

Two minimal code changes (full diffs in published-plan-benchmarks.md § 4.5): (a) calibrate cycle cutbacks to coaching consensus (drop new_runner 30 %→10 %, developing 28 %→15 %, established 25 %→20 %, etc.); (b) add an additive floor (+0.6 to +0.8 km/wk) below 25 km/wk chronic, where percentage growth underflows.

Gap-to-plan-peak: every plan, current vs proposed

Each plan gets two pairs of bars: current vs proposed cycle (red), current vs proposed continuous (green). 0 % = matches the plan exactly; negative = under-shoots.

Headline numbers

Honest reading. Cycle proposed match rate doubles (2/10 → 4/10) but the direction-correct changes don't close the structural gap to periodised plans. Continuous proposed is unchanged above 25 km/wk — the additive floor only fires below that. The big-gap plans (Hansons Beginner, Higdon Novice 1) stay big-gap because they prescribe physiologically aggressive builds our safety layers (Frandsen single-session cap, ACWR overrides) would reasonably resist.

The fundamental finding

Cumulatively, this benchmark suite says: our continuous model is a base-building tool, not a plan-execution tool. If we want to replicate Pfitzinger or Higdon Intermediate trajectories, the architectural answer is "plan mode" — let the user subscribe to a published plan template, and our model runs underneath as the safety layer (Frandsen cap + monotony guard + ACWR overrides). That's orthogonal to the continuous-vs-cycle debate.

Ship priority. The two code changes above are 6 lines each, evidence-supported in direction, and measurable in effect — they should ship as a small honest correction. They do not close the plan-fit gap meaningfully. Treat the residual gap as evidence we need plan-mode, not evidence the continuous model is broken.

Code diff preview

// tren_web/src/domain/volume-cycle.ts
 export const CYCLE_PARAMS: Record<string, CycleParams> = {
-  new_runner:       { holdWeeks: 3, reduceCut: 0.30 },  // 5-week J-H-H-H-R
-  developing:       { holdWeeks: 2, reduceCut: 0.28 },  // 4-week J-H-H-R
-  established:      { holdWeeks: 2, reduceCut: 0.25 },  // 4-week J-H-H-R
-  cross_sport:      { holdWeeks: 3, reduceCut: 0.30 },  // 5-week J-H-H-H-R
-  strength_athlete: { holdWeeks: 2, reduceCut: 0.28 },  // 4-week J-H-H-R
+  new_runner:       { holdWeeks: 2, reduceCut: 0.10 },  // was 5-wk, 30%
+  developing:       { holdWeeks: 2, reduceCut: 0.15 },  // was 28%
+  established:      { holdWeeks: 2, reduceCut: 0.20 },  // was 25%
+  cross_sport:      { holdWeeks: 2, reduceCut: 0.15 },  // was 5-wk, 30%
+  strength_athlete: { holdWeeks: 2, reduceCut: 0.15 },  // was 28%
 };

-const LOW_VOL_CYCLE: CycleParams = { holdWeeks: 1, reduceCut: 0.15 };
+const LOW_VOL_CYCLE: CycleParams = { holdWeeks: 1, reduceCut: 0.18 };  // matches Higdon Intermediate ~18% cut median

// tren_web/src/domain/continuous-progression.ts — inside computeContinuousVolumeCap
   const growthRate = (headroom / kStructEff) * mskCoefValue;
-  const vTarget    = vChronic * (1 + growthRate);
+  const vTargetPct = vChronic * (1 + growthRate);
+  // Additive floor at very low volumes — Higdon Novice 5K/10K progresses ~+0.8 km/wk linearly
+  const minStepKm = vChronic < 15 ? 0.8 : vChronic < 25 ? 0.6 : 0;
+  const vTarget   = Math.max(vTargetPct, vChronic + minStepKm);

5 — Hypotheses We Can Test With This Data

  1. H1 — Plans use 3-up-1-down with 15-35 % cutbacks. Check the plan dropdown: Pfitz, Hansons Advanced, Higdon Intermediate, Higdon Advanced, RunnersConnect all show clear cutback weeks every 3-4. Hansons Beginner has the W5→W6 outlier (+67 %).
  2. H2 — Below 30 km/wk, no cutbacks. Higdon Novice 5K and 10K confirm: pure linear ramps, zero cutbacks. Our continuous model is the right shape here; the discrete cycle would be wrong.
  3. H3 — Build rate is 3-10 %/wk. Check the "Plan max WoW %" column. Most plans peak around +25-30 % WoW on return weeks but 3-10 % on regular build weeks. Hansons Beginner W5→W6 is the only outlier above 30 %.
  4. H4 — Plans assume base ~50-65 % of peak. Read prerequisite for each plan from the meta. Our continuous model's role is to *get to* that prerequisite from current chronic — not to replicate the plan itself.
  5. H5 — Daniels Equilibrium ≈ our continuous model in spirit. Equilibrium = step + hold 3 wks at +5 %/wk averaged. Our continuous at K=4 = +7 %/wk push, ~1 %/wk realised chronic. Different math, similar realised trajectory.
  6. H6 — Hansons Beginner W5→W6 is an outlier. Pick that plan; check the WoW spike. This is what our Layer 2 (Frandsen single-session cap) would catch.