A load-only log can confirm a stall. It can never explain one.
A strength log that captures load without effort can prove a squat stalled. It can't tell you whether that's a real ceiling or a bad month, and that gap is a schema problem, not a reading problem.
Three Fridays, the same 315, and no way to know why
The log reads 315 for five, three Fridays in a row. Same weight, same reps, same rest between sets. On paper it is a flat line, the kind that sends a lifter to the search bar typing "is my squat plateau real."
Here is what the log does not show. The first Friday came off nine hours of sleep and moved like an RPE 8. The third came after a work trip and four hours down, a grinding 9.5 that nearly folded on the third rep. Identical numbers. Two entirely different weeks.
The load column swears nothing changed. The lifter knows everything changed. The trouble is that the log sides with the load column, because the load column is all it kept.
The context-blind log
Call it the context-blind log: a record that captures what you lifted and nothing about what it cost you. It can confirm that a stall occurred. It cannot tell you why one occurred.
And without the why, the response is a coin flip. Add volume, deload, swap the exercise, or just wait it out, those are four different bets with four different costs, and a bare load history gives you no basis to pick. Three consecutive weeks of RPE-annotated sessions at consistent load is the smallest dataset that lets a lifter separate a short-sleep run or a skipped deload from an actual adaptation ceiling. Anything thinner is guessing dressed up as data.
Is my plateau real or just noise?
Search the question and almost everything that comes back is about the scale. Weight loss stalled. Recomp flattened. Body-fat readings won't budge. The bodyweight version of "is this real or noise" has a decade of coverage behind it.
The strength version has almost none. When a top set stops moving, the writing that exists tends to jump straight to "how many weeks until I call it," a timing question. That skips the prior question, which is structural: is your log even built to answer it. You can count flat weeks all you want. If the record never captured effort, the count is measuring one variable and pretending it measured two.
The three-week rule everyone repeats
There is a heuristic that keeps surfacing across programming write-ups: give a stalled lift roughly three consecutive weeks of flat top-set numbers before you decide it is a real plateau and not variance. The ~3-week flat-numbers consensus is backed by two named sources in the research: Mike Israetel et al. (*Scientific Principles of Strength Training*, Renaissance Periodization, 2015), which frames a plateau as three or more microcycles of non-progress, equating to roughly three weeks at a typical twice-weekly training frequency, and Eric Helms et al. (*The Muscle and Strength Pyramid: Training*, 3rd ed., 2019), which defines a plateau operationally as no progression over at least two microcycles after controlling for fatigue.
The most-watched version of the underlying idea, Jeff Nippard's "How To Tell If You're Training Hard Enough" Result [2] is titled 'Understanding RPE and RIR: How to Apply them to Optimize Your Training' and covers both RPE and RIR (Reps in Reserve). ([source](https://www.youtube.com/watch?v=4t7g7ikmKcQ)), puts effort, not load alone, at the center of whether a session did what it was supposed to do. That is the tell. The three-week rule only holds if the three weeks recorded effort. Flat load at a steady RPE 8 and flat load at a climbing RPE that hits 9.5 are the same load history and opposite diagnoses. Without the RPE pairing, the rule is unfalsifiable: no observation the log is capable of storing could ever prove the stall was noise.
Without RPE, the three-week rule can't be tested
A rule you can't fail is not a rule, it's a vibe. If the log stores only load, every flat stretch looks identical, so "wait three weeks and see" can never come back false. The rule only becomes testable the moment effort sits in a column next to the weight.
Same numbers, opposite diagnoses
Put two lifters side by side. Both squat 315 for five, three weeks running. Both logs, read on load alone, are the same flat line.
Lifter A logged RPE 8 every week. Load steady, effort steady, and the weight still won't climb. That is what a genuine ceiling looks like: the body is holding the line at a fixed cost and not adapting past it. The response lives in the programming, a deload then a variation or a volume change.
Lifter B logged 8, then 9, then 9.5. Same 315, but it is costing more every week. That is not a strength ceiling, it is fatigue or life stress compounding under a number that happens to be holding. The response is recovery, and reprogramming here would be solving the wrong problem. The load column cannot tell A from B. The RPE column does it in one glance.
Week
Load x reps
Lifter A RPE
Lifter B RPE
1
315 x 5
8
8
2
315 x 5
8
9
3
315 x 5
8
9.5
Illustrative. Identical load logs, divergent effort. A reads as a real ceiling, B as accumulating fatigue. Load alone cannot separate them.
Your column schema decides whether the log can think
This is why the fix is not "read your numbers more carefully." No amount of staring at a load history recovers information the schema never stored. If effort is not a field, the divergence between Lifter A and Lifter B does not exist anywhere in the record, so no analysis, no chart, no reasoning applied after the fact can reconstruct it.
The interpretability of a training log is set at capture, by which columns exist, not later, by how hard you think. A log that pairs RPE with load carries the signal. A log that drops RPE threw the answer away before the question was ever asked.
The load column swears nothing changed. Only the effort column knows whether that's a ceiling or a bad month.
Per-set RPE, captured while it's still true
RPE is a perishable reading. The felt cost of a set is sharp for about as long as you are still catching your breath, then it blurs, and by the drive home a 9.5 and an 8 both round to "heavy." A field that asks for it after the session is a field asking you to reconstruct what you no longer have.
Platepusher keeps RPE as a per-set field, logged next to the weight and reps in the seconds after the set, because that is the only moment the number is honest. The instrument records the thing that decays. Three weeks later, when the load line is flat and the question comes up, the record already holds the column that answers it. Nothing to remember, nothing to reconstruct, just the effort trend sitting where the load trend can't reach.
What we're watching
The next question is whether a lifter should have to notice the divergence at all. A flat load line with a climbing RPE trend is a specific, detectable shape. The open work is surfacing that shape on its own, so the log doesn't just hold the answer but points at it the week the effort starts to drift, not the week the numbers finally break.
Log your next three weeks with RPE on every set. When the load line goes flat, the effort trend will already have told you which kind of stall it is.
Platepusher logs RPE as a per-set field, entered next to weight and reps at the moment the set ends, which is the only point the reading is accurate. For a lifter running a structured block, that pairing is the difference between a load history that can be diagnosed and one that can only be second-guessed.