CI / build-and-test (push) Canceled after 0s
Probe live depuis le conteneur : rumble.com renvoie 404 (vraie page, non-challenge) pour un id inexistant. fetchHtml les classait en échec total, d'où deux régressions : 503 sur /video (les vidéos mortes ne sont plus retirées des Shorts) et armement du cooldown 60 s pour toute la maison au premier id bogus. - fetchHtml retourne toute réponse nette non-challenge ; le statut est jugé par les appelants (tous dans le même fichier). - rumbleFailureForStatus() exporté : 403 -> 503 rumble_cloudflare_challenge (bandeau identique à la recherche), 404/410 -> 404 rumble_not_found, 5xx -> 503 rumble_upstream_error. /video, /browse et /shorts passent par ce mapping. - handler.search ne parse plus que du HTTP 200 : les pages 404 de Rumble embarquent des cartes de recommandation qui seraient autrement prises pour des résultats de recherche. - Tests : 7 assertions sur le mapping (sans réseau), 64 au total.