Summary
make preflight cannot complete on native Windows because test_run_checks.py assumes the path passed through Bash has the same string representation as Python's Win32 temporary path.
Reproduction
- Run the local manifest preflight on Windows.
- Ensure the subprocess uses Git Bash (the bare
bash executable otherwise resolves to C:\Windows\System32\bash.exe/WSL before PATH entries under Windows CreateProcess).
RunnerBehaviorTests.test_release_process_guard_uses_locked_pyyaml_in_every_declared_lane reaches its final assertion and fails:
/tmp/tmpXXXX/.github/scripts/check-release-process-guards.py
!=
C:\Users\...\AppData\Local\Temp\tmpXXXX\.github\scripts\check-release-process-guards.py
The command itself succeeds; only the raw path-string comparison at .github/scripts/test_run_checks.py:435 fails. This stops check-manifest-contract, the first always-selected preflight check, so later checks never run.
Expected
The contract test should compare the same logical path across MSYS and Win32 representations (or capture a platform-neutral argument identity), and Windows subprocesses should resolve the intended Git Bash explicitly rather than relying on bare-name executable search.
Evidence
Observed while validating #10823 on Windows 11 with Python 3.11.15 and Git Bash 5.2.15. The other 29 test_run_checks.py cases and all 13 remaining checks selected for that diff passed.
Summary
make preflightcannot complete on native Windows becausetest_run_checks.pyassumes the path passed through Bash has the same string representation as Python's Win32 temporary path.Reproduction
bashexecutable otherwise resolves toC:\Windows\System32\bash.exe/WSL before PATH entries under WindowsCreateProcess).RunnerBehaviorTests.test_release_process_guard_uses_locked_pyyaml_in_every_declared_lanereaches its final assertion and fails:The command itself succeeds; only the raw path-string comparison at
.github/scripts/test_run_checks.py:435fails. This stopscheck-manifest-contract, the first always-selected preflight check, so later checks never run.Expected
The contract test should compare the same logical path across MSYS and Win32 representations (or capture a platform-neutral argument identity), and Windows subprocesses should resolve the intended Git Bash explicitly rather than relying on bare-name executable search.
Evidence
Observed while validating #10823 on Windows 11 with Python 3.11.15 and Git Bash 5.2.15. The other 29
test_run_checks.pycases and all 13 remaining checks selected for that diff passed.