The deload was legible three sessions before you felt it.
Your log already shows the deload coming, in bar-speed drift, RPE creep, and a compressing top-set ratio. Most trackers just count the days since your last session instead.
The bar was slow on a day the numbers said green
The bar felt heavy on a day the sheet said it shouldn't. Third week of the block, same 315 on the top set, same rep target, and the plates still went up. But the first rep off the floor took a beat longer than it did two weeks ago, and the lifter ground through it at the prescribed RPE 8 without blinking. On paper the session logged clean. Green across the board, another entry in the streak of completed workouts.
In the body, the third stalled week was already forming. Three sessions early. Nothing in the app noticed, because nothing in the app was looking at the thing that had changed.
The silent deload
Fatigue does not announce itself with a missed rep. By the time you fail a set, the accumulation has been building for one to three sessions, and it has been leaving fingerprints in your log the whole time. Call it the silent deload: the point at which your programming should back off arrives well before the point at which your performance visibly cracks.
The reps still close. The weight still moves. What shifts first is the cost of moving it. That cost is measurable, it is longitudinal, and for most lifters it is sitting in a training log that nobody, including the app, ever reads back at the mesocycle scale.
'You haven't lifted in N days' is the wrong question
Open most trackers and the deload logic, where it exists at all, keys off recency. Haven't logged a session in five days? Prompt to ease back in. Logged twelve sessions in a row? Suggest a rest week on a fixed calendar.
Both are counting the wrong axis. A lifter deep into a hard hypertrophy block can be training every scheduled day and be far more fatigued than someone who took an unplanned four days off. Frequency and recency describe your schedule. They say almost nothing about your accumulated fatigue. The signal that actually times a deload is not how often you showed up, it is what happened to your output while you were there.
What the data actually drifts on
Four signals move before a rep is missed, and a serious log already contains three of them.
Bar-speed drift is the cleanest. Velocity-based training work from Mladen Jovanovic and the load-velocity literature (Gonzalez-Badillo and colleagues) established that a given load has a repeatable bar speed for a given lifter. When the same weight starts moving slower across a block, at a fixed load, that is fatigue expressed in centimeters per second before it is expressed in a grind.
RPE drift is the same story from the effort side. Eric Helms and the autoregulation literature treat rising RPE at a fixed weight-and-reps as the readable trace of fatigue accumulation. The set you rated 7 in week one and 8.5 in week three did not get heavier. You got more tired.
Top-set to back-off compression is the one lifters feel but rarely trend: the back-off sets start feeling nearly as hard as the top set. The gap compresses. And underneath all of it, HRV and sleep drift show up in HealthKit, resting HRV sagging and sleep fragmenting across the back half of a block, usually siloed in a health app that never joins the data to your lifts.
Drift signal
What your log already shows
What most trackers do with it
Bar-speed drift
Same load, slower concentric velocity week over week
Nothing, most never capture velocity at all
RPE drift at fixed load
Same weight and reps rated a half-point to a full point higher
Store it as a number, never trend it
Top-set / back-off compression
Back-off sets creeping closer to the top set's effort
Nothing, the ratio is never computed
HRV / sleep dip
HealthKit shows resting HRV sagging, sleep fragmenting across the block
Leave it siloed, never joined to lift data
One low HRV reading is noise
HRV is individual and jumpy day to day. A single low morning reading means nothing on its own. The trend across a mesocycle, sagging alongside bar-speed and RPE drift, is the signal. Read it convergently or not at all.
The pattern in a real block
Run it forward on a 5/3/1-style upper block. Week one, the top-set bench moves fast and the AMRAP set clears the target with two in reserve. Back-offs feel like back-offs. HRV steady, sleep normal.
Week three, the same programmed weight on the same day. The AMRAP hits the number, so the app logs a win. But the bar off the chest is visibly slower, the set that read RPE 7 now reads 8.5, the back-off triples feel like the top set used to, and your watch has been quietly logging three straight nights of shorter, choppier sleep with resting HRV down.
None of those four is decisive alone. Together they converge on one read: you are one, maybe two sessions from a stall you can still avoid. Pull volume this week and the block keeps climbing. Push through on schedule because the sheet says green, and week four is where the top set stops moving and you find out the expensive way.
If the signal is early, the deload should be too
Accept that fatigue drifts before it breaks, and the whole timing question inverts. You stop treating the deload as a scheduled event or a reaction to a missed lift, and start treating it as something your own data forecasts. The lifter who reads the drift deloads a week that was already going to be junk anyway, and keeps the productive weeks productive.
That only works if something reads the log back at the mesocycle scale. A single session tells you almost nothing. The drift lives in the comparison across weeks, at fixed load, and no human eyeballing a set of rows on a phone reliably catches a half-point of RPE creep and a slower bar and a compressing back-off ratio at once. This is arithmetic across your history, and it is exactly the arithmetic a log is supposed to make possible.
The deload was legible three sessions before you felt it. Your app just wasn't reading.
An instrument that reads your own log back
This is the gap Platepusher is built to close. The fatigue and plateau flags run on the log you are already keeping, trending velocity-at-load, RPE-at-load, and the top-set-to-back-off ratio across a rolling mesocycle window, and cross-referencing resting HRV and sleep from HealthKit so the four signals are read together instead of one at a time.
The flag is deterministic. It fires on convergent drift in your data, math, not an AI coach guessing at your mood, and it does not tell you what to do. It shows you the week your output started paying more to move the same weight, and leaves the programming call where it belongs, with the lifter who already has a plan. Your history stops being a scroll of completed sessions and starts being the N=1 experiment it always was.
What we're tracking next
The open question is how much of the velocity signal survives without a barbell tracker. Bar-speed drift is cleanest with a velocity device, but the log already carries strong proxies in RPE drift and back-off compression, and the interesting work is how tightly those proxies track true velocity loss across different lifts and lifter levels. That is the calibration we are watching as more logs accumulate.
Your last twelve weeks of logs have been recording the drift. Get Platepusher and let it read them back.
The four-drift read is not a Platepusher invention. It is how advanced lifters already time deloads by feel, formalized from velocity-based training and autoregulation research. Platepusher's contribution is doing the cross-week arithmetic on your log so the drift is visible before the stalled week, not after.