fix(queue): prevent regate repair exhaustion from premature attempt counting#3998
Merged
Conversation
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Contributor
|
Gittensory is closing this pull request on the maintainer's behalf (CI is failing (validate, validate-code); No linked issue detected). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
This was referenced Jul 7, 2026
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
…ck (#4023) PR #3998 shipped a garbled hunk in sweepRepoRegate's job-dispatch block and regatePullRequest's signature/body -- an object literal spliced with a dangling recordAuditEvent's fields, no closing brace or JOBS.send call, and a required parameter (repoFullName) following an optional one (repairHeadSha). Reconstructed both regions from the parent commit plus the PR's stated intent: move the repair-attempt audit event from dispatch-time to execution-time (after rate-limit admission), so a deferred/dropped job no longer burns an attempt against REGATE_REPAIR_MAX_ATTEMPTS_PER_SHA. Also fixed a duplicate declaration of that same constant (value 5 shadowing the original 2, introduced by the same bad hunk) and an invalid "started" outcome literal that isn't part of the audit-event outcome enum.
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
… records #3998 moved repair_attempt recording from dispatch time to execution time (inside regatePullRequest, after rate-limit admission) so a deferred or dropped fan-out no longer counts against the repair-attempt cap. This test only asserted on what the sweep dispatched, never ran the fanned per-PR job, so the attempt was never recorded.
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
… records #3998 moved repair_attempt recording from dispatch time to execution time (inside regatePullRequest, after rate-limit admission) so a deferred or dropped fan-out no longer counts against the repair-attempt cap. This test only asserted on what the sweep dispatched, never ran the fanned per-PR job, so the attempt was never recorded.
This was referenced Jul 7, 2026
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
) #4023 fixed the syntax corruption #3998's own patch introduced and moved repair_attempt recording to execution time, but left REGATE_REPAIR_MAX_ATTEMPTS_PER_SHA at 2 -- #3998's stated intent was to raise it to 5 for resilience against transient failures (a single AI provider timeout no longer exhausts the budget). Bumps the constant and updates both orb-retry-storm regression tests' attempt counts to match; one of them was also still asserting the pre-#3998 dispatch-time recording behavior, never executing the fanned per-PR job.
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
This PR addresses the premature triggering of the
regate_repair_exhaustederror. Previously, repair attempts were counted at job dispatch time, not at execution time. This meant thatagent-regate-prjobs, if deferred due to GitHub rate limiting or high installation concurrency, would still consume an attempt budget without any actual repair work being performed. With a cap of only 2 attempts, this led to PRs being abandoned from priority repair too easily.This fix resolves the issue by:
REGATE_REPAIR_ATTEMPT_EVENT_TYPEaudit event recording from the sweep dispatcher (fanOutAgentRegateSweepJobs) to inside theregatePullRequestfunction.agent-regate-prjob payload now includesrepairHeadShato facilitate this, ensuring attempts are only counted after the job successfully passes rate-limit admission and begins execution.REGATE_REPAIR_MAX_ATTEMPTS_PER_SHAfrom 2 to 5. This provides more resilience against genuine transient failures (e.g., a single AI provider timeout) without letting a truly broken PR spin indefinitely.Suggested PR title:
fix(regate): prevent premature repair exhaustionScope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally;codecov/patchrequires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateIf any required check was skipped, explain why:
Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. SVG screenshots are not used as review evidence. Review-only screenshots or recordings are not committed to the repository.UI Evidence
Required for visible UI, frontend, docs, or extension changes. Attach GitHub-hosted JPG/JPEG or PNG screenshots here; SVG screenshots are not accepted as review evidence. Use a compact table/grid of clickable thumbnails with a short state/title such as "Loaded state", "Empty state", "Error state", "Mobile layout", or "PR sidebar". Prefer annotated screenshots with a colored box, outline, arrow, or highlighter showing what changed. Recordings can be supplemental, but screenshots are still expected for visual review. Do not commit review-only screenshots, recordings, or
docs/review-evidence/**files.<a href="FULL_URL.png"><img src="FULL_URL.png" alt="Loaded state" width="240"></a>Notes
Fixes GITTENSORY-1E