From d79d8b4ca5141b4be09915bd15b178c672a64759 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Thu, 9 Apr 2026 15:11:42 -0400 Subject: [PATCH 1/2] meta: broaden stale bot --- .../close-stale-feature-requests.yml | 56 ------------------ .../workflows/close-stale-pull-requests.yml | 59 ------------------- .github/workflows/stale.yml | 50 ++++++++++++++++ .../feature-request-management.md | 40 ------------- 4 files changed, 50 insertions(+), 155 deletions(-) delete mode 100644 .github/workflows/close-stale-feature-requests.yml delete mode 100644 .github/workflows/close-stale-pull-requests.yml create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml deleted file mode 100644 index cb308cb044bc84..00000000000000 --- a/.github/workflows/close-stale-feature-requests.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Close stale feature requests -on: - workflow_dispatch: - schedule: - # Run every day at 1:00 AM UTC. - - cron: 0 1 * * * - -# yamllint disable rule:empty-lines -env: - CLOSE_MESSAGE: > - There has been no activity on this feature request - and it is being closed. If you feel closing this issue is not the - right thing to do, please leave a comment. - - - For more information on how the project manages - feature requests, please consult the - [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). - - WARN_MESSAGE: > - There has been no activity on this feature request for - 5 months. To help maintain relevant open issues, please - add the https://github.com/nodejs/node/labels/never-stale - label or close this issue if it should be closed. If not, - the issue will be automatically closed 6 months after the - last non-automated comment. - - For more information on how the project manages - feature requests, please consult the - [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). -# yamllint enable - -permissions: - contents: read - -jobs: - stale: - permissions: - issues: write # for actions/stale to close stale issues - pull-requests: write # for actions/stale to close stale PRs - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: 180 - days-before-close: 30 - stale-issue-label: stale - close-issue-message: ${{ env.CLOSE_MESSAGE }} - stale-issue-message: ${{ env.WARN_MESSAGE }} - only-labels: feature request - exempt-issue-labels: never-stale - # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits - operations-per-run: 500 - remove-stale-when-updated: true diff --git a/.github/workflows/close-stale-pull-requests.yml b/.github/workflows/close-stale-pull-requests.yml deleted file mode 100644 index de565c9051328d..00000000000000 --- a/.github/workflows/close-stale-pull-requests.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Close stale pull requests -on: - workflow_dispatch: - inputs: - endDate: - description: stop processing PRs after this date - required: false - type: string - -# yamllint disable rule:empty-lines -env: - CLOSE_MESSAGE: > - This pull request was opened more than a year ago and there has - been no activity in the last 6 months. We value your contribution - but since it has not progressed in the last 6 months it is being - closed. If you feel closing this pull request is not the right thing - to do, please leave a comment. - - WARN_MESSAGE: > - This pull request was opened more than a year ago and there has - been no activity in the last 5 months. We value your contribution - but since it has not progressed in the last 5 months it is being - marked stale and will be closed if there is no progress in the - next month. If you feel that is not the right thing to do please - comment on the pull request. -# yamllint enable - -permissions: - contents: read - -jobs: - stale: - permissions: - pull-requests: write # for actions/stale to close stale PRs - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: - - name: Set default end date which is 1 year ago - run: echo "END_DATE=$(date --date='525600 minutes ago' --rfc-2822)" >> "$GITHUB_ENV" - - name: if date set in event override the default end date - env: - END_DATE_INPUT_VALUE: ${{ github.event.inputs.endDate }} - if: ${{ github.event.inputs.endDate != '' }} - run: echo "END_DATE=$END_DATE_INPUT_VALUE" >> "$GITHUB_ENV" - - uses: mhdawson/stale@453d6581568dc43dbe345757f24408d7b451c651 # PR to add support for endDate - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - end-date: ${{ env.END_DATE }} - days-before-issue-stale: -1 - days-before-issue-close: -1 - days-before-stale: 150 - days-before-close: 30 - stale-issue-label: stale - close-issue-message: ${{ env.CLOSE_MESSAGE }} - stale-issue-message: ${{ env.WARN_MESSAGE }} - exempt-pr-labels: never-stale - # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits - operations-per-run: 500 - remove-stale-when-updated: true diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000000000..f8d1035eeefc04 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,50 @@ +name: Close stale +on: + workflow_dispatch: + schedule: + # Run every day at 1:00 AM UTC. + - cron: 0 1 * * * + +# yamllint disable rule:empty-lines +env: + CLOSE_MESSAGE: > + This issue has been automatically closed after 30 days of inactivity + following its stale status (no activity for a total of 240 days). + + If this is still relevant, feel free to reopen it or leave a comment + with additional details so we can continue the discussion. + + WARN_MESSAGE: > + This issue has been marked as stale due to 210 days of inactivity. + + It will be automatically closed in 30 days if no further activity occurs. + If this is still relevant, please leave a comment or update it to keep it open. +# yamllint enable + +permissions: + contents: read + +jobs: + stale: + permissions: + issues: write # for actions/stale to close stale issues + pull-requests: write # for actions/stale to close stale PRs + if: github.repository == 'nodejs/node' + runs-on: ubuntu-slim + steps: + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 210 + days-before-close: 30 + stale-issue-label: stale + exempt-issue-labels: never-stale, confirmed-bug + close-issue-message: ${{ env.CLOSE_MESSAGE }} + stale-issue-message: ${{ env.WARN_MESSAGE }} + stale-pr-label: stale + exempt-pr-labels: never-stale + close-pr-message: ${{ env.CLOSE_MESSAGE }} + stale-pr-message: ${{ env.WARN_MESSAGE }} + # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits + operations-per-run: 500 + remove-stale-when-updated: true diff --git a/doc/contributing/feature-request-management.md b/doc/contributing/feature-request-management.md index bb2ecd9d99660b..aa42ea166449ac 100644 --- a/doc/contributing/feature-request-management.md +++ b/doc/contributing/feature-request-management.md @@ -42,11 +42,6 @@ Individual collaborators review issues marked as `feature request` along with other issues and may or may not decide to work on an implementation or advocate on their behalf. -If a collaborator believes a feature request must be implemented -they can add the `never-stale` label to the issue and it will -be excluded from the automated feature request handling -as outlined below. - ## Expressing support for a feature request If you come across a feature request and want to add your @@ -54,38 +49,3 @@ support for that feature please express your support with the thumbs up emoji as a reaction. At some point in the future we may use this as additional input in the automated handling of feature requests. - -## Automated feature request handling - -Our experience is that most feature requests that are -likely to be addressed, will be addressed within the first -6 months after they are submitted. - -Once there has been no activity on a feature request for -5 months, the following comment will be added -to the issue: - -```markdown -There has been no activity on this feature request for -5 months and it is unlikely to be implemented. -It will be closed 6 months after the last non-automated comment. - -For more information on how the project manages -feature requests, please consult the -[feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). -``` - -If there is no additional activity/discussion on the -feature request in the next month, the following -comment is added to the issue and the issue will be -closed: - -```markdown -There has been no activity on this feature request -and it is being closed. If you feel closing this issue is not the -right thing to do, please leave a comment. - -For more information on how the project manages -feature requests, please consult the -[feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). -``` From 0bb964a7ffcaf334467c02baa163146556c2637e Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Fri, 10 Apr 2026 11:43:55 -0400 Subject: [PATCH 2/2] fixup! use format --- .github/workflows/stale.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f8d1035eeefc04..704967c24e62ec 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -8,14 +8,14 @@ on: # yamllint disable rule:empty-lines env: CLOSE_MESSAGE: > - This issue has been automatically closed after 30 days of inactivity + This {0} has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 240 days). If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion. WARN_MESSAGE: > - This issue has been marked as stale due to 210 days of inactivity. + This {0} has been marked as stale due to 210 days of inactivity. It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open. @@ -39,12 +39,12 @@ jobs: days-before-close: 30 stale-issue-label: stale exempt-issue-labels: never-stale, confirmed-bug - close-issue-message: ${{ env.CLOSE_MESSAGE }} - stale-issue-message: ${{ env.WARN_MESSAGE }} + close-issue-message: ${{ format(env.CLOSE_MESSAGE, 'issue') }} + stale-issue-message: ${{ format(env.WARN_MESSAGE, 'issue') }} stale-pr-label: stale exempt-pr-labels: never-stale - close-pr-message: ${{ env.CLOSE_MESSAGE }} - stale-pr-message: ${{ env.WARN_MESSAGE }} + close-pr-message: ${{ format(env.CLOSE_MESSAGE, 'pull request') }} + stale-pr-message: ${{ format(env.WARN_MESSAGE, 'pull request') }} # max requests it will send per run to the GitHub API before it deliberately exits to avoid hitting API rate limits operations-per-run: 500 remove-stale-when-updated: true