H-151: does playprob serve P(DRESSED) rather than P(takes an offensive snap), 18-28% apart on the bench? Refined before running: for a dressed man the served multiplier is the table (confirmed_active only ever stamps 0.0), fitted on on_roster=1=ACT; is the bench's served error in p or in the conditional line?
Owner lane: allocation
Question
H-151: does playprob serve P(DRESSED) rather than P(takes an offensive snap), 18-28% apart on the bench? Refined before running: for a dressed man the served multiplier is the table (confirmed_active only ever stamps 0.0), fitted on on_roster=1=ACT; is the bench's served error in p or in the conditional line?
Prediction
Frozen (protocol 0017Z): H-151 REFUTED on its wording; |E1| < 0.03 in every bench cell; bench over-projection in the conditional term, largest for QB2; played-minus-offense-snap gap under 3 points in every bench cell.
Finding and verdict
H-151 REFINED. As worded it is REFUTED: for a dressed man production serves P(played | dressed, cell), not P(dressed), and on the bench it is served too LOW (-0.09 to -0.13), not too high. The claim the data carries: the table's population changes meaning at 2019 (no INA before), so it is fitted on a mixture of P(dressed x played) and P(played | dressed), and the bench under-call is that mixture. The fix is not free: refitting on 2019+ improves Brier and worsens fantasy MAE +0.011, because the bench conditional line over-projects on offensive-snap rows (+0.3 to +3.9 pts/row) and the low p was offsetting it -- ~2.5 pts per team-game each way. A vacant starting QB job (79 rows) is the largest single cell: -7.69 pts per row. Discovery/execution only; nothing enters CHANGES-PROPOSED.
Reasoning
The literal H-151 mechanism (P(dressed)) is absent on the confirmed path by design (inactives.py only stamps zero) and the table's target is conditional on ACT; the tier session's intuition was right for 2016-18 rows and for vacancy weeks only.
Next action
(a) the bench conditional line over-projection on offense-snap rows is the object that must move BEFORE the 2019 window can ship (window alone costs MAE); (b) vacancy: filed as a new row -- promote the backup when the ACT room holds no chart-1 man, then grade on the same 79+ rows; (c) the H8 invariant was red at run time (efficiency.py:182 scan order); this run uses one bundle per season on main's scan order, same as production, and no arm reorders player_week, so H8 does not separate the arms.
Source provenance and publication scope
Owned research record: research/scientist/experiments/2026-09-27T0022Z-h151-dressed-vs-snap.json
This public reading view includes authored question, finding, review, reasoning and next action fields. Raw measurements, commands, logs and local paths are withheld. The record ID clock is not proof of completion or deployment.