You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: proposals/0065-issue-pr-label-system.md
+15-17Lines changed: 15 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,8 +24,8 @@ As Prometheus projects grow, the volume of issues and pull requests increases.
24
24
Without a clear labeling system, it becomes difficult to:
25
25
26
26
- Identify which issues and PRs need immediate attention
27
-
- Understand whether action is required from maintainers, reviewers, or authors
28
-
-Distinguish between items that are ready for work versus those that are blocked
27
+
- Understand whether action is required from maintainers, reviewers or author
28
+
-Clearly mark items that can be worked on by (new) contributors versus ones that need to be evaluated for validity, e.g. bugs that are considered invalid
29
29
- Maintain an efficient review and triage workflow
30
30
31
31
A systematic approach to labels helps contributors and maintainers quickly
@@ -40,6 +40,7 @@ Currently, there is no standardized label system across Prometheus projects. Thi
40
40
- PRs and issues that languish without clear ownership or next steps
41
41
- No clear signal for when an item is blocked versus ready for action
42
42
- Maintainer time wasted re-evaluating items that haven't changed state
43
+
- Contributors time wasted by working on untriaged issues which might be invalid
43
44
44
45
## Goals
45
46
@@ -51,6 +52,7 @@ Goals and use cases for the solution as proposed in [How](#how):
51
52
* Enable automated tooling to assist with workflow management
52
53
* Create consistency across Prometheus ecosystem repositories
53
54
* Reduce maintainer cognitive load when evaluating what needs attention
55
+
* Help new contributors to identify suitable issues to work on
54
56
55
57
### Audience
56
58
@@ -80,18 +82,17 @@ These labels indicate whether an issue has been evaluated and is ready for work:
80
82
-**`triage/accepted`**: Issue has been triaged and accepted as valid work. It is ready for someone to work on.
81
83
-**`triage/needs-information`**: Issue needs more details from the author before it can be properly evaluated or worked on.
82
84
83
-
**Workflow**: All issues start with `triage/needs-triage`. During triage, maintainers either replace this with another triage label or remove it entirely. The absence of any triage label (along with issue comments) indicates that triage action has been taken, such as declining or marking as duplicate.
85
+
**Workflow**: All issues start with `triage/needs-triage`. During triage, maintainers either replace this with another triage label or remove it entirely. The absence of any triage label (along with issue comments) indicates that triage action has been taken and the issue is currently being worked on. Declined or duplicate issues should also have no `triage/` label.
84
86
85
87
#### 2. Review Labels
86
88
87
89
These labels manage the pull request review lifecycle:
88
90
89
91
-**`review/needs-review`**: Initial state for all new PRs. Indicates the PR needs review from maintainers.
90
92
-**`review/changes-requested`**: Reviewers have requested changes. Author action is needed.
91
-
-**`review/lgtm`**: "Looks Good To Me" - PR has received technical approval from a reviewer with domain expertise.
92
-
-**`review/approved`**: PR has received final approval from a maintainer with merge rights (per OWNERS or equivalent).
93
+
-**`review/lgtm`**: "Looks Good To Me" - PR has received approval from reviewers. If an approving reviewer is code owner the PR is ready to be merged.
93
94
94
-
**Workflow**: All PRs start with `review/needs-review`. After review, this transitions to either `review/changes-requested` or `review/lgtm`. Once approved by appropriate maintainers, it becomes `review/approved`.
95
+
**Workflow**: All PRs start with `review/needs-review`. After review, this transitions to either `review/changes-requested` or `review/lgtm`. After requested changes have been addressed, a PR transitions back to `review/needs-review`. Once approved by appropriate maintainers, it becomes `review/lgtm`.
95
96
96
97
#### 3. Blocking Labels
97
98
@@ -103,23 +104,20 @@ These labels indicate that an issue or PR cannot proceed:
103
104
104
105
**Workflow**: These labels can be applied at any time when the item becomes blocked. They should be removed when the blocking condition is resolved.
105
106
106
-
#### 4. Lifecycle Labels (Optional)
107
+
#### 4. Lifecycle Labels
107
108
108
-
These labels track the activity status of issues and PRs. This category is optional and would only be implemented if automated lifecycle management is adopted in the future:
109
+
These labels track the activity status of issues and PRs. Prometheus has an [automation in place](https://github.com/prometheus/prometheus/blob/96d3d641e329c049f649edbd4c2695345c027c56/.github/workflows/stale.yml) that would only require adjusting the label values.
109
110
110
-
-**`lifecycle/stale`**: No activity for an extended period (e.g., 90 days). Candidate for closure if no activity resumes.
111
-
-**`lifecycle/frozen`**: Should not be auto-closed due to inactivity. Reserved for important long-running items.
112
-
-**`lifecycle/rotten`**: No activity after being marked stale (e.g., 30 additional days). Will be auto-closed soon.
113
-
114
-
**Workflow**: These would typically be managed by automation based on activity timestamps. Currently, Prometheus projects do not use automated lifecycle management, so these labels are reserved for potential future use.
111
+
-**`lifecycle/stale`**: No activity for an extended period (currently 30 days). Candidate for closure if no activity resumes.
112
+
-**`lifecycle/keepalive`**: Should not be marked stale due to inactivity. Reserved for important long-running items.
115
113
116
114
### Label Interactions
117
115
118
116
Labels from different categories work together:
119
117
120
118
-**Active PR ready for review**: `review/needs-review` (no blocking labels)
121
119
-**PR waiting on author**: `review/changes-requested`
122
-
-**PR approved but held**: `review/approved` + `blocked/hold`
120
+
-**PR approved but held**: `review/lgtm` + `blocked/hold`
123
121
-**Issue accepted and ready**: `triage/accepted` (no blocking labels)
124
122
-**Issue needing more info**: `triage/needs-information`
125
123
-**Issue declined or duplicate**: No triage label (removed after triage with explanatory comment)
@@ -162,7 +160,7 @@ Kind labels categorize the type of change or issue:
162
160
-**`kind/bug`**: Something is broken or not working as intended
163
161
-**`kind/enhancement`**: Improvement to existing functionality
164
162
-**`kind/feature`**: Entirely new functionality
165
-
-**`kind/cleanup`**: Code cleanup, refactoring, or technical debt reduction
163
+
-**`kind/cleanup`**: Code cleanup, refactoring or technical debt reduction
-**`kind/change`**: General change that doesn't fit other categories
168
166
-**`kind/breaking`**: Breaking change that affects backward compatibility
@@ -233,13 +231,13 @@ Use only `needs-triage`, `needs-review`, and `hold` labels.
233
231
234
232
**Rationale for rejection**: Too minimal. Doesn't provide enough granularity to distinguish between "waiting on author" vs "waiting on maintainer" vs "blocked externally", which are common and important states.
235
233
236
-
### Alternative 3: Use Existing GitHub Features Only
234
+
### Alternative 2: Use Existing GitHub Features Only
237
235
238
236
Rely on GitHub's built-in review states, assignees, and milestones without custom labels.
239
237
240
238
**Rationale for rejection**: GitHub's native features don't provide sufficient granularity for triage states or blocking conditions. Custom labels allow for automation and clearer communication of project-specific workflow.
241
239
242
-
### Alternative 4: Adopt Kubernetes Labels Exactly
240
+
### Alternative 3: Adopt Kubernetes Labels Exactly
243
241
244
242
Use the exact label names and taxonomy from Kubernetes.
0 commit comments