The math behind Workset
Workset publishes the rules it uses so a lifter can check a suggestion against the log that produced it.
Auto-progression engines
Definitions
W = the heaviest weight among the exercise's completed, non-warm-up sets in the session.
Weights are compared in kg, with a tolerance of 0.01 kg.
Top sets = the completed, non-warm-up sets at W.
Work and failure sets are used first. Drop sets are used only when the session
has no completed work or failure set for the exercise.
I = the weight increment: 5 lb when W is in lb, or 2.5 kg when W is in kg.
L = the low rep target. H = the high rep target.
First judged session: no verdict is made. L is seeded as the lowest top-set rep
count and H as the highest top-set rep count.
Deload offer D = round to the nearest I of (W x 0.90).
D is offered when the recorded stall count reaches 3, except for a comeback
session, and only when W > 0. An offer is not applied automatically.
Duration exercises are not judged by these engines.
Comeback rule
If the exercise was last trained at least 14 calendar days ago, its last top
W > 0, and no manual next weight has been typed, the return session is planned
at round to the nearest I of (last top W x 0.90), with reps at L. If that
rounding would produce 0, the last top W is used instead.
The stall count restarts for that session, and the session cannot produce a
deload offer.
Double progression (free)
If every top set has reps >= H: next W = W + I, and planned reps return to L.
If W = 0, next W stays 0.
If every top set has reps >= L, but not every top set reaches H:
next W = W, and planned reps rise by 1 per set, capped at H.
If any top set has reps < L:
next W = W, planned reps stay the same, and the stall count rises by 1.
Linear (Pro)
If every top set has reps >= L: next W = W + I.
Otherwise: next W = W, and the stall count rises by 1.
Percentage wave (Pro)
Let M = the highest estimated one-rep max from the lift's logged work sets, in kg.
Let n = the number of earlier sessions of the lift in this template, taken
modulo 4. For a workout with no template, n is the number of earlier
sessions of the lift anywhere, taken modulo 4.
p = [0.70, 0.75, 0.80, 0.60][n]
Planned W = round to the nearest I of (M x p), converted to the display unit.
Planned reps are at L. At Finish, the engine records a hold only: it does not
add a stall and does not offer its own deload.
AMRAP-informed (Pro)
Let S = reps in the last top set - H.
If S >= 2: next W = W + I. The increase is one increment, however large S is.
If S = 0 or 1: next W = W.
If S < 0: next W = W, and the stall count rises by 1.
RPE-based (Pro)
Let R = the highest RPE logged on a completed, non-warm-up top set.
If R <= 8.0: next W = W + I.
If 8.0 < R < 9.5: next W = W.
If R >= 9.5: next W = W, and the stall count rises by 1.
If no top set has an RPE, the session is judged by double progression instead.
An engine changes only the next suggestion, and the lifter can override that suggestion without changing any set already logged.
Estimated one-rep max
For one qualifying set: estimated one-rep max = W in kg x (1 + reps / 30) The value for a set, session or lift is the maximum value produced by its qualifying sets. A set qualifies when it is completed, is not a warm-up, has weight > 0 and reps > 0, and is not a duration set.
The estimate is the largest Epley value from the qualifying sets, not an average of those sets.
Personal bests
A record-setting set must be completed, must not be a warm-up, must have weight > 0 and reps > 0, and must not be a duration set. Drop and failure sets can qualify. Bodyweight sets, duration sets, cardio and warm-ups set no record. Heaviest weight = maximum W in kg Best estimated one-rep max = maximum [W in kg x (1 + reps / 30)] Best single-set volume = maximum (W in kg x reps) Total tonnage is not a record type and is not calculated as a personal best. A standing record changes only when a new value is strictly greater than the old value. A tie keeps the first date on which the record was set. A personal best is a workout that beats a record which stood before that workout started. The first recorded value for an exercise is a baseline, not a personal best. An imported workout can change the standing records, but an imported workout does not itself produce a personal-best outcome. The separate rep-max table lists, for each exact rep count from 1 to 12, the heaviest weight lifted for that count. It is display only and does not create a personal best.
A personal best is a new standing record in one of the three measures above, not a measure of the total work in a workout.
Strength Score
For each lift, first calculate one estimated one-rep max for each session, using the estimated one-rep max formula and qualifying sets above. A lift is scored only when it has at least 6 sessions with an estimated one-rep max. Lift score = 100 x median(last 5 session estimates) / median(first 5 session estimates) A median for an even number of values is the mean of the two middle values. Group score = the arithmetic mean of the scores of the scored lifts that train that muscle group. One lift can count toward every group it trains. Overall Strength Score = the arithmetic mean of the group scores for groups that have at least one scored lift. A group with no scored lift is left out of the overall score and listed as left out. It is not averaged in as zero. Scores are displayed as whole numbers.
The score compares each lift only with its own earlier sessions, not with other lifters and not with bodyweight.
Weekly streak
A calendar week starts on Monday. A week holds when it contains at least one finished workout that either: (a) has at least one completed work set, or (b) has a cardio entry. Let A = the current week if it holds. If the current week does not hold yet, let A = the previous week. Weekly streak = the number of consecutive holding weeks ending with A. The first earlier week that does not hold ends the count. With no qualifying workout, the streak is 0.
An empty current week does not break the streak yet, but an empty earlier week does.
Warm-up ladder
Warm-ups are generated when a workout starts from a template or quick start.
The exercise must be an eligible barbell or dumbbell compound, the Settings
warm-up switch must be on, and the exercise's own warm-up switch must be on.
W below is the planned top working weight.
Barbell, using the lifter's bar weight B and plate list:
Step 1: B x 10, included only when W >= B + (2 x smallest plate).
If W is below B + (2 x smallest plate), there is no ramp.
For each fraction f and rep count in [(0.40, 5), (0.60, 3), (0.80, 2)]:
candidate = the heaviest loadable weight <= W x f, using B and the plates.
Include candidate only when W x f >= B, candidate < W, and candidate does
not repeat a weight already in the ramp.
Result: at most 4 steps, in ascending weight order.
Example from the code: W = 225 lb and B = 45 lb can produce
45 x 10, 90 x 5, 135 x 3 and 180 x 2.
Dumbbell, per dumbbell, using rack increment q:
q = 5 lb in lb mode, or 2.5 kg in kg mode.
If W < 2q, there is no ramp.
For each fraction f and rep count in
[(0.20, 10), (0.40, 5), (0.60, 3), (0.80, 2)]:
candidate = max(q, floor(W x f / q) x q).
Include candidate only when candidate < W and candidate does not repeat
a weight already in the ramp.
After the steps are built, remove the first step if it is only q.
Result: at most 4 steps, in ascending weight order.
Examples from the code: W = 60 lb produces 10 x 10, 20 x 5, 35 x 3 and 45 x 2;
W = 100 lb produces 20 x 10, 40 x 5, 60 x 3 and 80 x 2.
Warm-up rest is the smaller of 45 seconds and the lift's own rest time.
The ramp is built from the planned top weight and the equipment available, and warm-up sets do not count as work sets.