Masters Engine

How Masters Engine calculates a session

The arithmetic behind the programme, written out in full — including the parts that are extrapolated and the parts that have not been checked yet.

The problem

Why a fixed calorie target is wrong for somebody

The first version of this programme prescribed conditioning from fixed rep ranges, the way most written programmes do. An EMOM would ask for seven calories in 45 seconds and call it a hard interval.

Seven calories in 45 seconds is about 100 watts. On a rower that is a 2:30 split. For an athlete who rows a 7:30 2000 m, that is not a hard day — it is a warm-up they could hold for an hour. The same number given to someone rowing 9:30 is close to a maximal effort.

This is the structural flaw in a round number: it flatters a weak athlete and insults a strong one, and it is only correct for the narrow band of people who happen to sit at the population average. Every prescription in Masters Engine is therefore a share of something you have tested, never a constant.

The inputs

The numbers everything is built from

Five tests are entered in Setup. Every conditioning calorie, metre and rep in the programme derives from one of them.

TestWhat it drives
2000 m rowEvery rowing, ski and bike calorie target
5000 m runEvery run and shuttle distance
Strict pull-up maxAll pulling volume
Push-up maxAll pressing volume
Hanging knee-raise maxToes-to-bar and kipping pull-up volume

Strength and olympic lifting sessions derive from your own training maxes.

Sex is a first-class field rather than an afterthought, because it sets benchmark Rx loads, default implement weights, and the values used to fill a capacity field you have left blank.

The arithmetic

The power maths is Concept2's own

The prescribed number has to be the number on the screen in front of you, so the conversion from pace to power is the one the monitor itself uses.

watts = 2.80 / (seconds per metre)³
kcal/hr = watts × 4 × 0.8604 + 300

The same two lines the app runs, and the same two the calculator on the front page runs.

That trailing +300 is the whole reason fixed calorie targets misbehave. It is a fixed hourly offset, so the shorter the interval, the larger a share of the calorie count it represents — which is why a 20-calorie minute and a 20-calorie ten-minute piece are not remotely the same request. Any constant calorie target is wrong for somebody, and it is wrong by more on short intervals than on long ones.

Other machines are scaled against rowing power rather than measured separately: ski at 0.90, bike at 0.95, bike erg at 1.05. Shuttle runs are set at 0.80 of your 5k pace, which pays for the turns.

Bodyweight

How gymnastics volume is derived from three tests

Thirteen gymnastics movements declare their unbroken maximum as a function of your strict pull-up, push-up and hanging knee-raise numbers. Kipping pull-ups resolve as the larger of pull × 2 + 4 and hang × 0.6. Bar muscle-ups resolve as (pull − 4) × 0.7. Every prescription involving those movements is then a share of the result.

This is also the gate that keeps movements out. Bar muscle-ups do not appear in a session until your pull-up max supports them, and they disappear again if it drops. Nothing you cannot do gets programmed, which is a different guarantee from scaling something you cannot do.

The hanging knee raise is the newest of the five tests, and it exists because the strict pull-up was being asked a question it cannot answer. Toes-to-bar and kipping pull-ups were both derived from it. Neither is a pulling movement: toes-to-bar is hip flexion and grip held from a hang, and the kip exists precisely to reduce the pulling demand, which is why it is usually the first pull-up variation an athlete gets rather than a reward for already having three strict ones.

The cost of that was not spread evenly. On the app's own norms every male division sat above the three-strict-pull-up gate and three of the four female divisions sat below it, so a woman in the 50–54 division who never opened Setup was never programmed a toes-to-bar or a kipping pull-up at all. Both now resolve to the larger of the two estimates — toes-to-bar as max(hang × 0.55, min(pull × 2, pull × 1.4 + 4)) — so the hang can only unlock a movement or raise its volume, never take work away from an athlete whose pull-ups already carried it. Muscle-ups and rope climbs still gate on real pulling strength, because that is what they actually require.

Dosing

Sessions are dosed by work time, not by rep count

The generator decides how many seconds of a movement belong in a round, then asks your numbers what that is worth in reps, calories or metres. Intensity is expressed as a fraction of your 2k power, so a hard day lands hard and a recovery day lands easy for you specifically, rather than for the person the programme was written about.

Work-time scaling is not linear. An early version scaled it straight and produced 13 strict pull-ups in a 60-second interval against a tested max of 15 — arithmetically defensible, physically absurd. The scaling now runs at an exponent of 0.6, and any set longer than 90 seconds stops being treated as a set at all.

Measured across every session in eight cycles, for a profile rowing a 7:30 2k with 15 strict pull-ups:

 Fixed rangesFrom capacity
Erg calories per segment (median)915
Strict pull-ups per round47
Kipping pull-ups per round712

Defaults

Why the starting norms deliberately under-reach

Leave a capacity test blank and the app falls back to a normative value for your sex and division, so it works on day one. The moment you enter a real number, the real number wins. A norm is a starting estimate, never a ceiling.

A recorded zero is a real number, not a blank. An athlete who honestly entered 0 strict pull-ups used to be read as having skipped the field and was credited with the norm — three reps — which handed them more pulling volume than a tester who entered 2. The rep fields now accept zero as data. The two time fields do not, because an unreadable time also parses to zero, and a 2k read as zero would clamp to the fastest value the field allows and drive every erg target in the programme from it.

The published norms were revised downward during development. The first draft put a male 45–49 2000 m row at 7:15, which is competitive-athlete territory, not an average. The code comment beside it promised the norms would under-reach rather than over-reach, and 7:15 broke that promise. The final value is 7:45.

The direction of that error matters more than its size. An unfilled profile that guesses low prescribes a session that is too easy, which costs you one workout. An unfilled profile that guesses high prescribes a session you cannot recover from, which at 45+ can cost considerably more.

Constraints

What the generator is not allowed to do

These are hard numeric limits in the code, not guidance. Almost every one of them exists because reading real generated output caught something that passed every automated check — a chipper rep multiplier that produced 13 bar muscle-ups in a single piece, a Fran scaling that offered 24-17-10 against an Rx of 21-15-9.

  • Total reps across a piece stay within a multiple of your tested unbroken maximum — 2.8× for tier 1–2 movements, 1.8× for tier 3 — so five rounds and twelve rounds are prescribed differently
  • Max-derived numbers always round down, so the floor comes from the athlete rather than the population
  • Box jumps, GHD sit-ups and high-rep kipping appear only on Day 3, never within 48 hours of a heavy lower body day, because eccentric load drives the muscle damage masters clear slowest
  • Two exposures a week maximum for muscle-ups, handstand push-ups, rope climbs and chest-to-bar
  • One high-stress movement per piece, and never two of the same pattern
  • Time domains rotate evenly across sprint, medium, long and interval, so you are never parked in one energy system
  • Anything isometric is prescribed in seconds, never as a rep count
  • Deadlift stays at deliberately low frequency, top sets only, and drops out entirely on deload weeks

Design decision

Why the app never calls a language model

Sessions are generated by a constrained generator: tagged movements crossed with five workout grammars — AMRAP, rounds for time, EMOM, chipper, intervals — seeded by cycle and week, so a session stays put when you reopen it but does not repeat. Across 40 cycles that produced 958 unique sessions out of 960.

A language model is deliberately kept out of this layer. The guardrails are the product. A free-running model will cheerfully hand a 58-year-old 100 kipping pull-ups, because nothing in it is counting against a tested maximum; a generator with explicit numeric ceilings cannot. The useful place for a model here is the layer above the prescription — coaching notes, spotting patterns across logged history — not the prescription itself.

Competition

Why the taper cuts volume but not percentages

Enter a competition date and the ten days before it cut volume steeply without lowering a single prescribed percentage. That combination — volume down, intensity held — is the one thing the taper research is unambiguous about, and it is the part most athletes get backwards by going easy on the bar instead of doing less work.

Competition days come with a between-event re-warming plan, because masters reach working temperature more slowly and have to start earlier than the athlete next to them. Afterwards the programme walks you back out over four easy days rather than the two that feel about right. Nothing you log across that entire window can drag your training maxes down, so a bad day on the floor does not follow you home.

There is no masters-specific taper protocol in the literature. Those numbers are reasoned from endurance and general-strength research and applied to a population that research did not study. The app says so at the point where you read them, rather than presenting an extrapolation as a finding.

Benchmarks

Why benchmark workouts are not individualised

Week 6 of every cycle replaces Day 4's generated conditioning with a named workout, 16 in rotation. That lands roughly once every two months, after the deload and before the strength test, with deadlift volume pulled back and the loaded carry dropped so it gets fresh legs. Every fourth cycle re-tests the benchmark from three cycles earlier, and your previous scores appear on the card.

Benchmarks are the one thing the generator does not individualise. A score is only worth having if it is comparable — to the field and to your own last attempt. So the workout is shown as written, with Rx loads for your division and sex, alongside a masters scaling computed from your training maxes and tested capacities.

That scaling only ever scales down. This sounds obvious and was not: an early version offered 24-17-10 pull-ups for Fran against an Rx of 21-15-9, which is not a scaling of anything.

Honesty

What has not been validated

Three things are worth knowing before you decide whether to trust any of the above.

The benchmark scalings are computed but unchecked. They are derived from your training maxes and capacities using the rules described here, and they have not been compared against real masters competition standards. The arithmetic is consistent; whether it lands where a masters division actually competes is an open question.

The taper is extrapolated, as set out above.

The whole programme has been tested thoroughly by one person — me — who tolerates more training than the typical athlete it is written for. That is the sharpest risk in the product. If it only works for people who were already durable, it is selling the problem it promised to solve. The only way to find out is to run it on a group that is not me, which is what the test cycle is for, and why at least a third of the places are reserved for athletes slower than I am.

Thirty places, one eight-week cycle, permanent free access in return.

Ask for a place