After deeper headless probe (manual _popRr inject to force vast mode),
VAST SDK loaded but never showed ad. Direct curl to
/api/users/<vast_spot> returns empty <VAST version="3.0"></VAST> — ASG
no-fill response. Popunder spot at same time returns full creative
config (creative_id 83660 etc). Diagnosis: ASG admin spot config issue
(type wrong / pending / no creative / budget / etc), not our code.
Includes diagnostic curl recipe so future "VAST never shows" can be
distinguished from code bugs in seconds.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Real-browser probe (playwright + Chromium headless) revealed bundle
expects `global_rr:<ts>` and `n:<ts>` fields in asgsl localStorage
to set _popRr / _vastRr cooldowns. New ASG account spot 514208 is
configured with shows_limit:1 without these timestamp fields, so:
- popunder fires every pageload
- _popRr never written → popActive=false always
- mode never transitions to vast → VAST SDK never loads
Resolution requires ASG admin to enable frequency-capping rotation
on the spot (на стороні юзера). Documented detection: check
localStorage.getItem('asgsl') for 'global_rr:' or 'n:' tokens.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DEPLOY: document custom CDN stale-cache gotcha + recovery
Findings from 8148 production debug session 2026-05-02:
1. VAST gotcha — _decide() mode логіка:
mode = popActive ? (vastActive || skipPattern ? "none" : "vast") : "pop"
Тобто VAST loadable ТІЛЬКИ після того як popunder уже спрацював і
_popRr cooldown set. На свіжій сесії: mode завжди "pop" → VAST SDK
never loaded → користувач думає "VAST зламаний". Force test через
?clearAds=1 → pop fires → refresh → mode=vast.
2. CDN stale-cache — custom CDN кешує `?v=<hex-like>` URLs з
s-maxage=31536000 (1 рік). Race у deploy: layout.etlua з новим ?v=
може hit CDN раніше ніж static file → CDN кешує OLD bundle під
NEW ?v= ключем → застрягає назавжди. Workaround: bump source md5,
rebuild, новий ?v= ключ.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>