|
| 1 | +# Prioritization WG - Procedure |
| 2 | + |
| 3 | +This document details the procedure the WG-prioritization follows to fill the agenda for the weekly meeting of `T-compiler`. |
| 4 | +The working group focuses mainly on triaging `T-compiler` and `libs-impl` bugs, deciding if bugs are critical (potential release blockers) or not and building the agenda for the most important things `T-compiler` needs to discuss. |
| 5 | + |
| 6 | +## The procedure in detail |
| 7 | + |
| 8 | +High level overview: |
| 9 | + |
| 10 | +- [Follow ups from previous meeting](#Follow-ups-from-previous-meeting) |
| 11 | + - Remove `I-nominated` tags of already discussed issues |
| 12 | + - Notify @pnkfelix about not properly tagged stable/beta-nominated issues |
| 13 | + - Create the next meeting agenda using the weekly agenda template |
| 14 | +- [Prepare agenda content](#Prepare-agenda-content) |
| 15 | + - Add `T-compiler` and `libs-impl` to unlabelled T-compiler and libs-impl issues |
| 16 | + - Assign priority to unprioritized issues with "I-prioritize" label |
| 17 | + - Assign priority to regressions without a `P-*` label |
| 18 | + - Summarize stable/beta nominations |
| 19 | + - Summarize PR's waiting on team |
| 20 | + - Summarize `P-critical` and unassigned `P-high` regressions |
| 21 | + - Summarize I-nominated issues |
| 22 | + - Process MCPs/FCPs |
| 23 | +- [Generate Agenda](#Generate-Agenda) |
| 24 | + - Run cli to generate agenda |
| 25 | + - Fill agenda announcements |
| 26 | + - Add performance logs |
| 27 | +- [Notify the team about the meeting](#Notify-the-team-about-the-meeting) |
| 28 | + - Figure out which WGs need to check-in |
| 29 | + - Notify @T-compiler/meeting about the meeting on Zulip |
| 30 | +- [Final reviews](#Final-reviews) |
| 31 | + - Check toolstate |
| 32 | + - Check performance stats |
| 33 | + - Nominate issues |
| 34 | + - Re-sync and check the agenda right before the meeting |
| 35 | + |
| 36 | +## General review process |
| 37 | + |
| 38 | +- Check the status of the issue |
| 39 | +- Try moving it forward if possible (ex. stimulate further comments from the issue author or a reviewer) |
| 40 | +- Ask for more info if it's needed |
| 41 | +- Is there an MCVE for the issue already? |
| 42 | +- Check if it's a regression and label it accordingly (`regression-*` labels) |
| 43 | +- Figure out the area the issue belongs and label it accordingly (`A-*` labels) |
| 44 | +- [Ping notify groups](https://rustc-dev-guide.rust-lang.org/notification-groups/about.html) or relevant teams |
| 45 | +- Assign if possible |
| 46 | +- Nominate the issue if it needs to be discussed |
| 47 | + |
| 48 | +## Follow ups from previous meeting |
| 49 | + |
| 50 | +- Remove `I-nominated` tags of already discussed issues |
| 51 | +- Notify @pnkfelix about accepted `beta-nominated` and `stable-nominated` without `beta-accepted` and `stable-accepted` label |
| 52 | +- Notify @pnkfelix about rejected `beta-nominated` and `stable-nominated` still with the nominated label |
| 53 | +- Create an empty agenda using our template, as soon as our Thursday's weekly meeting ends |
| 54 | + |
| 55 | +## Prepare agenda content |
| 56 | + |
| 57 | +### Add `T-compiler` and `libs-impl` labels |
| 58 | + |
| 59 | +Add `T-compiler` and `libs-impl` labels to corresponding issues that are missing these labels. |
| 60 | + |
| 61 | +- [All unprioritized I-prioritize](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+-label%3AP-critical+-label%3AP-high+-label%3AP-medium+-label%3AP-low+label%3AI-prioritize) |
| 62 | +- [All stable nominations](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted) |
| 63 | +- [All beta nominations](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted) |
| 64 | +- [All I-nominated](https://github.com/rust-lang/rust/labels/I-nominated) |
| 65 | +- [All PR's waiting on team](https://github.com/rust-lang/rust/labels/S-waiting-on-team) |
| 66 | + |
| 67 | +### Assign priority to unprioritized issues with "I-prioritize" label |
| 68 | + |
| 69 | +We need all `I-prioritize` issues for `T-compiler` and `libs-impl` to be actually prioritized. To do so, we add one of the `P-critical`, `P-high`, `P-medium` or `P-low` labels and remove `I-prioritize` and also add a text such as: |
| 70 | + |
| 71 | +> Assigning `P-XXX` as [discussed as part of the Prioritization Working Group procedure](link_to_zulip_conversation) and removing `I-prioritize`. |
| 72 | +
|
| 73 | +The procedure here follows the [General review process](#General-review-process). |
| 74 | + |
| 75 | +Note: triagebot automatically creates a topic and notify @*WG-prioritization* members once an issue is labelled with `I-prioritize` |
| 76 | +Note #2: These lists should typically be empty when we are close to the meeting. |
| 77 | + |
| 78 | +### Assign priority to regressions without a P-label |
| 79 | + |
| 80 | +We should not have unprioritized regressions and ideally regressions should have an assignee. |
| 81 | + |
| 82 | +The procedure here follows the [General review process](#General-review-process). |
| 83 | + |
| 84 | +Note: triagebot automatically adds `I-prioritize` to all regression issues and creates a topic and notify @*WG-prioritization* members requesting prioritization. |
| 85 | + |
| 86 | +### Summarize stable/beta nominations |
| 87 | + |
| 88 | +- Add them to the agenda explaining: |
| 89 | + - Why was it nominated |
| 90 | + - Who the assignee is |
| 91 | + - Add important details |
| 92 | + |
| 93 | +Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda. |
| 94 | + |
| 95 | +### Summarize PR's waiting on team |
| 96 | + |
| 97 | +These are PRs waiting for some decision by our team (`T-compiler` or `libs-impl`). |
| 98 | + |
| 99 | +The procedure here should try following the [General review process](#General-review-process). |
| 100 | + |
| 101 | +We should: |
| 102 | + |
| 103 | +- Add them to the agenda explaining: |
| 104 | + - What are they waiting for |
| 105 | + - Add important details |
| 106 | +- Explicitly nominate any issue that can be *quickly* resolved in a triage meeting. |
| 107 | + |
| 108 | +Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda. |
| 109 | + |
| 110 | +### Summarize `P-critical` and unassigned `P-high` regressions |
| 111 | + |
| 112 | +The procedure here should try following the [General review process](#General-review-process). |
| 113 | + |
| 114 | +We should: |
| 115 | + |
| 116 | +- [Notify the appropriate groups](https://rustc-dev-guide.rust-lang.org/notification-groups/about.html) |
| 117 | +- Push them forward, if possible |
| 118 | +- Assign if possible; if the issue remains unassigned, it should be added to the agenda so we can assign it during the meeting |
| 119 | + |
| 120 | +Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda. |
| 121 | + |
| 122 | +### Summarize I-nominated issues |
| 123 | + |
| 124 | +Issues labeled with `I-nominated` are important issues that we decide deserve discussion during the weekly meeting. |
| 125 | + |
| 126 | +The procedure here should try following the [General review process](#General-review-process). |
| 127 | + |
| 128 | +We should: |
| 129 | + |
| 130 | +- Check if these issues were already discussed and in that case remove `I-nominated` label |
| 131 | +- Check if each issue is worth being discussed |
| 132 | +- Add them to the agenda explaining: |
| 133 | + - Why was it nominated |
| 134 | + - Who the assignee is |
| 135 | + - Is this an issue or a PR: if an issue, does it have a PR that fixes it? |
| 136 | + - Add important details |
| 137 | + |
| 138 | +Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda. |
| 139 | + |
| 140 | +### Accept MCPs |
| 141 | + |
| 142 | +Accept all [MCPs that have been on `final-comment-period`](https://github.com/rust-lang/compiler-team/issues?q=is%3Aissue+is%3Aopen+label%3Amajor-change) for 10 or more days. Basically check that `final-comment-period` label was added more than 10 days ago. |
| 143 | +To accept, remove `final-comment-period`, add `major-change-accepted` and close the issue. |
| 144 | + |
| 145 | +## Generate Agenda |
| 146 | + |
| 147 | +### Run cli to generate agenda |
| 148 | + |
| 149 | +Run triagebot's prioritization cli to generate the agenda. |
| 150 | +For that you need to clone https://github.com/rust-lang/triagebot if you haven't done so already. |
| 151 | +You need to export your `GITHUB_API_TOKEN` on Linux that's typically done by adding |
| 152 | + |
| 153 | +`export GITHUB_API_TOKEN=<your key>` |
| 154 | + |
| 155 | +to your `~/.profile` file. |
| 156 | + |
| 157 | +And then run: |
| 158 | + |
| 159 | +``` |
| 160 | +$ cargo run --bin prioritization |
| 161 | +``` |
| 162 | + |
| 163 | +### Remove `to-announce` from MCPs/FCPs |
| 164 | + |
| 165 | +As a quick reminder: |
| 166 | + |
| 167 | +MCP = Major Change Proposal |
| 168 | +FCP = Final Comment Period |
| 169 | + |
| 170 | +Remove all [`to-announce` MCPs](https://github.com/rust-lang/compiler-team/issues?q=is%3Aissue+is%3Aall+label%3Amajor-change+label%3Ato-announce) as they were already added in the agenda in their corresponding place. |
| 171 | + |
| 172 | +FIXME: We need to add `to-announce` also to FCPs and here we would need to also remove the [FCPs `to-announce`](https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aall+label%3Afinished-final-comment-period+label%3Ato-announce) |
| 173 | + |
| 174 | +### Fill agenda announcements |
| 175 | + |
| 176 | +Check the compiler calendar to see if there's an outstanding event to announce and add it to the agenda. |
| 177 | + |
| 178 | +### Add performance logs |
| 179 | + |
| 180 | +- Add Triage Logs to the agenda |
| 181 | + - https://github.com/rust-lang/rustc-perf/tree/master/triage#triage-logs |
| 182 | + |
| 183 | +## Notify the team about the meeting |
| 184 | + |
| 185 | +Create `[weekly meeting] YYYY-MM-DD #54818` topic in `#t-compiler/meetings` Zulip's stream and send the following messages: |
| 186 | + |
| 187 | +```text |
| 188 | +Hi @*T-compiler/meeting*; the triage meeting will be starting in ~ X hours Y minutes |
| 189 | +The @*WG-prioritization* have done pre-triage in #**t-compiler/wg-prioritization** |
| 190 | +@*WG-prioritization* have prepared the [meeting agenda](link_to_hackmd_agenda) |
| 191 | +We will have checkins from @*WG-X* and @*WG-Y* |
| 192 | +@**person1** do you have something you want to share about @*WG-X*? |
| 193 | +@**person2** do you have something you want to share about @*WG-Y*? |
| 194 | +``` |
| 195 | + |
| 196 | +Note: [Check which working groups' check-ins follow](https://rust-lang.github.io/compiler-team/about/triage-meeting/) |
| 197 | + |
| 198 | +## Final reviews |
| 199 | + |
| 200 | +### Check toolstate |
| 201 | + |
| 202 | +Check [toolstate](https://rust-lang-nursery.github.io/rust-toolstate/) for tool breakage and notify teams in the corresponding channels. |
| 203 | + |
| 204 | +### Check performance stats |
| 205 | + |
| 206 | +Check [perf regressions](http://perf.rust-lang.org/index.html) and notify involved actors. |
| 207 | + |
| 208 | +### Nominate P-high issues |
| 209 | + |
| 210 | +Check how packed the agenda looks like and if there's room for more nominations. |
| 211 | + |
| 212 | +- [Other team's P-critical](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AP-critical+-label%3AT-compiler+-label%3Alibs-impl) |
| 213 | +- [T-compiler P-high](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3AT-compiler+label%3AP-high+) |
| 214 | +- [libs-impl P-high](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3Alibs-impl+label%3AP-high+) |
| 215 | + |
| 216 | +### Re-sync and check the agenda right before the meeting |
| 217 | + |
| 218 | +Re-run the script and re-synchronize contents of the agenda with new information. |
0 commit comments