if the alert goes out after the commit, a lost mail leaves the baseline already moved. so promoting pending_body only after a second matching fetch keeps things recoverable. urlopen raises httperror on 403 and 429 before the price check is reached, so catching urlerror with a timeout and logging the failure makes the cron behavior more transparent. the marker can also let a challenge page through occasionally, and it misses yen, rupee, rsd, usd and spaced forms like 49 euro which matters if you watch non english pages.