How long a crash relaunch may take before the daemon declares itself unrecoverable.
Browser.launch had no bound, and it runs BEFORE handleRun installs the interceptors that
forward daemon output to the client — so a launch that never returns produced the exact shape
CI kept hitting: a client with an empty stdout, a daemon log ending at listening, and a
harness SIGTERM 150s later with nothing to diagnose. Bounded, the same situation reaches the
client as browser recovery failed in seconds.
Chosen well above a real launch (single-digit seconds, even on a loaded runner) and well below
both the 180s GROUP_TIMEOUT_MS and the client's silence budget, so the daemon always reports
first.
import * as Server from './server.ts'; Server.BROWSER_RELAUNCH_TIMEOUT_MS < 180_000; // true — the daemon reports before the deadline