The Desktop/dashboard free-tier (guest promotion) sign-in caught the expired
device code in run_sign_in and dropped the ConnectionError cause the poll loop
sets when the token endpoint kept failing, so a 503 for the whole code
lifetime still recorded abandoned/none. It now yields Failed(anon_unreachable)
(failed/network; the Desktop shows its "couldn't reach the service" screen);
a code left pending until expiry stays TimedOut/abandoned.
A Codex 408/429/5xx at user-code fetch or token exchange now raises a
network-class error instead of RuntimeError (failed/other).