The windows-free-tests curated set is derived (POSIX-fragility regex scan
+ explicit deny list), and two of this wave's Windows regression files
were auto-excluded on false-positive pattern hits:
- browse/test/file-permissions.test.ts tripped the POSIX-mode-bitmask
pattern, but every `mode & 0o777` assertion is platform-guarded — and
the file carries the win32-only icacls-by-SID regression tests, which
can only ever execute on windows-latest.
- browse/test/terminal-agent-owner-watchdog.test.ts tripped the
spawn(['bun','run',...]) pattern whose reason is the Playwright-bound
browse server; it actually spawns terminal-agent.ts (fs/path/crypto +
local helpers only, no Playwright at module scope), and the owner-PID
orphan leak it pins was reported on Windows (#2019).
Adds a KNOWN_WINDOWS_SAFE force-include list (mirror of
KNOWN_WINDOWS_INCOMPATIBLE, each entry carrying its false-positive
rationale) consulted before the pattern scan, and makes the
owner-watchdog test's throwaway owner process Windows-portable
(process.execPath instead of `sleep`, which a bare runner may not have).
The wave's other new files need no wiring: process-liveness-windows and
the bun-polyfill windowsHide/exited tests pass curation automatically;
setup-runtime-lib-command self-skips on win32 by design (its Windows
branch is exercised by simulating IS_WINDOWS=1 under bash), so
force-including it would add a permanently-skipped file.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>