Soften sheriff stale classification#360
Conversation
Deploying impeccable with
|
| Latest commit: |
a8ad2cf
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://236145c1.impeccable-2rv.pages.dev |
| Branch Preview URL: | https://codex-sheriff-blocked-not-wa.impeccable-2rv.pages.dev |
There was a problem hiding this comment.
Pull request overview
Adjusts the GitHub “sheriff” PR triage logic to be less aggressive about staleness by separating “factual blockers” (CI failures, merge conflicts) from “contributor-action blockers”, so stalled PR automation only applies when a contributor is actually expected to respond.
Changes:
- Stop treating failing CI and merge conflicts as contributor-action blockers (so they don’t start the
waiting on contributorstale clock). - Only treat
waiting on contributoras a manual wait signal when the label was applied by a maintainer. - Update stale warning text and extend regression tests for the softened behavior.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| tests/github-sheriff.test.mjs | Updates and adds regression tests for the new blocker/stale classification behavior. |
| scripts/github/sheriff.mjs | Refactors blocker classification, changes the waiting on contributor label provenance logic, and updates stale warning copy. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| function latestMaintainerLabelEventAt(events, label, type, maintainers) { | ||
| return latestDate(events | ||
| .filter((event) => event.type === type && event.label === label) | ||
| .filter((event) => maintainers.has(normalizeLogin(event.actorLogin))) | ||
| .map((event) => event.createdAt)); | ||
| } |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a8ad2cf. Configure here.
| ); | ||
| if (labels.has('waiting on contributor') && waitingLabelAt && !isAfter(latestContributorAt, waitingLabelAt)) { | ||
| blockers.push({ kind: 'manual-waiting', at: waitingLabelAt }); | ||
| addContributorBlocker({ kind: 'manual-waiting', at: waitingLabelAt }); |
There was a problem hiding this comment.
Hydration skips maintainer label backfill
Medium Severity
Evaluation now treats waiting on contributor as a contributor blocker only when a maintainer LabeledEvent exists, but hydrateMissingWaitingLabelEvents still skips issue-event backfill whenever any labeled event is present—including sheriff bot events. A maintainer-applied wait can be cleared incorrectly when the GraphQL timeline only captured bot labeling.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit a8ad2cf. Configure here.
New upstream features: OpenAI plugin submission bundle (pbakaus#363), init flow captures positioning/conversion/proof context (pbakaus#315), Node 22 CLI install fix (pbakaus#361), sheriff stale-classification softening (pbakaus#360), docs UI polish (pbakaus#358), mechanical pre-scan for typeset/layout (pbakaus#345), native-project routing for audit/adapt (pbakaus#357) Security findings: 0 secrets, 0 dependency CVEs, 0 Semgrep findings; mcps-audit 1360 findings all reviewed as heuristic false positives (execSync/delete/join JS idioms); skill-audit all 65 files LOW/MEDIUM, no HIGH/CRITICAL Security fixes: none required this cycle


Summary
waiting on contributorstale clock by themselves.waiting on contributorlabels as manual wait signals, so sheriff-applied labels can be cleared when rules change.Validation
node --test tests/github-sheriff.test.mjsnode --check scripts/github/sheriff.mjsnode --test tests/test-suites.test.mjsgit diff --checkbun run test:corepbakaus/impeccable: PR Add native Cursor plugin via canonical harness paths #319 now plansadd=blocked: ci,needs maintainer review remove=stale,waiting on contributor.Note
Medium Risk
Changes automated PR labeling, stale warnings, and auto-close eligibility for open PRs; behavior is limited to the sheriff script but affects contributor-facing lifecycle.
Overview
The GitHub sheriff now distinguishes factual blockers (failing CI, merge conflicts) from contributor-action blockers (draft, review feedback, maintainer wait). CI and merge-conflict issues still get
blocked:*labels andneeds maintainer review, but they no longer setcontributorActionRequired, so they do not addwaiting on contributor, start the stale clock, or trigger warn/close.Manual
waiting on contributoronly counts when a maintainer applied the label (latestMaintainerLabelEventAt), so sheriff- or bot-applied labels can be cleared when rules change. Stale warning text no longer asks contributors to fix CI or merge conflicts. Tests cover failing CI and conflict-only PRs (including stripping stale/waiting labels from bot-labeled PRs).Reviewed by Cursor Bugbot for commit a8ad2cf. Bugbot is set up for automated code reviews on this repo. Configure here.