How the program works

Three phases, one arc: add weight every session until that stops working, then add it every week, then add it every block. You move phases when the current one stops working — never on a fixed date.

Never lifted a barbell before? Start in novice. Read the four lift pages first, then the novice phase page below. Learn the four lifts · Novice phase in full

Already training, or coming back to it? Skip straight to the phase that actually matches where you are — including starting directly in advanced if you have a real, current max. Intermediate phase · Advanced phase · Direct-to-advanced enrollment

The arc: daily, then weekly, then by the block

Working weight over time, one lift. You move to the next phase when the current one stops working, not on a date.

A new lifter recovers fast enough to add weight after almost every session — that's novice, and it's where everyone who has never run a real program starts. Once daily progress stops (a lift starts missing reps two sessions running), the program doesn't grind the same stimulus forever — it moves to a slower clock: intermediate progresses weekly, on one real test attempt, with lighter days in between for volume and technique. Once weekly progress stops too, advanced runs multi-week blocks against a training max, undulating hard/medium/light days within each week and building toward a real competition date if you have one.

None of these transitions happen automatically. Moving from novice to intermediate, or intermediate to advanced, is always your own call inside the app — it flags a lift as a graduation candidate once it has reset twice, as a signal to consider it, never as a trigger that moves you without asking.

This isn't three arbitrary difficulty settings. See stress, recovery, and adaptation for the real theory — the same one Practical Programming builds its own programming model on — behind why these three clocks are genuinely different, not just three versions of the same idea.

Who starts where

That third path is a real, deliberate feature, not a workaround: an experienced lifter has no stall or reset history in this app to graduate from, so the ordinary novice-then-intermediate-then-advanced ladder doesn't apply to them. Direct-to-advanced enrollment exists specifically for that lifter — declare a current one-rep max for squat, bench press, and deadlift (overhead press needs none, since it's never percentage-tracked in this phase) and the app seeds a training max straight from it. Full detail on the advanced phase page.

What a training week actually looks like

One representative week per phase. Full detail on each phase’s own page.
PhaseSessions/weekWhat moves the numberOff day
Novice3Every successful session, on every trained lift— (deadlift and squat every session by design)
Intermediate3 (Build, Groove, Test)Test Day only, once a week per liftGroove Day is lighter, technique-only
Advanced3 (Heavy, Medium, Light)A recomputed training max at the end of each Intensification blockA full deload every 5th week

The four lifts this program is built on

Every phase trains the same four lifts — squat, bench press, deadlift, overhead press — just at a different frequency and intensity structure. If you haven't yet, learn the movements themselves first; the program pages above assume you already know how to set up and execute each one.

The app runs all of this for you

Every rule on every phase page below — the increments, the stall and reset math, the weekly rep-scheme cycling, the block/deload/peak scheduling — is already built and running in the Resolve app, on a paid plan. You can run the program from these pages with a notebook for free if you'd rather, but the app generates each session, computes the warm-up ramp from your own rack, and tracks every reset and phase change for you.