A read that will never work is no longer reported as one that might. Two different answers used to arrive as vendor_unavailable, the row that says "this is temporary — please re-run": a code or media id Instagram refuses outright (it is not one it issues), and an answer that arrives in a shape this actor cannot read yet. Neither changes on a re-run, so that row was selling you a second run for exactly the same answer. Each now has its own uncharged row — source_refused and unsupported_shape — saying what is actually true, what to check, and that a re-run will not change it. A genuine outage still ships as vendor_unavailable, still asks for a re-run, and still carries no result fee. No price, no input and no delivered column changes.
The time a run waits out a quiet source is now sized to what you asked for, instead of being the same five and a half seconds for every run. A link that hit a quiet stretch was retried twice — a short wait, then a longer one — and then reported as unreadable, whether you had asked for three posts on a two-minute run or five hundred on an hour-long one. A big ask on a long run now keeps waiting and asking again, each wait longer than the last, for as long as the posts it is still owed are worth the run time it costs, and that extra patience is a pool the whole run shares so one difficult link cannot use it all. A small ask waits exactly as long as it did before, so nothing gets slower or dearer; no run ever waits less than it used to; and no run waits past your own run-time limit, your result limit or your cost cap, all of which still end the waiting on the spot. A post that still cannot be read carries no result fee and the row still says a re-run is the fix.