The route-runner edge is real. The engine already caught it.
The cliffhanger I left
Last month I went after the Puka-versus-JSN efficiency debate and found something real: at elite target share, WRs who catch 68 percent or more of their looks beat their same-volume peers by 2.2 points a game the next year. The consensus that catch rate matters everywhere busted (below 18 percent target share it's a scheme artifact), but at the top of the target tree the route-runner premium was loud.
Then I wrote the sentence this post exists to settle. I said the 2.2 was "new information the engine is not using," and I flagged the honest catch: "the next step is Gate 2, does it correlate with engine residuals once an age-neutralized projection is available." I even noted the script punted on Gate 2 because that projection surface "does not exist." So I staged the signal at weight zero and moved on.
Two things were wrong with where I left it. Both are now fixed.
The surface I said didn't exist
First, the sample. The original test ran on 192 pairs from 2022 and 2023, because the script was pinned to a two-season window on a stale assumption that the data ended at 2024. It doesn't. The production stats run back to 1999, and target share is clean from 2006 on. Re-pointed at the full corpus, the cohort is 1,177 pairs, and the elite-target-share route-runner edge holds up: still about +1.9 a game, now on real sample size instead of two years. So Gate 1 was not a fluke. Good.
Second, the projection surface. It was never missing. It's the same move the touchdown-rate test used two days ago: take each WR's actual next-year ppg and subtract what the engine already projects from his prior production and age, ppg0 x (curve[age_next] / curve[age_now]) on the base WR curve. The residual is the part of next year the engine did NOT already see. Then ask the only question that matters: do the route runners beat the FIELD on that residual, or did the engine already have the 2.2 baked in?
I built it as validate_wr_route_runner_lift.py, routed through the same binding-confidence-interval path as every other verdict, resampling players and not seasons, 2026 locked out.
What the data said
It goes the wrong way for the lift, and it isn't close.
| group | residual vs own age-adjusted projection | 95% CI |
|---|---|---|
| elite-ts route runners | -1.25 ppg | [-1.87, -0.68] |
| the field | -0.08 ppg | [-0.19, +0.04] |
| cohort minus field | -1.17 ppg | [-1.81, -0.61] |
Read the top row. The elite route runners land 1.2 points a game UNDER what the engine already projected for them, while the field sits right on its projection. The gap clears zero with room. These WRs are not beating their projection, they are falling short of it.
Then the lift sweep, the part that would have to win for a premium to ship. Every upward lift from +2 to +20 percent makes the cohort prediction worse, the entire confidence interval on the wrong side of zero:
| lift | cohort MAE change | 95% CI | verdict |
|---|---|---|---|
| +0.02 | +0.11 | [+0.06, +0.17] | DEFEND |
| +0.10 | +0.71 | [+0.47, +0.97] | DEFEND |
| +0.20 | +1.75 | [+1.27, +2.21] | DEFEND |
Ten for ten, DEFEND. There is no version of "pay route runners a prime-age bonus" that helps the model.
Why it goes the other way
The 2.2 is real, and it is already in the engine, because a WR who catches 68 percent of an elite target share scored a pile of points, and that pile IS his ppg0, the spine of the projection. The engine already ranks Chase and Nacua and St. Brown at the top because their production put them there. Bolting a route-runner lift on top would pay for the same season twice.
The under-projection is the sharper half. Why do these specific WRs land below their projection? Because the cohort is defined on a peak efficiency season, and a peak regresses. The engine's WR curve assumes a smooth age glide; it does not assume that a 30-percent-target, 74-percent-catch season is partly a high-water mark. So the model carries a touch too much of that peak forward. The route_runner archetype does get the most generous aging treatment in the engine, a 1.12 post-peak modifier, but that is an argument for a 34-year-old, and it only makes the prime-age over-projection slightly worse, not better.
And look at who the cohort is. The 2024 elite-ts route runners are A.J. Brown, Amon-Ra St. Brown, Chris Godwin, DJ Moore, DeVonta Smith, Ja'Marr Chase, Puka Nacua. Flip a prime-age lift on and you have just marked up your seven most expensive receivers, the exact players the binding interval says will come in under projection. That is the named-case discipline catching a bad ship, same as it caught the PWOPR lift on the same position last month.
What changed from last month
I'll own the part I got wrong. The roster read holds: elite-ts route runners are genuinely better, and last month's "pay up, and don't pay it at low volume" still stands. What busted is the engine claim. "New information the engine is not using" was wrong, the engine was using it the whole time, through the production that earned these guys their ranking. There was no hidden 2.2 to bolt on. There was the same 2.2, counted once, exactly where it belongs.
That's the fourth straight signal this month, after the QB touchdown rate, the rushing QB, and the pass-catching back, where a real, true finding turned out to already live inside the player's own prior production. Everybody can find the signal. The discipline is checking whether the price already moved.
What it means for your roster
Pay up for the elite-target-share route runner. He's the real thing, and the board already has him near the top, no patch incoming or needed. Just don't buy a career-best efficiency season at full freight expecting a clean repeat, the regression these names show against their own projection is the reason the engine isn't going to mark them up further. The edge is already in the number.
Receipts
- The harness:
scripts/validate_wr_route_runner_lift.py - The Gate-1 finding (full corpus):
scripts/h65_wr_route_runner_prime_lift.py - The verdict path:
scripts/eval_lib.py(cluster bootstrap by player, binding confidence interval) - The original take: Catch rate is a scheme stat. 68 percent is where it stops being one.