← Commit history

pup-bridge-test: 11b extension-lane death scenario (silent worker = dead lane; proof must require a fresh poll and a new hwnd)

John Lauer ·20ac9ce4c9 ·1mo ago ·parent b1d8801
1 file changed +22
dev-skills/pup-bridge-test/SKILL.md+22
@@ -149,6 +149,28 @@ it. Fixed 1.9.172-173: disconnect stamps `_lastUrl`; reclaim skips `_lostBrowser 2-min heal window; recovery falls back to the cached URL. (The `[heal] relaunched OK` lines scroll off a 50-line log read under load — the count-based check is the reliable proof.) +## 11b. Extension-lane death (the overnight case, 2026-09-15)++The CDP lane notices a dead browser through its socket. The extension lane has no socket: the worker's+poll IS its heartbeat, and nothing else. On 2026-09-14 the lane died overnight (worker silent 14 h, no+window on glass) while pup kept listing the session with 20 tabs and reporting the lane as "1 window",+because the remembered pids still looked alive. Four faces of one recovery gap showed in two days: the+"another caller opened this window" guard mis-firing on a relaunch that registered no session, the lane+token not restored at boot, a token-less extension polling into a refusal forever, and this silence.++**Test (2.0.580, proven on AdomLapper):** open one extension-lane window with two tabs, then END the+lane's Chrome out from under pup (Stop-Process on chrome.exe whose command line carries pup-profiles,+NEVER the user's own Chrome), and do nothing but read `pup_status`.+**Expect:** within ~3.5 min the log says `[health] the extension lane has been silent for N s with 0+lane window(s) on glass: it is gone` and the session comes back with BOTH tabs, a fresh worker poll,+and a NEW hwnd. Measured: 193 s to the restore line, both tabs 15 s later.+**The trap in the proof itself:** ten seconds after the kill `pup_status` still said connected (last+poll was just before the kill) and still showed the old hwnd (from the session record). A pass+condition must require a FRESH poll (`lastPollMsAgo` under 20 s) and a handle DIFFERENT from the one+you killed. The first cut of this proof "passed" on stale bookkeeping.+Also run the boot half: with the lane dead and a session file on disk, restart pup and expect+`reopening its other N tab(s)` and `Recovery complete. 1 session(s) active`, never `another caller`.+ ## 12. TORTURE (the "never crash" push, 2026-07-28) The full brutal load, with an INDEPENDENT monitor thread proving pup never goes frozen mid-storm. From thread `pup-monitor`, sample `pup_list_windows` every 3s for the whole run. From thread