Fix Windows dependency downloads and offline cache selection - #4
Merged
Merged
Conversation
Replace BITS with bounded curl transfers and atomic partial-file promotion. Respect the seeded Zig cache in the offline consumer and cover both fixes in PowerShell 5.1 and 7. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8a98a529-f045-4c43-979c-00bae7640885 Signed-off-by: Colin Neilens <coneilen@microsoft.com>
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.
Summary
Fix the two Windows CI failures observed at the retained GraphCode provider pin without changing terminal/runtime behavior or moving the retention tag.
The target is explicitly coneilen/winghostty, base graphcode-host, as confirmed by the fork owner.
Fixes
curl.exe, supporting GitHub archive responses without Content-Length and chunked responses. Preserve redirects, fail on HTTP errors, bound connection/transfer time, and promote only complete downloads from unique partial files. Failed transfers remove their partial output; optional failures are reported..zig-global-cache. It now uses the same inherited/resolved cache as the seeder, including setup-zig's.zig-cacheselection.Reproductions and evidence
RED: The old downloader reproduced BITS
0x80200011against a loopback response without Content-Length. This matches the tag-triggered failure.RED: After real libxev seeding into
.zig-cache, the old offline consumer reported a missing package in.zig-global-cache, matching the earlier failure at the same pin.GREEN:
test\windows\zig-dependency-download.ps1passes in PS5.1 and PS7 for lengthless/chunked/redirected responses, 404/truncated transfers, optional failures, partial cleanup, and cached-archive reuse. The downloader uses real loopback HTTP; the Zig handoff is isolated for these tests.REGRESSION: All actual Windows dependency archives, including ImGui, seed successfully. The real offline Zig build consumes the seeded CI cache in both PowerShell engines. Same-drive, flagship verification, and normal PS7 source syntax/JSON checks pass locally.
Hosted Test 35284668591 passed attempt 1 at
2aadfe029e6404fe0edd06fa0a4c7d77954cf229:No test threshold or existing job was weakened/skipped to obtain this result.
The PR-triggered hosted reruns also passed at the same head:
Remaining boundaries
The fork currently has no registered self-hosted runners. Its existing same-repository PR trigger requests
Windows 11 Interactive Composite, so that PR-only job cannot run until an owned runner is configured. The passing hosted push run above is not interactive Windows 11 evidence, and this PR does not alter that policy.The protected
graphcode-windows-baseline-2026-09-17tag stays atf5abc059e4ca58b376eb209313aca7784659c679; its historical workflow failures remain historical. GraphCode's provider pin and pinned bootstrap checkout are unchanged. Adoption of a newer provider pin is separate from this CI repair.