Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
EMEX egress was DataImpulse-first: fetchEmexHtml tried 3 dead-prone DataImpulse ports before falling to the Floxy fallback, and the browser scraper launched on a random DataImpulse port. With ~50% of DataImpulse ports dead, this burned the 25s decode budget before reaching Floxy (observed: a Ford VIN where pcat correctly returned null fast, then EMEX's DataImpulse retries ate the budget). ssd tokens are replayed from emex's own HTML and are NOT strictly IP-bound on the .aspx endpoints (the prior random-port-per-call primary proved that), so a sticky Floxy IP across the flow is strictly safer. - EMEX_PROXY_PROVIDER (default "floxy" | "dataimpulse" | "none"). floxy → fetchEmexHtml schedule = [floxy, floxy, dataimpulse] (Floxy sticky primary, rolls IP on transport failure, single DataImpulse last-ditch). dataimpulse → legacy [di,di,di,floxy,floxy]. Default HTTP agent (image-dims) follows provider. - EmexBrowserService launches chromium on a sticky Floxy session (one residential exit IP for the browser lifetime; fresh id per relaunch) under the same flag. - Reuses the existing EMEX_FLOXY_* config (same Floxy account pcat now uses). Rollback: EMEX_PROXY_PROVIDER=dataimpulse. typecheck+biome+11 emex tests green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>