fix(pipeline): stop silently truncating aggregated docs on transient GitHub errors#45
Merged
Merged
Conversation
…GitHub errors The docs aggregator fetched each file/directory with one unchecked HTTP request and wrapped the per-source loop in a catch(JsonException) that merely logged and continued. A single transient GitHub response mid-burst (a 5xx page, a truncated body, or a secondary-rate-limit throttle) threw while parsing, got swallowed, and abandoned every remaining file in that section - all with a passing build. This is why aweXpect stopped after "events", Mockolate after "benchmarks", and aweXpect.Json disappeared entirely, without CI ever failing. Route every GitHub request through GetGithubJsonAsync, which: - checks the status code before parsing, - retries transient failures (5xx, 429, 403 secondary-rate-limit, and malformed 2xx bodies) with backoff honouring Retry-After, - returns null only on a genuine 404 so a legitimately absent source or README is still skipped cleanly, - throws on any other non-success status or exhausted retries, so a transient hiccup fails the build loudly instead of deploying a half-empty documentation set.
A listing-level 404 previously logged a warning and skipped the whole slice, silently dropping an entire documentation section. Since every aggregated source is a hardcoded, non-optional slice, a 404 means the configured repo/path is wrong -- fail loudly instead, matching the child-level 404 handling.
vbreuss
force-pushed
the
fix/aggregation-partial-content-silent-failure
branch
from
July 10, 2026 19:39
c3a0292 to
3603889
Compare
vbreuss
enabled auto-merge (squash)
July 10, 2026 19:40
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.
The docs aggregator fetched each file/directory with one unchecked HTTP request and wrapped the per-source loop in a catch(JsonException) that merely logged and continued. A single transient GitHub response mid-burst (a 5xx page, a truncated body, or a secondary-rate-limit throttle) threw while parsing, got swallowed, and abandoned every remaining file in that section - all with a passing build. This is why aweXpect stopped after "events", Mockolate after "benchmarks", and aweXpect.Json disappeared entirely, without CI ever failing.
Route every GitHub request through GetGithubJsonAsync, which: