Repository navigation
Cache vexctl on every OS so release 504s can't fail coverage - #2039
Conversation
The required coverage job and the Windows test legs download vexctl from a github.com release on every run. On 2026-11-09 those downloads returned 504 for minutes at a time (05:43 and 06:11 UTC), longer than curl's ~30s of retries. That failed coverage (2) on PR #2018 and test (windows-latest, 1) on the nightly; in the merge queue it would evict the entry. Restore the binary from the actions cache on every OS, as macOS already does, and download only on a miss. The restored file is still checked against the pinned sha256. Saves stay main-only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011f9aeQtKqZexk5DRhSS2Gg
|
bugbot run Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 7fb1fa5. Configure here.
|
Ready for review at
Generated by Claude Code |
Final review briefWhat it does. The vexctl binary that the Risk: low. Only Look here
Verified
Changes I made: none. Open questions: none. Note that PR runs keep downloading until the first push to main after merge fills the Linux and Windows cache keys. Auto-merge is armed, so approving sends this straight to the merge queue. Generated by Claude Code |
Problem
coverage(a required check behindci-ok) and thetest (windows-latest, *)legs download vexctl fromgithub.com/openvex/vexctl/releases/download/...on every run, with no cache. Only macOS restored it from the actions cache.On 2026-11-09, github.com release downloads returned 504 for minutes at a time. curl's
--retry 5gives up after about 31s, which is too short to ride that out:coverage (2)failed at Install vexctltest (windows-latest, 1)failed at Install vexctl after 6×curl: (22) ... 504. The same outage failed Setup Ruby (3 jobs) and theinstall.shsmoke step.The merge queue was empty during these windows. Had a merge_group run been in flight, a
coveragefailure would have evicted its entry and cost a full rebuild.Root cause
A required job has a hard dependency on a third-party release CDN for a binary that never changes (pinned version, pinned sha256).
Fix
test: the existing vexctl cache restore/save (macOS-only) now runs on every OS. Linux and Windows download only on a cache miss. The cache key and path are unchanged:vexctl-<ver>-go<go>-<os>-<arch>.coverage: adds the same restore → install → save steps (keyvexctl-<ver>-Linux-X64-coverage). Shard 1 saves, from main only.sha256sum -ccheck, so a cache hit can't substitute a different binary.continue-on-errorwith a 5-minute cap, so a cache outage falls back to the download.No test moved or was removed. Required check names are unchanged.
Proof
python3 -B -m unittest discover -s scripts/tests: 411 tests OKzizmor --offlineandactionlintfindings onci.ymlare identical to origin/main (no new findings).https://claude.ai/code/session_011f9aeQtKqZexk5DRhSS2Gg
Generated by Claude Code