What is red
windows-msvc-cpu and windows-msvc-vulkan fail on every open PR in the repository — not only the LTX-2.5 lane. Sampled: #661, #662, #663 (mine) and #601, #596, #592, #578, #638 (four unrelated lanes). Same failing step, same three lines:
FAILED STEP: Build and execute the native Windows CPU focused gate
ERROR: src/vllm/multimodal/video_engine.cpp:21: unguarded POSIX include/call reaches Windows
ERROR: src/vllm/multimodal/video_engine.cpp:59: unguarded POSIX include/call reaches Windows
ERROR: src/vllm/multimodal/video_engine.cpp:64: unguarded POSIX include/call reaches Windows
main itself is not a denominator here — the Windows jobs are skipped on push runs (48412ae2d, 67e53e716), so the failure is only visible on PRs. That is why it went unnoticed.
Who owns it
Mine. The generalized video seam landed in cefacd2d0 (#435 / #641) and introduced:
src/vllm/multimodal/video_engine.cpp:21 — #include <sys/stat.h>
:59 — ::stat(...) + S_ISDIR(...) in IsDir
:64 — ::stat(...) in Exists
scripts/check-windows-portability.py:1675-1688 flags these under full_source_posix, which applies to every scanned source, not only the REQUIRED_CPP platform-boundary set — so no exemption applies and none should.
The fix
The sibling file in the same lane already does this portably: src/vllm/model_executor/models/minimax_h3_sharded.cpp:80-82 uses std::filesystem::is_directory(NativePath(path), error). std::filesystem is already used across the tree (gguf_reader.cpp, safetensors_reader.cpp, ltx2_video.cpp, minimax_h3_video.cpp, read_only_file_mapping.h). Route IsDir/Exists through it and drop the <sys/stat.h> include.
Two things to preserve, not merely to compile:
NativePath(), because check-windows-portability.py:1689-1693 also forbids lossy .string() path conversion on the platform boundary.
- The
std::error_code overloads — the POSIX version returned false for an unreadable path rather than throwing, and the throwing std::filesystem overloads would change that to an exception.
Scope
src/vllm/multimodal/video_engine.cpp only. This does not touch the checker's semantics — the checker is right and the source is wrong.
Related: #659, #660 (same shape — my landed LTX code reddening other lanes' branches).
What is red
windows-msvc-cpuandwindows-msvc-vulkanfail on every open PR in the repository — not only the LTX-2.5 lane. Sampled: #661, #662, #663 (mine) and #601, #596, #592, #578, #638 (four unrelated lanes). Same failing step, same three lines:mainitself is not a denominator here — the Windows jobs areskippedon push runs (48412ae2d,67e53e716), so the failure is only visible on PRs. That is why it went unnoticed.Who owns it
Mine. The generalized video seam landed in
cefacd2d0(#435 / #641) and introduced:src/vllm/multimodal/video_engine.cpp:21—#include <sys/stat.h>:59—::stat(...)+S_ISDIR(...)inIsDir:64—::stat(...)inExistsscripts/check-windows-portability.py:1675-1688flags these underfull_source_posix, which applies to every scanned source, not only theREQUIRED_CPPplatform-boundary set — so no exemption applies and none should.The fix
The sibling file in the same lane already does this portably:
src/vllm/model_executor/models/minimax_h3_sharded.cpp:80-82usesstd::filesystem::is_directory(NativePath(path), error).std::filesystemis already used across the tree (gguf_reader.cpp,safetensors_reader.cpp,ltx2_video.cpp,minimax_h3_video.cpp,read_only_file_mapping.h). RouteIsDir/Existsthrough it and drop the<sys/stat.h>include.Two things to preserve, not merely to compile:
NativePath(), becausecheck-windows-portability.py:1689-1693also forbids lossy.string()path conversion on the platform boundary.std::error_codeoverloads — the POSIX version returnedfalsefor an unreadable path rather than throwing, and the throwingstd::filesystemoverloads would change that to an exception.Scope
src/vllm/multimodal/video_engine.cpponly. This does not touch the checker's semantics — the checker is right and the source is wrong.Related: #659, #660 (same shape — my landed LTX code reddening other lanes' branches).