The "don't cry wolf" rule is the part I would keep even if I dropped the rest. A checker that logs every 403 as a broken link gets ignored in a week. Separating bot-blocked hosts from links that failed on several runs is a useful distinction, and the one-request-per-second plus Retry-After habit is kind to the sites being checked. One addition I would consider later: treat a sudden batch of failures on the same host as a short outage, not a list of dead posts, so one downtime window does not fill the weekly report.