When escalation is on and the client did not force renderJs / asp / proxyPool:
- local — in-process fetch
- sf_static — paid static
- sf_js — + JS
- sf_asp — + anti-bot
- sf_residential — last resort
Classification stops escalation on usable content, terminal HTTP errors (including unhandled 4xx), or bot walls (401/403/429 → escalate further). Private/loopback hosts never reach paid providers.
Successful tiers are cached per domain (~24h, Redis or memory) so the next request can start mid-ladder.