Preserve observed progression steps in exercise forecasts

This commit is contained in:
Peter Stockings
2026-09-06 22:46:07 +10:00
parent dc0f41cd27
commit 9612d322eb
5 changed files with 58 additions and 8 deletions
+26 -5
View File
@@ -51,10 +51,16 @@ evidence conservative. A stall means failing to improve the rep best at the
current load, including drops/recoveries rather than counting every rebound as
new progress.
The usual pre-increase reps and an actually observed load increment are inferred
from the recent 24 sessions. Load increases are allowed at the inferred threshold;
The usual pre-increase reps and most common load increment are inferred
from the recent 24 sessions. The model preserves the observed mix of load
increments from its transition window rather than replacing every increase with
the most common one. Jumps over 15% of their original source load are excluded
from progression evidence. Load increases are allowed at the inferred threshold;
their reset reps come from actual transitions. No fixed 8–12 prescription is
hardcoded. If there are no observed increases, the model cannot invent them.
Rep-building transitions are excluded at the ceiling, so clipping a rep gain
cannot turn it into artificial evidence of a stall. Actual repeats and the
explicit repeat-set prior remain in the model.
The next set is the most likely **joint** outcome. For longer horizons, 512
deterministically seeded trajectories produce scenario sets at the median load
@@ -87,15 +93,15 @@ results, not independent prospective validation or a guarantee for every exercis
| Horizon | Holdouts | Model | Load MAE (kg) | Rep MAE | E1RM MAE (kg) |
| --- | ---: | --- | ---: | ---: | ---: |
| Next session | 1,929 | Learned transitions | 0.312 | 0.692 | 1.893 |
| Next session | 1,929 | Learned transitions | 0.272 | 0.687 | 1.863 |
| Next session | 1,929 | Repeat last set | 0.506 | 0.800 | 2.395 |
| Next session | 1,929 | Damped trend | 0.374 | 0.800 | 2.133 |
| Next session | 1,929 | Linear trend | 0.422 | 0.800 | 2.118 |
| 4 sessions | 1,636 | Learned transitions | 1.022 | 1.084 | 3.243 |
| 4 sessions | 1,636 | Learned transitions | 0.953 | 1.030 | 3.112 |
| 4 sessions | 1,636 | Repeat last set | 1.884 | 1.145 | 4.159 |
| 4 sessions | 1,636 | Damped trend | 1.074 | 1.145 | 3.436 |
| 4 sessions | 1,636 | Linear trend | 1.201 | 1.145 | 3.581 |
| 8 sessions | 1,308 | Learned transitions | 1.782 | 1.174 | 4.114 |
| 8 sessions | 1,308 | Learned transitions | 1.716 | 1.173 | 4.151 |
| 8 sessions | 1,308 | Repeat last set | 3.545 | 1.158 | 5.906 |
| 8 sessions | 1,308 | Damped trend | 1.903 | 1.158 | 4.518 |
| 8 sessions | 1,308 | Linear trend | 2.056 | 1.158 | 4.845 |
@@ -104,6 +110,21 @@ The learned model improves aggregate load and E1RM errors at all tested horizons
At eight sessions it does **not** beat persistence on reps; difficult sessions
remain unpredictable. The UI includes exercise-specific recent error metrics.
After correcting the collapsed load increments and artificial ceiling repeats,
next-session and four-session errors improved over the original transition model.
Eight-session load error improved from 1.782 to 1.716 kg, but E1RM error rose
slightly from 4.114 to 4.151 kg. This adjustment is not an accuracy gain at every
horizon. All 23 unit tests pass, including mixed increments, ceiling transitions,
outlier increases and unchanged plateau behaviour.
Peter's Stiff Leg Deadlift (TNG) eight-week scenario changes from 181 kg × 7 to
183 kg × 6, and its 26-week scenario from 183.5 kg × 7 to 188 kg × 6. These are
joint load/rep outcomes: a higher load does not necessarily mean a higher E1RM
at every horizon. DB Bulgarian Split Squat's 26-week historical scenario changes
from 39 kg × 10 to 39.5 kg × 11; its history ends on 11 January 2024. The current
Smith machine Bulgarian split squat has only two sessions and remains withheld
until four valid sessions are available.
For 30 degrees Smith Press, the latest block has 39 sessions. The current load
block contains seven sessions at 93.5 kg, progressing 4→5→6→6→6→6→7 reps.
Three sessions did not improve the rep best. The inferred threshold is nine reps