ci(workflows): add stale issue and PR management workflow#83
Merged
snowrugar-beep merged 1 commit intoJun 23, 2026
Conversation
Contributor
|
Nice work @BigJohn-dev! 🎉 The stale workflow looks well-thought-out — 60-day window, sensible exemptions ( |
2 tasks
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.
Closes #35
Description
.github/workflows/stale.ymlusingactions/stale@v9.1.0to automatically manage inactive issues and pull requests.staleand warned via comment; if they stay inactive for 14 more days they are closed with a closing comment. Any activity clears thestalelabel and resets the clock.cron: "30 1 * * *", 01:30 UTC) and supports manualworkflow_dispatchfor on-demand sweeps.pinned,security, orepicfrom being marked stale or closed.issues: write,pull-requests: write,contents: read.Acceptance criteria coverage
cron: "30 1 * * *"+workflow_dispatchdays-before-stale: 60days-before-close: 14stalestale-issue-label/stale-pr-label: stalestale-*-message(at 60d) +close-*-message(at close)pinned,security,epicexempt-issue-labels/exempt-pr-labelssecurityincluded in exempt listsChecklist
yaml.safe_load)Security
This change is security-relevant in a positive way:
securityis included inexempt-issue-labelsandexempt-pr-labels, so security reports are never auto-marked stale or auto-closed, preserving coordinated-disclosure timelines. The workflow requests only the minimum permissions needed (issues: write,pull-requests: write,contents: read) and does not check out repository code or handle secrets, so it is not exposed to fork-PR code execution. No coordinated disclosure required.Notes for reviewers
actions/stale@v9.1.0is pinned to a version tag, matching the existingpr-title-lint.ymlconvention. If the project prefers SHA-pinning for supply-chain hardening, say so and I'll switch to the commit SHA.pinned/security/epiclabels, and thestalelabel should exist in the repo. Confirm these labels exist (or I can add agh label createstep / label-sync).workflow_dispatch). For a no-op preview that logs what would be marked/closed without mutating anything, temporarily adddebug-only: trueto thewith:block.operations-per-run: 200caps API operations so a large backlog won't exhaust rate limits in a single run; remaining items are picked up on the next daily run.