Checked d48742f7 against 9bbf6b62. 43.476B, down 0.986B, and all of it sits in the two rollback windows: 05-19 to 05-23 gives back 440.2M, 06-12 to 06-19 gives back 536.9M. The per-model series agree: dl_all went down for 16.0% of models on 05-19, 19.0% on 05-20, and 39.3% on 06-13. Days outside 0.7 to 1.3x went 70 to 40. skip_days is 59, every stall window minus its last snapshot, with 04-01 running straight into the gap behind it. The Wednesday pattern holds at the window level too: 18 of 26 stall windows start on one.
What the three rules leave is 13 runs under 0.7x, 20 days, 769M below the median, 1.8% of the total. The next week brings back 486M of it. A normal week brings back about 13M on its own, so call it 300M made up and 450M that never reappears.
The clearest case is 01-28 to 02-01: five days, 137M under the median, 28M back the week after. 01-28 was a freeze, 48% of the 60K+ models flat, so your rule fires and pairs it with 01-29. But 01-29 was itself a low day, and 01-30 lower: 1% frozen on both, the median 60K+ model at 0.56x and then 0.37x of its own usual day. A crawl, with nothing on either side making it up.
A uniform 0.37x across 2,158 models is hard to read as demand. But spreading only moves downloads around, it cannot bring back the missing ones. Would you mark these days in meta.json, a low_days list beside skip_days, so a chart can grey them out instead of smoothing over them?