Files
Edward Cheng-I Wu 640d8384f9 fix(hooks): #545 launcher watchdog pipe stall + flaky test margins (#565)
Two-layer root cause behind the rotating launcher-test failures:

1) Production: on timeout-less hosts (stock macOS) the watchdog subshell
   and its sleep inherited the caller's $(...) capture pipe; after the
   parent killed the subshell the orphaned sleep held the write end, so
   every healthy probe/guard run blocked for the full bound (~2x bound
   per PreToolUse call, measured 6.1s at the default). Redirect the
   watchdog to /dev/null — healthy watchdog path drops to ~0.15s,
   decisions unchanged.

2) Tests: the harness pinned ARS_PROBE_BOUND=1 for every test, so under
   machine load real interpreter+guard runs overran the bound and the
   launcher's designed pass-through degradation read as deny-test
   failures. Default is now a generous 30 (only the hanging-candidate
   tests wait a bound out; they override to 5), and a new
   LauncherSlowInterpreterTest pins the regression.

Suite: 21 tests / 70-80s -> 22 tests / ~23s, green under 8-way CPU load.

Closes #545


Claude-Session: https://claude.ai/code/session_01EA3EvegVqKrkM62u7k9PHF

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 06:46:17 +08:00
..