From the round-1 review of #212 (#176).
Where: scripts/fleet/check_cards.py:171.
Every 4xx is classified GONE, a failure. The docstring's own reasoning is that a 4xx means the page has moved or been deleted, and that "an outage does not look like this". But 429 Too Many Requests and 408 Request Timeout are transient.
Failure scenario: raw.githubusercontent.com or the Pages host rate-limits the shared Actions runner. The nightly prints "GONE CultureMech fetch failed: HTTP Error 429" and advises repointing the SOURCES entry, although the source exists.
Evidence: tested against a local http.server with the real urllib fetch. 429 and 408 both came back GONE; 503 came back unread.
Fix: treat 408, 425 and 429 as unread, like 5xx.
From the round-1 review of #212 (#176).
Where:
scripts/fleet/check_cards.py:171.Every 4xx is classified GONE, a failure. The docstring's own reasoning is that a 4xx means the page has moved or been deleted, and that "an outage does not look like this". But 429 Too Many Requests and 408 Request Timeout are transient.
Failure scenario: raw.githubusercontent.com or the Pages host rate-limits the shared Actions runner. The nightly prints "GONE CultureMech fetch failed: HTTP Error 429" and advises repointing the SOURCES entry, although the source exists.
Evidence: tested against a local http.server with the real urllib fetch. 429 and 408 both came back GONE; 503 came back unread.
Fix: treat 408, 425 and 429 as unread, like 5xx.