From 969eb60df1ba60484d1a87ece5eda0ede83b7c3a Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Thu, 11 Jun 2026 05:53:44 +0000 Subject: [PATCH] =?UTF-8?q?watchdog:=20probe-resumed=20tick=20returns=20Tr?= =?UTF-8?q?ue=20=E2=80=94=20don't=20evaluate=20stale=20pane=20after=20resu?= =?UTF-8?q?me?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tick whose probe resumed a session was continuing into stall logic with its pre-resume pane capture; a 4h-old WAITING-UNTIL in that stale data got the freshly-resumed adversary kill+rebooted (05:52). Treat probe-resume as handled-this-tick; the next 30s tick sees the live session. --- cc-ci-plan/launch.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cc-ci-plan/launch.py b/cc-ci-plan/launch.py index b47ed13..61b4a73 100644 --- a/cc-ci-plan/launch.py +++ b/cc-ci-plan/launch.py @@ -436,7 +436,11 @@ def limit_tick(role, session, pane): if ACTIVE_RE.search(pane2) and not LIMIT_RE.search(pane2): log(f"limit lifted on {role} ({session}) — probe resumed it") _clear_limit_state(session) - return False + # Return True ("handled this tick") so the caller does NOT continue evaluating + # its pre-resume pane capture — that stale data held an old WAITING-UNTIL and + # got a freshly-resumed session rebooted (2026-06-11 05:52). Next tick sees the + # live session normally. + return True until, _ = _next_limit_until(pane2, now) if nudges == 3: log(f"WARNING: {role} ({session}) still limited after {nudges} probes — "