From 68ffba14527dc3a482b168ce556dad62c7c039b7 Mon Sep 17 00:00:00 2001 From: zeevdr Date: Mon, 20 Jul 2026 13:15:38 +0300 Subject: [PATCH] ci(stale): exempt milestoned issues, stop auto-closing issues The daily sweep closed 20 issues as not_planned on 2026-07-12, including the entire "Planned" row of ROADMAP.md and every milestoned demos issue. The affected milestones then read 100% complete because the bot closed the remainder, not because the work shipped. Issues are the roadmap on this project, so the sweep now marks staleness without acting on it: days-before-issue-close is -1, and any milestoned issue is exempt outright. Pull requests keep the existing 30/7 auto-close, since a stale PR is genuinely abandoned work. Drops close-issue-message and close-issue-reason, which become dead config once issues never close. Refs opendecree/decree#1028 Co-Authored-By: Claude Opus 4.8 --- .github/workflows/stale.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index cbceaac..56d54bd 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,8 +1,12 @@ name: Stale issues and PRs -# Daily sweep: marks inactive issues/PRs as stale and eventually closes -# them. The `keep` label opts an item out entirely; `good first issue` -# and `bug` are also exempt for issues. opendecree/decree#162. +# Daily sweep. Issues are marked stale for visibility but are never closed +# automatically — on this project the issue tracker doubles as the roadmap, +# and a parked item is not an abandoned one. Pull requests still auto-close, +# since a stale PR is genuinely abandoned work. +# +# Issue exemptions: anything with a milestone, plus the `keep`, +# `good first issue`, and `bug` labels. opendecree/decree#162, opendecree/decree#1028. # # Tuning happens here per-repo so each project can adjust independently # if traffic patterns diverge. @@ -25,23 +29,22 @@ jobs: with: stale-issue-message: > This issue has been inactive for 60 days and is being marked - stale. It will be closed in 14 days unless there is new - activity. Add the `keep` label to opt out of future sweeps. + stale. It will not be closed automatically — comment, or remove + the `stale` label, if it is still relevant. Add the `keep` label + to opt out of future sweeps. stale-pr-message: > This PR has been inactive for 30 days and is being marked stale. It will be closed in 7 days unless there is new activity. Add the `keep` label to opt out of future sweeps. - close-issue-message: > - Closing for inactivity. Reopen if this is still relevant. close-pr-message: > Closing for inactivity. Reopen if this is still relevant. stale-issue-label: stale stale-pr-label: stale days-before-issue-stale: 60 - days-before-issue-close: 14 + days-before-issue-close: -1 # never auto-close issues days-before-pr-stale: 30 days-before-pr-close: 7 + exempt-all-issue-milestones: true exempt-issue-labels: 'keep,good first issue,bug' exempt-pr-labels: 'keep' - close-issue-reason: not_planned operations-per-run: 100