The PR check runs lint/typecheck on Windows and Linux and an advisory test
leg there; several tests failed on the Windows runner while staying green on
macOS. Make the suite and lint pass on every platform.
- claude-detect: derive path join + PATH delimiter from the injected
deps.platform (path.posix/path.win32) instead of the ambient host module,
so a linux-pinned test no longer produces back-slashes on Windows. Update
the tests to assert with posix.join / win32.join deterministically.
- session-persistence, artifacts, acp/runtime tests: build expected paths
with join()/resolve() rather than hard-coded POSIX literals, so they match
the host-native separators the production code emits. The source is already
correct per-OS.
- python-executor: shutdown() killed the interpreter but resolved before the
OS reaped it, so on Windows the still-held handles under the temp tree made
cleanup fail with EBUSY (racy — only some tests hit it). It now awaits the
child's exit (bounded by a grace timeout). Give the process-backed tests a
30s timeout for the slow cold spawn on Windows and retry the temp rmdir.
- acp/runtime PDF test: raise the timeout to 30s for headroom on the cold,
slower pdfjs-dist dynamic import on Windows CI.
- Add .gitattributes (eol=lf) so the Windows runner's autocrlf checkout no
longer trips prettier's "Delete ␍" on build/*.cjs.
- Apply the outstanding prettier/prettier fixes flagged across all platforms.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>