# test\(scripts\): keep Windows packaging checks host-portable · PR \#9589 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/9589)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: windows-tests/tar-probe

Target branch: windows-tests/theme-nofollow

Head commit: 0c3eaef92cc9538c0228c83031cf2a6e03895a78

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/9589)

[Commits](https://git.cafe/pingdotgg/t3code/pull/9589/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/9589/diffs?format=markdown)

## Description

---

The Windows payload fixture uses a text placeholder for t3code.exe. On a Windows host, the validator tried to run that placeholder for its primary native-load probe and failed before reaching the archive and self-containment assertions. In the broad lane, the cold pnpm-store dependency scan also exceeded the 60-second root timeout while four filesystem-heavy workspace suites ran concurrently.

Pin only the payload probe’s HostProcessPlatform service to Linux in the three affected cases. Host-native paths, real tar extraction, WSL archive and digest validation, ASAR unpacking, and self-containment checks still execute on Windows. Give the dependency scan a focused 120-second budget without weakening its closure assertions. The browser-secret and macOS signing expectations now accept host-native separators too.

Part of the Windows test-suite stack rooted at [#9564](https://github.com/pingdotgg/t3code/pull/9564); the manual Windows lane comes from [#9538](https://github.com/pingdotgg/t3code/pull/9538).

Originally prepared with Claude Fable 5 in Claude Code; finalized with GPT-5.6 Sol in T3 Code.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> All changes are test-only; production build and packaging code is unchanged.
> 
> **Overview**
> Makes desktop build script tests reliable on Windows CI without weakening what they assert.
> 
> **Windows payload validation:** Three cases that run the primary native-load probe now inject `HostProcessPlatform` as `"linux"` because the fixture’s `t3code.exe` is a text stub that fails when executed on a real Windows host. Tar/archive, ASAR, WSL digest, and self-containment checks still exercise host-native behavior where they don’t depend on that probe.
> 
> **Path portability:** The Linux browser-secret staging test builds the expected `--output` path with Effect’s `Path` service instead of a hardcoded POSIX string. The signed macOS build config test accepts `/` or `\` in the `sign-macos.ts` path.
> 
> **CLI external closure:** The pnpm-store “finds runtime-external packages on disk” test gets a **120s** per-test timeout so a cold filesystem walk doesn’t hit the default limit when the Windows lane runs several heavy suites in parallel.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 0c3eaef92cc9538c0228c83031cf2a6e03895a78. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- Macroscope's pull request summary starts here -->
<!-- Macroscope will only edit the content between these invisible markers, and the markers themselves will not be visible in the GitHub rendered markdown. -->
<!-- If you delete either of the start / end markers from your PR's description, Macroscope will append its summary at the bottom of the description. -->
> [!NOTE]
> ### Make `build-desktop-artifact` and `cli-external-packages` tests host-portable
> - Windows packaging tests now provide `HostProcessPlatform` as Linux so host-native load probes run on non-Windows hosts instead of relying on the real host OS
> - `browser-secret` helper test uses the injected `Path` service to build the expected output path rather than hardcoding slash separators
> - macOS signing-script assertion accepts both `/` and `\` path separators
> - Runtime-external package discovery test in [cli-external-packages.test.ts](https://github.com/pingdotgg/t3code/pull/9589/files#diff-e14208c674bf017b0dd5a81d3191e5f6aec3acf49e51baa8dfe02a04fdc08690) gets a 120-second timeout
> - Risk: none — all changes are test-only and do not alter production behavior
>
> <!-- Macroscope's review summary starts here -->
>
> <sup><a href="https://app.macroscope.com">Macroscope</a> summarized 0c3eaef.</sup>
> <!-- Macroscope's review summary ends here -->
>
<!-- Macroscope's pull request summary ends here -->
