ci: guard Windows (smoke job) + fix Windows install (MAX_PATH long paths) - #135
Merged
Merged
Conversation
Salil Das (sadlilas)
force-pushed
the
fix/windows-ci-and-longpaths-install
branch
from
August 19, 2026 13:19
e5a0d72 to
dd662f4
Compare
…ths)
Two Windows durability changes, no runtime code touched.
1. Windows install blocker (docs/INSTALL.md). This repo ships SWE-bench eval
fixtures under .amplifier/evaluation/tasks/swe-bench-pro/instances/
instance_<repo>__<repo>-<40charsha>-v<40charsha>/meta.yaml -- the longest
tracked path is 178 chars. `uv tool install --from git+...` clones the repo
into a deep temp build dir, so those paths exceed Windows' 260-char MAX_PATH
and the git checkout fails with "fatal: cannot create directory ... Filename
too long" BEFORE the build even starts -- the documented install command
fails on native Windows. Documented the one-time fix: `git config --global
core.longpaths true` (+ the OS LongPathsEnabled registry key for OS-level
MAX_PATH).
2. Windows CI leg (.github/workflows/ci.yml). CI ran only on ubuntu-latest via
Makefile targets (make + POSIX shell are not native on Windows), so every
Windows-only regression class was invisible to the gate. Added a
`windows-smoke` job on windows-latest that enables core.longpaths, then
installs (uv sync) and asserts the flagship IMPORTS and its CLI STARTS on
Windows, plus ruff at the Makefile `lint` scope. It does not re-run the make
gates; it guards install-time / import-time / CLI-start failures from
POSIX-only APIs, path/encoding assumptions, and cp1252 defaults -- the class
of bug the Ubuntu gate cannot see.
The job deliberately does not run pyright. On Windows pyright resolves the
stdlib against Windows stubs, where fcntl.flock, signal.SIGKILL and
os.getsid/setsid do not exist, and it does not narrow
`hasattr(module, "attr")` guards. Every POSIX-only call site in this repo is
already guarded and documented -- an ImportError fallback that raises
MigrationUnsupportedError in migration.py, hasattr probes in
serve_lifecycle.py and single_turn.py -- so pyright-on-Windows reports
exactly the code that handles Windows correctly, permanently and with no
fix available short of churning working guards. Type correctness of this
repo's own code is platform-invariant; the Ubuntu gate's `pyright src/`
remains the type gate for both platforms.
Evidence -- MAX_PATH reproduced + fix proven, native Windows (deep base dir):
core.longpaths=false: CLONE_FAILED "fatal: cannot create directory
.amplifier/evaluation/tasks/swe-bench-pro/instances/instance_NodeBB__... :
Filename too long"
core.longpaths=true: CLONE_OK, eval dir present
Evidence -- windows-smoke on a real windows-latest runner: install, import
smoke and CLI smoke all passed. The only red step was pyright, at the eight
guarded POSIX-only sites described above; that step is removed rather than
suppressed at the call sites.
Note: the durable repo-side fix (stop committing 178-char eval-fixture paths,
or relocate/fetch-on-demand) is a maintainer call -- renaming the dirs breaks
the SWE-bench instance-id mapping -- so this change takes the non-invasive path
(enable long paths) and documents it.
🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)
Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Salil Das (sadlilas)
force-pushed
the
fix/windows-ci-and-longpaths-install
branch
from
August 19, 2026 13:31
dd662f4 to
7ea6e09
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two Windows durability changes, no runtime code touched.
1. Windows install blocker (
docs/INSTALL.md)This repo ships SWE-bench eval fixtures under
.amplifier/evaluation/tasks/swe-bench-pro/instances/instance_<repo>__<repo>-<40charsha>-v<40charsha>/meta.yaml— the longest tracked path is 178 chars.uv tool install --from git+...clones the repo into a deep temp build dir, so those paths exceed Windows' 260-char MAX_PATH and the git checkout fails withfatal: cannot create directory ... Filename too longbefore the build even starts — the documented install command fails on native Windows.Documented the one-time fix:
git config --global core.longpaths true(+ the OSLongPathsEnabledregistry key for OS-level MAX_PATH).2. Windows CI leg (
.github/workflows/ci.yml)CI ran only on
ubuntu-latestvia Makefile targets (make+ POSIX shell are not native on Windows), so every Windows-only regression class was invisible to the gate. Added awindows-smokejob onwindows-latestthat enablescore.longpaths, then installs (uv sync) and asserts the flagship imports and its CLI starts on Windows, plus ruff + pyright run natively. It does not re-run the make gates; it guards install-time / import-time / CLI-start failures from POSIX-only APIs, path/encoding assumptions, and cp1252 defaults — the class of bug the Ubuntu gate cannot see, and that a wave of recent Windows fixes (#132, #133, and ecosystem PRs) just addressed.Evidence — MAX_PATH reproduced + fix proven
Native Windows (Python 3.14.3), a deep base dir, direct
git clone:Honest notes / limits
windows-smokejob's own first CI run on this PR validates it executes green on a realwindows-latestrunner — that is the proof gate for the CI change itself (I can't run GitHub Actions from a dev box).