Repository navigation
Retry transient GitHub reads before failing a Pass - #792
Merged
Merged
Conversation
macOS wc -l pads its count, which the fake gh copied into the final failure cause. Format the attempt with shell arithmetic so the diagnostic stays exact across platforms without changing any retry or timing assertions.
Merged
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
Retries cover issue, PR, label, paginated, and private record reads. Each retry produces a progress/Command log line. Ordinary interruption cancels backoff; completion operations retain their existing interruption policy. Private record diagnostics remain redacted.
Closes #786
Evidence
cargo test --bin thirdshift github::execution_tests::a_transient_issue_read_recovers_without_exposing_the_failure -- --exactfailed on the first HTTP 504.After: the retained regression passes; transient transport errors recover across read operations.
cargo test --bin thirdshift github::execution_tests::a_transient_private_security_issue_listing_recovers -- --exact --nocapture, failed on a Security Pass issue listing. The related private-read regression also failed before its fix.After: both retained regressions pass. Read recovery issues the following mutation once, with private diagnostics redacted.
RATE_LIMIT_EXCEEDED, and the classifier rejected a GraphQL secondary-limit HTTP 429 as quota exhaustion.After: the retained quota and classifier cases pass: primary quota errors stop immediately, while secondary-limit 429s remain transient. Request-count diagnostics also normalize padded
wcoutput.cargo check,cargo fmt --check,cargo clippy --all-targets -- -D warnings, and the fullcargo testsuite (1,954 passed, 0 failed, 2 ignored across 49 test binaries).partial_stdout_is_reported_after_log_failure_with_a_blocked_prompttest. It then passed four isolated runs, the complete session execution group, and the successful full rerun above. No session code changed.Tested seams
gh, including private record operations.thirdshift architectthrough fake GitHub and Resend, observing command results, Run notifications, and Command logs.Review coverage
The refreshed independent review against
mainfound one optional Standards P3 suggestion, declined below, and zero Spec findings. The earlier published Spec P2 finding was reproduced and fixed; its private-read regressions remain. Both reviewers read every changed file:src/github.rssrc/github/advisories.rssrc/github/check_read.rssrc/github/execution_tests.rstests/architect_run.rstests/fakes/gh.rsUnread changed files: none on either axis. Generated-output exclusions: none.
Unaddressed findings
Standards
private_status: Noneatsrc/github.rs:767, while private reads useSome(output.status).ReadFailure::fmtenforces status-only private diagnostics, following ADR 0015. Keeping that choice local avoids a privacy-mode parameter in shared execution; retry/classification policy is already shared.Spec
None.
Security
None. Single-session guidance-mode source review covered all six changed files in
git diff 69ccac42ac98a454df8984ea7f9b329ad0e29d07...HEADat8bd23bad702b98eba95bdb088102718437fe36a6, plus supporting GitHub execution, CI, cancellation, logging, and private-record callers. Reviewed injection, disclosure, mutation replay, and retry amplification using the attack-class guidance and ADRs 0013 and 0015. No proof-of-concept candidate or source fix; tests were not rerun in this Security review.Security review outcome
No unaddressed introduced findings.
Merge Danger
Door: two-way
Revert restores the previous read behavior; no stored-data migration.
Blast Radius: GitHub
Transient read failures can add up to three seconds of backoff per observation. Mutations remain single-attempt, and CI keeps its existing observation budget.
Built with codex · gpt-6.1-sol · high