Repository navigation
Release v1.9.1: fix guard-release pagination - #62
Merged
Merged
Conversation
Both gh api calls in guard-release.yml ran un-paginated. The REST API returns 30 items per page, so with 90 tags and only the newest 30 releases visible the guard flagged the 60 older tags as missing a release object. Every release from v1.6.9 through v1.9.0 failed the gate on phantom findings; all 90 tags in fact had releases. A permanently-red gate reports nothing, so the one real failure it exists to catch — a bare `git tag` push that skips tag_release.sh — would have been invisible in the noise. Added --paginate to both calls: /releases so the comparison set is complete, and git/refs/tags so the tag list does not silently truncate past its own page cap later (a false negative is the worse failure mode for an integrity gate). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.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
guard-releasehas failed on every release from v1.9.0 back to v1.6.9, reporting 60 tags as having no GitHub Release object. All 90 tags have one. The guard's own query was the bug.Both
gh apicalls ran un-paginated, and the REST API returns 30 items per page:git/refs/tags(returns all today)/releasesun-paginated — what the guard compared againstcommof the full lists)The 30 visible releases go back only to v1.3.1, which is exactly where the flagged range started (v0.8.2 … v1.2.3). 90 − 30 = 60.
Why it matters
A permanently-red gate reports nothing. The one real failure this guard exists to catch — a bare
git tag+ push that skipsscripts/tag_release.sh, leaving/releasessilently behind the code — would have been indistinguishable from the standing noise. That is the exact failure mode CLAUDE.md cites as the reason the guard was written.Fix
--paginateon both calls:/releases— so the comparison set is complete. This is the actual bug.git/refs/tags— not currently truncating (it returns all 90), but it will once the repo passes its own page cap, and a truncated tag list means the guard silently stops checking the newest tags. A false negative is the worse failure for an integrity gate, so it gets the same treatment rather than waiting for it to bite.Verification
Reproduced against the live repo before and after:
The guard only runs on tag push, so this fix gets exercised for real by the
v1.9.1tag itself — it should go green for the first time in six releases.Not doing
No backfill. There is nothing to backfill; all 60
gh release createcalls would have failed withalready_exists.🤖 Generated with Claude Code