Thanks! Small correction that actually helps your economics point: it's 10 sats per pull, not per layer. The macaroon is realm-scoped (blossom-read), so one payment covers the manifest, config and every layer for a ~10 min window. Scraping still costs 10 sats per fresh image, which is your point.
On expiry: the invoice gets paid up front in a couple of seconds, before any layer download starts, so a slow layer never races it. After that, each blob request is authorized by the macaroon (checked at request start), so an in-flight download isn't cut mid-stream.
The one edge case is a whole pull running past the window. The next layer just gets a fresh 402 and payblob pays again and continues, so worst case is a second settlement on a very large pull, not a failure. The window is configurable, so you size it to cover a normal image comfortably