fix(review): keep missing required CI pending - #3947
Conversation
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - fixes requiredReview updated: 2026-07-07 09:02:50 UTC
🛑 Suggested Action - Manual Review
Review summary Nits — 5 non-blocking
Why this is blocked
CI checks failing
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3947 +/- ##
==========================================
- Coverage 93.66% 93.66% -0.01%
==========================================
Files 372 372
Lines 34856 34860 +4
Branches 12743 12744 +1
==========================================
+ Hits 32649 32652 +3
- Misses 1588 1589 +1
Partials 619 619
🚀 New features to boost your workflow:
|
…trust gittensor:priority propagation required the PR author to be the linked issue's own author or a GitHub assignee of it, with no relaxation -- unlike bug/feature, which already trust a maintainer-authored issue without formal assignment (trustMaintainerAuthoredIssue). But GitHub silently refuses to assign a contributor lacking push/triage access to the repo, and our issues are almost always maintainer-authored for open pickup, rarely formally assigned to a specific person. That combination meant the reward label could structurally never reach the external contributors it exists to reward, no matter how correctly the rest of the propagation pipeline behaved -- confirmed live on metagraphed PR JSONbored#4554 (issue JSONbored#3947 carried both gittensor:bug and gittensor:priority; only bug ever propagated). Adds a new, distinctly-named, opt-in LinkedIssueLabelPropagationMapping flag, trustMaintainerAuthoredIssueForReward, so a repo whose priority label is meant to incentivize open pickup (the maintainer's hand-picking already happened when the issue was labeled, not gated on which contributor later closes it) can extend the SAME maintainer-authored-issue relaxation to its reward mapping, while a repo that wants the strict author-or-assignee bar preserved for its reward label keeps that behavior unchanged by default. Enabled it for gittensor:priority in this repo's own config, matching the enrichment-issue open-pickup policy this label already implements for metagraphed.
…s confirmed (#5482) * fix(review): stop charging a regate-repair attempt before readiness is confirmed regatePullRequest recorded a REGATE_REPAIR_ATTEMPT_EVENT_TYPE audit event as soon as the job cleared GitHub rate-limit admission, before ever calling reReviewStoredPullRequest -- so a PR legitimately still waiting on a missing branch-protection-required check (which prReadyForReview defers unconditionally and indefinitely by design, #3947) got charged a full repair attempt on every ~2-minute sweep tick even though nothing was actually wrong. The fixed 5-attempt cap exhausted in ~10 minutes, an order of magnitude shorter than realistic required-CI latency, firing a false "repair exhausted" alert for a review that was never broken. reReviewStoredPullRequest now returns whether it actually got past prReadyForReview (there is no early return anywhere after that point, so every exit before it returns false and the function's natural end returns true); regatePullRequest only records the repair attempt when that's true. A swallowed (non-retryable) exception past that point still counts as a real executed attempt, same as before -- only the clean "declined before ever reaching readiness" path is now excluded. Fixes GITTENSORY-1E * fix(review): charge the repair attempt even when readiness is reached then throws Gittensory review flagged that regatePullRequest only recorded REGATE_REPAIR_ATTEMPT_EVENT_TYPE after reReviewStoredPullRequest returns, so a retryable error (GitHub rate limit / actuation-lock contention) surfacing from real post-readiness work skipped the charge entirely and could let a stuck repair reselect indefinitely. reReviewStoredPullRequest now exposes an onReachedReadiness callback that fires the instant its own readiness gate passes, before any further throwable work -- a side channel that survives a later throw, unlike the boolean return value. regatePullRequest uses it in a try/catch/finally: the retryable branch still rethrows for the queue's own retry, but the finally block charges the attempt first whenever readiness was genuinely reached, regardless of whether the call returned or threw. This also closes the symmetric gap the review's own nit raised: an error thrown BEFORE readiness (the callback never fires) correctly still does NOT charge the budget.
Motivation
Description
hasMissingRequiredContext, keep the PR deferred instead of falling through to finalization, by recording a defer audit event and returningfalseinprReadyForReview(change insrc/queue/processors.ts).test/unit/queue.test.ts).Testing
npx vitest run test/unit/queue.test.ts -t "missing-required-context", and the two relevant tests passed.git diff --checklocally to validate whitespace/conflict checks before committing the change.Codex Task