Skip to content

Commit 5e710fd

Browse files
feat(docs): define inactivity closure policies for issues and PRs (#452)
## Description Defines inactivity closure policies for issues, discussions, and pull requests to reduce noise from stale items. **Issue and discussion policy** (GOVERNANCE.md) — Issues inactive for 60 days receive a `stale` label and warning comment. If no activity follows within 14 days (74 days total), the issue is closed as `not_planned` with a `closed-stale` label. Exemptions: `pinned`, `security`, `do-not-close`, and milestone-assigned issues. Discussions follow the same thresholds with manual enforcement until tooling supports automation. **Pull request policy** (CONTRIBUTING.md) — Active PRs waiting on the author for 14 days receive a `stale` label. If no author activity follows within 7 days (21 days total), the PR is closed. Draft PRs are fully exempt. Additional exemptions: `do-not-close` and `waiting-on-reviewer` labels. ### Policy Summary | Scope | Stale After | Grace Period | Total | Exemptions | | :---- | :---------- | :----------- | :---- | :--------- | | Issues | 60 days | 14 days | 74 days | `pinned`, `security`, `do-not-close`, milestone-assigned | | Discussions | 60 days | 14 days | 74 days | Same as issues (manual enforcement) | | Active PRs | 14 days | 7 days | 21 days | draft, `do-not-close`, `waiting-on-reviewer` | Six supporting labels have been pre-created on the repository: `stale`, `closed-stale`, `do-not-close`, `pinned`, `waiting-on-author`, `waiting-on-reviewer`. ## Related Issue(s) - Closes #442 - Closes #443 ## Type of Change ### Code & Documentation - [ ] Bug fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [x] Documentation update - [ ] Breaking change (fix or feature that would cause existing functionality to change) ### Infrastructure - [ ] CI/CD pipeline changes - [ ] Build system changes - [ ] Configuration changes ### AI Artifacts - [ ] Copilot instructions (`.instructions.md`) - [ ] Copilot prompt (`.prompt.md`) - [ ] Copilot agent (`.agent.md`) - [ ] Skill package (`SKILL.md`) ### Other - [ ] Refactoring (no functional changes) - [ ] Performance improvement - [ ] Test changes only ## Testing - Verified cross-references between GOVERNANCE.md and CONTRIBUTING.md resolve correctly - Confirmed 6 GitHub labels exist on the repository - Markdown linting passes ## Checklist ### Required Checks - [x] I have read the [CONTRIBUTING](../CONTRIBUTING.md) document - [x] My changes follow the project coding standards - [x] I have updated documentation accordingly - [x] All new and existing linting checks pass ### Required Automated Checks - [x] Markdown linting: `npm run lint:md` - [x] Frontmatter validation: `npm run lint:frontmatter` ## Security Considerations - No secrets, tokens, or credentials introduced - No new dependencies added - No changes to CI/CD workflows or GitHub Actions - All changes are documentation only ## Additional Notes This PR is intentionally scoped to the governance and contributor documentation changes for inactivity policies. The community interaction message templates (Scenario 10 and 11 time-period values) are tracked separately alongside the backlog management pipeline in PR #448.
1 parent c788095 commit 5e710fd

2 files changed

Lines changed: 75 additions & 2 deletions

File tree

CONTRIBUTING.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Contributing
33
description: Guidelines for contributing code, documentation, and improvements to the HVE Core project
44
author: HVE Core Team
5-
ms.date: 2025-11-05
5+
ms.date: 2026-02-07
66
ms.topic: guide
77
keywords:
88
- contributing
@@ -60,6 +60,10 @@ We strongly recommend using the provided DevContainer, which comes pre-configure
6060
- [Suggesting Enhancements](#suggesting-enhancements)
6161
- [Your First Code Contribution](#your-first-code-contribution)
6262
- [Improving The Documentation](#improving-the-documentation)
63+
- [Pull Request Inactivity Policy](#pull-request-inactivity-policy)
64+
- [Active Pull Requests](#active-pull-requests)
65+
- [Draft Pull Requests](#draft-pull-requests)
66+
- [Exemptions](#exemptions)
6367
- [Style Guides](#style-guides)
6468
- [Local Development Setup](#local-development-setup)
6569
- [Coding Conventions](#coding-conventions)
@@ -171,6 +175,45 @@ This project also includes a Dev Container for development work, and using that
171175

172176
If you see issues with the documentation, please follow the [your first code contribution](#your-first-code-contribution) guidance.
173177

178+
## Pull Request Inactivity Policy
179+
180+
Pull requests that remain inactive accumulate merge conflicts and delay feedback loops. This section defines closure timelines for inactive PRs. Automation that enforces this policy is a separate effort that references these thresholds.
181+
182+
For issue and discussion inactivity policy, see [Inactivity Closure Policy](./GOVERNANCE.md#inactivity-closure-policy) in GOVERNANCE.md.
183+
184+
### Active Pull Requests
185+
186+
The inactivity clock runs only when the PR is waiting on the author. Reviewer-side delays do not count against the author.
187+
188+
| Stage | Trigger | Label | Action |
189+
|:-------|:------------------------------------------------------------------|:----------------------|:------------------------|
190+
| Active | Author activity within the past 14 days while `waiting-on-author` | (none) | Normal review cycle |
191+
| Paused | PR is labeled `waiting-on-reviewer` | `waiting-on-reviewer` | Inactivity clock paused |
192+
| Stale | 14 days without author activity while `waiting-on-author` | `stale` | Reminder comment posted |
193+
| Closed | 7 days after `stale` label without author activity | `closed-stale` | PR closed with summary |
194+
195+
Label usage:
196+
197+
- `waiting-on-author` is applied when the reviewer requests changes or the author needs to resolve conflicts. The inactivity clock starts.
198+
- `waiting-on-reviewer` is applied when the author has addressed feedback and awaits re-review. The inactivity clock pauses.
199+
200+
### Draft Pull Requests
201+
202+
Draft PRs are fully exempt from inactivity closure. Converting a draft to "ready for review" starts the normal active PR lifecycle.
203+
204+
### Exemptions
205+
206+
The following conditions prevent automatic closure of a pull request:
207+
208+
- PR is in draft state
209+
- PR is labeled `do-not-close`
210+
- PR is labeled `waiting-on-reviewer`
211+
212+
Reopening rules:
213+
214+
- Authors can reopen a stale-closed PR at any time with updated changes
215+
- Reopening removes the `stale` label and resets the inactivity clock
216+
174217
## Style Guides
175218

176219
This project uses automated linters to ensure code quality and consistency. These linters can be run locally using the npm scripts described in the [Build and Validation Requirements](#build-and-validation-requirements) section.

GOVERNANCE.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Governance
33
description: Project governance model, roles, decision-making processes, and contribution authority for HVE Core
44
author: HVE Core Team
5-
ms.date: 2026-01-21
5+
ms.date: 2026-02-07
66
ms.topic: reference
77
keywords:
88
- governance
@@ -154,6 +154,36 @@ When contributors disagree on technical or process matters:
154154

155155
Code of conduct violations follow the process defined in [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
156156

157+
## Inactivity Closure Policy
158+
159+
Open issues and discussions that remain inactive create noise for contributors and maintainers. This section defines the lifecycle policy for closing inactive items. Automation that enforces this policy (stale bot, scheduled workflows) is a separate effort that references these thresholds.
160+
161+
For pull request inactivity policy, see [Pull Request Inactivity Policy](./CONTRIBUTING.md#pull-request-inactivity-policy) in CONTRIBUTING.md.
162+
163+
### Issues
164+
165+
Issue inactivity follows a three-stage lifecycle:
166+
167+
| Stage | Trigger | Label | Action |
168+
|:-------------|:---------------------------------------------|:---------------|:------------------------------|
169+
| Active | Any activity within the past 60 days | (none) | Normal lifecycle |
170+
| Stale | 60 days without activity | `stale` | Warning comment posted |
171+
| Closed-stale | 14 days after `stale` label without activity | `closed-stale` | Issue closed as `not_planned` |
172+
173+
Exemptions that prevent automatic closure:
174+
175+
* Issues labeled `pinned`, `security`, or `do-not-close`
176+
* Issues assigned to any milestone
177+
178+
Reopening rules:
179+
180+
* Any participant can reopen a stale-closed issue with additional context
181+
* Reopening removes the `stale` label and resets the inactivity clock
182+
183+
### Discussions
184+
185+
The same 60-day warning and 14-day closure thresholds apply to GitHub Discussions in principle. The same exemptions that prevent automatic closure for issues (pinned, security, do-not-close, or assigned to a milestone) and the same reopening behavior (reopening clears any stale status and resets the inactivity clock) apply to Discussions. Because current automation tooling (actions/stale) does not support Discussions, enforcement is manual through periodic triage until dedicated tooling is implemented.
186+
157187
## Access Continuity
158188

159189
Project continuity is ensured through Microsoft stewardship:

0 commit comments

Comments
 (0)