|
16 | 16 | - [Documentation changes](#documentation-changes)
|
17 | 17 | - [Releases](#releases)
|
18 | 18 | - [Proposal process (CAEP)](#proposal-process-caep)
|
| 19 | +- [Triaging issues](#triaging-issues) |
19 | 20 | - [Triaging E2E test failures](#triaging-e2e-test-failures)
|
20 | 21 | - [Reviewing a Patch](#reviewing-a-patch)
|
21 | 22 | - [Reviews](#reviews)
|
@@ -260,6 +261,62 @@ The [template](https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/pro
|
260 | 261 | - A proposal in a Google Doc MUST turn into a [Pull Request](https://github.com/kubernetes-sigs/cluster-api/pulls).
|
261 | 262 | - Proposals MUST be merged and in `implementable` state to be considered part of a major or minor release.
|
262 | 263 |
|
| 264 | +## Triaging issues |
| 265 | + |
| 266 | +Issue triage in Cluster API follows the best practices of the Kubernetes project while seeking balance with |
| 267 | +the different size of this project. |
| 268 | + |
| 269 | +While the maintainers play an important role in the triage process described below, the help of the community is crucial |
| 270 | +to ensure that this task is performed timely and be sustainable long term. |
| 271 | + |
| 272 | +| Phase | Responsible | What is required to move forward | |
| 273 | +|---------------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 274 | +| Initial triage | Maintainers | The issue MUST have: <br/> - [priority/*](https://github.com/kubernetes-sigs/cluster-api/labels?q=priority) label<br/>- [kind/*](https://github.com/kubernetes-sigs/cluster-api/labels?q=kind) label<br/> | |
| 275 | +| Triage finalization | Everyone | There should be consensus on the way forward and enough details for the issue being actionable | |
| 276 | +| Triage finalization | Maintainers | The issue MUST have: <br/> - `triage/accepted` label<br/> label, plus eventually `help` or `good-first-issue` label | |
| 277 | +| Actionable | Everyone | Contributors volunteering time to do the work and reviewers/approvers bandwidth<br/>The issue being fixed | |
| 278 | + |
| 279 | +Please note that: |
| 280 | + |
| 281 | +- Priority provides an indication to everyone looking at issues. |
| 282 | + - When assigning priority several factors are taken into consideration, including impact on users, relevance |
| 283 | + for the upcoming releases, maturity of the issue (consensus + completeness). |
| 284 | + - `priority/awaiting-more-evidence` is used to mark issue where there is not enough info to take a decision for |
| 285 | + one of the other [priorities values](https://github.com/kubernetes-sigs/cluster-api/labels?q=priority). |
| 286 | + - Priority can change over time, and everyone is welcome to provide constructive feedback about updating an issue's priority. |
| 287 | + - Applying a priority label is not a commitment to execute within a certain time frame, because implementation |
| 288 | + depends on contributors volunteering time to do the work and on reviewers/approvers bandwidth. |
| 289 | + |
| 290 | +- Closing inactive issues which are stuck in the "triage" phases is a crucial task for maintaining an |
| 291 | + actionable backlog. Accordingly, the following automation applies to issues in the "triage" or the "refinement" phase: |
| 292 | + - After 90 days of inactivity, issues will be marked with the `lifecycle/stale` label |
| 293 | + - After 30 days of inactivity from when `lifecycle/stale` was applied, issues will be marked with the `lifecycle/rotten` label |
| 294 | + - After 30 days of inactivity from when `lifecycle/rotten` was applied, issues will be closed. |
| 295 | + With this regard, it is important to notice that closed issues are and will always be a highly valuable part of the |
| 296 | + knowledge base about the Cluster API project, and they will never go away. |
| 297 | + - Note: |
| 298 | + - The automation above does not apply to issues triaged as `priority/critical-urgent`, `priority/important-soon` or `priority/important-longterm` |
| 299 | + - Maintainers could apply the `lifecycle/frozen` label if they want to exclude an issue from the automation above |
| 300 | + - Issues excluded from the automation above will be re-triaged periodically |
| 301 | + |
| 302 | +- If you really care about an issue stuck in the "triage" phases, you can engage with the community or |
| 303 | + try to figure out what is holding back the issue by yourself, e.g.: |
| 304 | + - Issue too generic or not yet actionable |
| 305 | + - Lack of consensus or the issue is not relevant for other contributors |
| 306 | + - Lack of contributors; in this case, finding ways to help and free up maintainers/other contributors time from other tasks |
| 307 | + can really help to unblock your issues. |
| 308 | + |
| 309 | +- Issues in the "actionable" state are not subject to the stale/rotten/closed process; however, it is required to re-assess |
| 310 | + them periodically given that the project change quickly. Accordingly, the following automation applies to issues |
| 311 | + in the "actionable" phase: |
| 312 | + - After 30 days of inactivity, the `triage/accepted` label will be removed from issues with `priority/critical-urgent` |
| 313 | + - After 90 days of inactivity the `triage/accepted` label will be removed from issues with `priority/important-soon` |
| 314 | + - After 1 year of inactivity the `triage/accepted` label will be removed from issues without `priority/critical-urgent` or `priority/important-soon` |
| 315 | + |
| 316 | +- If you really care about an issue stuck in the "actionable" phase, you can try to figure out what is holding back |
| 317 | + the issue implementation (usually lack of contributors), engage with the community, find ways to help and free up |
| 318 | + maintainers/other contributors time from other tasks, or `/assign` the issue and send a PR. |
| 319 | + |
263 | 320 | ## Triaging E2E test failures
|
264 | 321 |
|
265 | 322 | When you submit a change to the Cluster API repository as set of validation jobs is automatically executed by
|
|
0 commit comments