fix: handle rate limits, empty repos, and truncated trees#28
Merged
packet-mover merged 1 commit intomainfrom Apr 12, 2026
Merged
fix: handle rate limits, empty repos, and truncated trees#28packet-mover merged 1 commit intomainfrom
packet-mover merged 1 commit intomainfrom
Conversation
- Add isRateLimitError() helper checked in all GitHub client methods to prevent rate limit 403s from being silently swallowed - Return ErrEmptyRepo on 409 (empty repo) and ErrTruncatedTree when GitHub truncates the tree response - Skip affected repos instead of aborting the entire scan - Add skipped repos section to the compliance report - Skipped repos excluded from compliance stats Fixes three known bugs: rate limit errors masquerading as "no protection," empty repos crashing the scan, and truncated trees producing silent false negatives.
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
isRateLimitError()helper that checks for*github.RateLimitErrorand*github.AbuseRateLimitError, called in all 5 client methods to prevent rate limit 403s from being silently swallowed as "no protection"GetTreenow returnsErrEmptyRepoon 409 (empty repo) andErrTruncatedTreewhen GitHub setstruncated: trueScancatches per-repo errors and marks repos as skipped instead of aborting the entire scan. Rate limit errors still abort.TreeErrsmap for per-repo tree errors in testsFixes three known bugs where the scanner either crashed or silently produced wrong results due to rate limits, empty repos, and truncated trees.
Test plan
go test ./...- all 72 tests pass