ci(windows): take the package feed off the Windows legs entirely (#824) - #844
Open
fujibee wants to merge 1 commit into
Open
ci(windows): take the package feed off the Windows legs entirely (#824)#844fujibee wants to merge 1 commit into
fujibee wants to merge 1 commit into
Conversation
#827 made a chocolatey outage legible -- retry, cache, and a presence check that is the only step allowed to be red about it. This removes the cause. The issue's own Directions ranked the retry last, "the cheapest change and the least durable", and that was right: on a cache miss the leg still needed community.chocolatey.org. What changed since is the weight. `bats` is a required check on `main` with enforce_admins true, so a red Windows leg now blocks every landing in the repository, and nobody can wave it through. sqlite3 now comes from one pinned sqlite.org URL, verified by hash: https://sqlite.org/2026/sqlite-tools-win-x64-3530400.zip sha256 f46ee2475de4cbe287e6e5f7d43c838796b14e7379cd216bdbb28d391429f9fc 6,557,792 bytes, contains sqlite3.exe All four measured by fetching it, not read off a page: the URL answered 200, the digest is of those bytes, and the archive was listed to confirm the binary is in it. What is gone is the FEED, not the third party -- sqlite.org is still somebody else's host. What it is not is a package index: no resolver, no two-phase lookup, and nothing that answers 503 for one concurrent job while serving another, which is the behaviour that made the original failure unreadable. The hash is load-bearing. Without it this would trade a feed that answers errors for a host that could answer anything, and the tests would run against whatever arrived. Kept from #827, deliberately: the presence check. Whatever supplies sqlite3, the step that decides the leg's colour must be the one that says the dependency is missing, not the one that runs the tests. Also corrects a comment #827 left behind, which still said a bump means "one trip to chocolatey, which is the only time the community feed is asked at all". There is no feed to ask. Not measured: whether the GitHub Windows image already ships sqlite3. It is absent from the Windows 2022 and 2025 image manifests, which is the published list rather than a `where sqlite3` on a live runner.
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.
Declared reviewers: 1
Closes #824.
CI only. No change to anything shipped — the diff is one file,
.github/workflows/tests.yml, and it touches only the Windows bats legs' setup steps. Nothing a user installs or runs is different.#827 made a chocolatey outage legible. This removes the cause.
Why now, when #827 just landed
The issue's own Directions ranked the retry last — "the cheapest change and the least durable" — and that was right: on a cache miss the leg still needed
community.chocolatey.org.What changed is the weight.
batsis a required check onmainwithenforce_admins: true, so a red Windows leg blocks every landing in the repository and nobody can wave it through. "The leg is red but it's just the feed" stopped being an annoyance and became a stop.The replacement, measured rather than looked up
All four come from fetching it: the URL answered, the digest is of those bytes, and the archive was listed to confirm the binary is inside. The four pins in
env:reconcile against that one artifact —YEAR+BUILDbuild the URL,SHA256is its digest,VERSIONkeys the cache.What is gone is the feed, not the third party. sqlite.org is still somebody else's host. What it is not is a package index: no resolver, no two-phase lookup, and nothing that answers 503 for one concurrent job while serving another — which is precisely the behaviour that made the original failure unreadable. On 2026-08-15 the same outage reddened
Install sqlite3on one branch andRun testson another, depending on which phase chocolatey happened to fail in.The hash is load-bearing. Without it this trades a feed that answers errors for a host that could answer anything, and the tests would run against whatever arrived. A mismatch fails the download step by name.
Kept from #827
The presence check, deliberately. Whatever supplies
sqlite3, the step that decides the leg's colour must be the one that says the dependency is missing — not the one that runs the tests. That is the part of #827 that survives a change of supplier, and it is why this PR is small.The retry survives too, at one attempt-triple: a single host can still have a bad second. It is no longer a package index having a bad phase.
Also corrected
A comment #827 left behind said a version bump means "one trip to chocolatey, which is the only time the community feed is asked at all". There is no feed to ask. The env block now says what the four pins are and that bumping a release means changing all four together — a stale
SHA256fails loudly, which is the intended way to discover one was missed.Not measured
where sqlite3on a live runner. If it turned out to be there, this whole block could go.sqliteorgrather thanchoco), so the first run on this branch is a miss by construction.