rust-lang / triagebot

Automation/tooling for Rust spaces
https://triage.rust-lang.org
Apache License 2.0
169 stars 75 forks source link

Implement logic to find old 4 year old `E-needs-mcve` issues to close #1746

Closed Enselic closed 3 months ago

Enselic commented 8 months ago

This is the first commit in a series of commits to implement the automatic triaging of old E-needs-mcve issues that was proposed and discussed in t-release/triage and cross-posted to T-compiler. I have included the accepted (read: not objected) proposal below for the convenience of code reviewers.

This commit only implements the logic to find what the issues to close, and prints that info to stdout for inspection. Think of it as a dry run.

After we have convinced ourselves this logic works as it should, we can implement the final steps:

Current output of program ``` https://github.com/rust-lang/rust/issues/117059 will be closed after 47 months https://github.com/rust-lang/rust/issues/107440 will be closed after 47 months https://github.com/rust-lang/rust/issues/114252 will be closed after 47 months https://github.com/rust-lang/rust/issues/116091 will be closed after 47 months https://github.com/rust-lang/rust/issues/86551 will be closed after 47 months https://github.com/rust-lang/rust/issues/117077 will be closed after 47 months https://github.com/rust-lang/rust/issues/89361 will be closed after 47 months https://github.com/rust-lang/rust/issues/83291 will be closed after 47 months https://github.com/rust-lang/rust/issues/97344 will be closed after 47 months https://github.com/rust-lang/rust/issues/88891 will be closed after 47 months https://github.com/rust-lang/rust/issues/90738 will be closed after 47 months https://github.com/rust-lang/rust/issues/88912 will be closed after 47 months https://github.com/rust-lang/rust/issues/89178 will be closed after 47 months https://github.com/rust-lang/rust/issues/116914 will be closed after 47 months https://github.com/rust-lang/rust/issues/115750 will be closed after 47 months https://github.com/rust-lang/rust/issues/102196 will be closed after 47 months https://github.com/rust-lang/rust/issues/32611 will be closed after 47 months https://github.com/rust-lang/rust/issues/67427 will be closed after 47 months https://github.com/rust-lang/rust/issues/116953 will be closed after 47 months https://github.com/rust-lang/rust/issues/27970 will be closed after 47 months https://github.com/rust-lang/rust/issues/114731 will be closed after 47 months https://github.com/rust-lang/rust/issues/116255 will be closed after 47 months https://github.com/rust-lang/rust/issues/116547 will be closed after 47 months https://github.com/rust-lang/rust/issues/116394 will be closed after 47 months https://github.com/rust-lang/rust/issues/116638 will be closed after 47 months https://github.com/rust-lang/rust/issues/76507 will be closed after 47 months https://github.com/rust-lang/rust/issues/68015 will be closed after 47 months https://github.com/rust-lang/rust/issues/64718 will be closed after 47 months https://github.com/rust-lang/rust/issues/52652 will be closed after 47 months https://github.com/rust-lang/rust/issues/43241 will be closed after 47 months https://github.com/rust-lang/rust/issues/116373 will be closed after 47 months https://github.com/rust-lang/rust/issues/116539 will be closed after 46 months https://github.com/rust-lang/rust/issues/116462 will be closed after 46 months https://github.com/rust-lang/rust/issues/112286 will be closed after 46 months https://github.com/rust-lang/rust/issues/115430 will be closed after 46 months https://github.com/rust-lang/rust/issues/48409 will be closed after 46 months https://github.com/rust-lang/rust/issues/115552 will be closed after 46 months https://github.com/rust-lang/rust/issues/115658 will be closed after 46 months https://github.com/rust-lang/rust/issues/66003 will be closed after 46 months https://github.com/rust-lang/rust/issues/113069 will be closed after 46 months https://github.com/rust-lang/rust/issues/46695 will be closed after 46 months https://github.com/rust-lang/rust/issues/46019 will be closed after 46 months https://github.com/rust-lang/rust/issues/97726 will be closed after 46 months https://github.com/rust-lang/rust/issues/116026 will be closed after 46 months https://github.com/rust-lang/rust/issues/116023 will be closed after 46 months https://github.com/rust-lang/rust/issues/115896 will be closed after 46 months https://github.com/rust-lang/rust/issues/114325 will be closed after 46 months https://github.com/rust-lang/rust/issues/43349 will be closed after 46 months https://github.com/rust-lang/rust/issues/115497 will be closed after 46 months https://github.com/rust-lang/rust/issues/36749 will be closed after 46 months https://github.com/rust-lang/rust/issues/108762 will be closed after 46 months https://github.com/rust-lang/rust/issues/37077 will be closed after 46 months https://github.com/rust-lang/rust/issues/83126 will be closed after 45 months https://github.com/rust-lang/rust/issues/115525 will be closed after 45 months https://github.com/rust-lang/rust/issues/115556 will be closed after 45 months https://github.com/rust-lang/rust/issues/115036 will be closed after 45 months https://github.com/rust-lang/rust/issues/115495 will be closed after 45 months https://github.com/rust-lang/rust/issues/75662 will be closed after 45 months https://github.com/rust-lang/rust/issues/114891 will be closed after 45 months https://github.com/rust-lang/rust/issues/115349 will be closed after 45 months https://github.com/rust-lang/rust/issues/48700 will be closed after 45 months https://github.com/rust-lang/rust/issues/115145 will be closed after 45 months https://github.com/rust-lang/rust/issues/112785 will be closed after 45 months https://github.com/rust-lang/rust/issues/87898 will be closed after 45 months https://github.com/rust-lang/rust/issues/98746 will be closed after 45 months https://github.com/rust-lang/rust/issues/81524 will be closed after 45 months https://github.com/rust-lang/rust/issues/114640 will be closed after 45 months https://github.com/rust-lang/rust/issues/114218 will be closed after 44 months https://github.com/rust-lang/rust/issues/111513 will be closed after 44 months https://github.com/rust-lang/rust/issues/114540 will be closed after 44 months https://github.com/rust-lang/rust/issues/114137 will be closed after 44 months https://github.com/rust-lang/rust/issues/114163 will be closed after 44 months https://github.com/rust-lang/rust/issues/56784 will be closed after 44 months https://github.com/rust-lang/rust/issues/109879 will be closed after 44 months https://github.com/rust-lang/rust/issues/55411 will be closed after 44 months https://github.com/rust-lang/rust/issues/35144 will be closed after 44 months https://github.com/rust-lang/rust/issues/62174 will be closed after 44 months https://github.com/rust-lang/rust/issues/113305 will be closed after 44 months https://github.com/rust-lang/rust/issues/44850 will be closed after 44 months https://github.com/rust-lang/rust/issues/60725 will be closed after 44 months https://github.com/rust-lang/rust/issues/109711 will be closed after 44 months https://github.com/rust-lang/rust/issues/113612 will be closed after 44 months https://github.com/rust-lang/rust/issues/113290 will be closed after 43 months https://github.com/rust-lang/rust/issues/102952 will be closed after 43 months https://github.com/rust-lang/rust/issues/113179 will be closed after 43 months https://github.com/rust-lang/rust/issues/94201 will be closed after 43 months https://github.com/rust-lang/rust/issues/111511 will be closed after 43 months https://github.com/rust-lang/rust/issues/112436 will be closed after 43 months https://github.com/rust-lang/rust/issues/112576 will be closed after 43 months https://github.com/rust-lang/rust/issues/112187 will be closed after 42 months https://github.com/rust-lang/rust/issues/111576 will be closed after 42 months https://github.com/rust-lang/rust/issues/81381 will be closed after 42 months https://github.com/rust-lang/rust/issues/89295 will be closed after 41 months https://github.com/rust-lang/rust/issues/74919 will be closed after 41 months https://github.com/rust-lang/rust/issues/100639 will be closed after 41 months https://github.com/rust-lang/rust/issues/97776 will be closed after 41 months https://github.com/rust-lang/rust/issues/63645 will be closed after 41 months https://github.com/rust-lang/rust/issues/94232 will be closed after 40 months https://github.com/rust-lang/rust/issues/94758 will be closed after 40 months https://github.com/rust-lang/rust/issues/109955 will be closed after 40 months https://github.com/rust-lang/rust/issues/109344 will be closed after 40 months https://github.com/rust-lang/rust/issues/109530 will be closed after 40 months https://github.com/rust-lang/rust/issues/109329 will be closed after 40 months https://github.com/rust-lang/rust/issues/104885 will be closed after 40 months https://github.com/rust-lang/rust/issues/106237 will be closed after 40 months https://github.com/rust-lang/rust/issues/107613 will be closed after 40 months https://github.com/rust-lang/rust/issues/107582 will be closed after 40 months https://github.com/rust-lang/rust/issues/55146 will be closed after 40 months https://github.com/rust-lang/rust/issues/67373 will be closed after 40 months https://github.com/rust-lang/rust/issues/89940 will be closed after 39 months https://github.com/rust-lang/rust/issues/104682 will be closed after 39 months https://github.com/rust-lang/rust/issues/104257 will be closed after 39 months https://github.com/rust-lang/rust/issues/108847 will be closed after 39 months https://github.com/rust-lang/rust/issues/106630 will be closed after 39 months https://github.com/rust-lang/rust/issues/106490 will be closed after 39 months https://github.com/rust-lang/rust/issues/97460 will be closed after 39 months https://github.com/rust-lang/rust/issues/103234 will be closed after 39 months https://github.com/rust-lang/rust/issues/103373 will be closed after 39 months https://github.com/rust-lang/rust/issues/108067 will be closed after 39 months https://github.com/rust-lang/rust/issues/79197 will be closed after 39 months https://github.com/rust-lang/rust/issues/96857 will be closed after 39 months https://github.com/rust-lang/rust/issues/99402 will be closed after 39 months https://github.com/rust-lang/rust/issues/91704 will be closed after 39 months https://github.com/rust-lang/rust/issues/99218 will be closed after 39 months https://github.com/rust-lang/rust/issues/95750 will be closed after 39 months https://github.com/rust-lang/rust/issues/94323 will be closed after 39 months https://github.com/rust-lang/rust/issues/94204 will be closed after 39 months https://github.com/rust-lang/rust/issues/94701 will be closed after 39 months https://github.com/rust-lang/rust/issues/93073 will be closed after 39 months https://github.com/rust-lang/rust/issues/92491 will be closed after 39 months https://github.com/rust-lang/rust/issues/72985 will be closed after 39 months https://github.com/rust-lang/rust/issues/106211 will be closed after 39 months https://github.com/rust-lang/rust/issues/108331 will be closed after 39 months https://github.com/rust-lang/rust/issues/106136 will be closed after 39 months https://github.com/rust-lang/rust/issues/100923 will be closed after 38 months https://github.com/rust-lang/rust/issues/105822 will be closed after 38 months https://github.com/rust-lang/rust/issues/96886 will be closed after 38 months https://github.com/rust-lang/rust/issues/103959 will be closed after 38 months https://github.com/rust-lang/rust/issues/105112 will be closed after 38 months https://github.com/rust-lang/rust/issues/106650 will be closed after 38 months https://github.com/rust-lang/rust/issues/106800 will be closed after 38 months https://github.com/rust-lang/rust/issues/94651 will be closed after 37 months https://github.com/rust-lang/rust/issues/102687 will be closed after 37 months https://github.com/rust-lang/rust/issues/105042 will be closed after 37 months https://github.com/rust-lang/rust/issues/106119 will be closed after 37 months https://github.com/rust-lang/rust/issues/106049 will be closed after 37 months https://github.com/rust-lang/rust/issues/106159 will be closed after 37 months https://github.com/rust-lang/rust/issues/106492 will be closed after 37 months https://github.com/rust-lang/rust/issues/104606 will be closed after 37 months https://github.com/rust-lang/rust/issues/105299 will be closed after 37 months https://github.com/rust-lang/rust/issues/102668 will be closed after 37 months https://github.com/rust-lang/rust/issues/100142 will be closed after 37 months https://github.com/rust-lang/rust/issues/92976 will be closed after 37 months https://github.com/rust-lang/rust/issues/86712 will be closed after 37 months https://github.com/rust-lang/rust/issues/67497 will be closed after 37 months https://github.com/rust-lang/rust/issues/100715 will be closed after 37 months https://github.com/rust-lang/rust/issues/102039 will be closed after 37 months https://github.com/rust-lang/rust/issues/105312 will be closed after 37 months https://github.com/rust-lang/rust/issues/93123 will be closed after 37 months https://github.com/rust-lang/rust/issues/105781 will be closed after 37 months https://github.com/rust-lang/rust/issues/66916 will be closed after 37 months https://github.com/rust-lang/rust/issues/102217 will be closed after 36 months https://github.com/rust-lang/rust/issues/102749 will be closed after 36 months https://github.com/rust-lang/rust/issues/74657 will be closed after 36 months https://github.com/rust-lang/rust/issues/105211 will be closed after 36 months https://github.com/rust-lang/rust/issues/80951 will be closed after 36 months https://github.com/rust-lang/rust/issues/96320 will be closed after 36 months https://github.com/rust-lang/rust/issues/105057 will be closed after 36 months https://github.com/rust-lang/rust/issues/104876 will be closed after 36 months https://github.com/rust-lang/rust/issues/102887 will be closed after 34 months https://github.com/rust-lang/rust/issues/101694 will be closed after 33 months https://github.com/rust-lang/rust/issues/96526 will be closed after 33 months https://github.com/rust-lang/rust/issues/99503 will be closed after 33 months https://github.com/rust-lang/rust/issues/99537 will be closed after 33 months https://github.com/rust-lang/rust/issues/98339 will be closed after 33 months https://github.com/rust-lang/rust/issues/95679 will be closed after 31 months https://github.com/rust-lang/rust/issues/98902 will be closed after 31 months https://github.com/rust-lang/rust/issues/98648 will be closed after 31 months https://github.com/rust-lang/rust/issues/95409 will be closed after 30 months https://github.com/rust-lang/rust/issues/88975 will be closed after 29 months https://github.com/rust-lang/rust/issues/84491 will be closed after 29 months https://github.com/rust-lang/rust/issues/90594 will be closed after 29 months https://github.com/rust-lang/rust/issues/96219 will be closed after 29 months https://github.com/rust-lang/rust/issues/95946 will be closed after 28 months https://github.com/rust-lang/rust/issues/91809 will be closed after 27 months https://github.com/rust-lang/rust/issues/93701 will be closed after 26 months https://github.com/rust-lang/rust/issues/79657 will be closed after 26 months https://github.com/rust-lang/rust/issues/90158 will be closed after 25 months https://github.com/rust-lang/rust/issues/92180 will be closed after 25 months https://github.com/rust-lang/rust/issues/74551 will be closed after 24 months https://github.com/rust-lang/rust/issues/83742 will be closed after 24 months https://github.com/rust-lang/rust/issues/89872 will be closed after 24 months https://github.com/rust-lang/rust/issues/91011 will be closed after 24 months https://github.com/rust-lang/rust/issues/81614 will be closed after 23 months https://github.com/rust-lang/rust/issues/89197 will be closed after 23 months https://github.com/rust-lang/rust/issues/81612 will be closed after 23 months https://github.com/rust-lang/rust/issues/81139 will be closed after 23 months https://github.com/rust-lang/rust/issues/59705 will be closed after 22 months https://github.com/rust-lang/rust/issues/89751 will be closed after 22 months https://github.com/rust-lang/rust/issues/68926 will be closed after 22 months https://github.com/rust-lang/rust/issues/75577 will be closed after 20 months https://github.com/rust-lang/rust/issues/85887 will be closed after 19 months https://github.com/rust-lang/rust/issues/86265 will be closed after 19 months https://github.com/rust-lang/rust/issues/86508 will be closed after 18 months https://github.com/rust-lang/rust/issues/86331 will be closed after 18 months https://github.com/rust-lang/rust/issues/82406 will be closed after 16 months https://github.com/rust-lang/rust/issues/83685 will be closed after 16 months https://github.com/rust-lang/rust/issues/76085 will be closed after 15 months https://github.com/rust-lang/rust/issues/82568 will be closed after 15 months https://github.com/rust-lang/rust/issues/77907 will be closed after 14 months https://github.com/rust-lang/rust/issues/47897 will be closed after 14 months https://github.com/rust-lang/rust/issues/30220 will be closed after 14 months https://github.com/rust-lang/rust/issues/60304 will be closed after 14 months https://github.com/rust-lang/rust/issues/79783 will be closed after 13 months https://github.com/rust-lang/rust/issues/62054 will be closed after 12 months https://github.com/rust-lang/rust/issues/80198 will be closed after 12 months https://github.com/rust-lang/rust/issues/78724 will be closed after 12 months https://github.com/rust-lang/rust/issues/79880 will be closed after 12 months https://github.com/rust-lang/rust/issues/79647 will be closed after 12 months https://github.com/rust-lang/rust/issues/71908 will be closed after 11 months https://github.com/rust-lang/rust/issues/76276 will be closed after 10 months https://github.com/rust-lang/rust/issues/76770 will be closed after 9 months https://github.com/rust-lang/rust/issues/75430 will be closed after 9 months https://github.com/rust-lang/rust/issues/75453 will be closed after 8 months https://github.com/rust-lang/rust/issues/75131 will be closed after 8 months https://github.com/rust-lang/rust/issues/74035 will be closed after 7 months https://github.com/rust-lang/rust/issues/73430 will be closed after 6 months https://github.com/rust-lang/rust/issues/73429 will be closed after 6 months https://github.com/rust-lang/rust/issues/71257 will be closed after 6 months https://github.com/rust-lang/rust/issues/72735 will be closed after 6 months https://github.com/rust-lang/rust/issues/72313 will be closed after 5 months https://github.com/rust-lang/rust/issues/69169 will be closed after 5 months https://github.com/rust-lang/rust/issues/71722 will be closed after 5 months https://github.com/rust-lang/rust/issues/69195 will be closed after 4 months https://github.com/rust-lang/rust/issues/70575 will be closed after 4 months https://github.com/rust-lang/rust/issues/69924 will be closed after 3 months https://github.com/rust-lang/rust/issues/69472 will be closed after 2 months https://github.com/rust-lang/rust/issues/68796 will be closed after 2 months https://github.com/rust-lang/rust/issues/62146 will be closed after 1 months ```

Accepted Proposal

I would like to propose that triagebot begins to close old E-needs-mcve issues.

Goal

The goal of this proposal is to achieve a net reduction in manual wg-triage work. It shall be less work to manually correct bot mistakes than to manually triage all affected issues.

Heuristics

Under this proposal, triagebot will close issues that

No such issue currently exist. But one year from now, the bot will have closed this list of issues, averaging at less than 2 issues closed per month.

I have looked at them all, and by my estimation they are all closable by the bot. In two cases (71257, 69169) it looks like E-needs-mcve should be removed, but that's fine. The bot will indirectly help them get removed by bringing this to the attention of a human. (Of course you may remove the labels already now if you wish, now that I brought it up.)

Auditing

To ease auditing, the bot will report all its actions in a Zulip topic called triagebot closed issues in the t-release/triage stream.

Closing comment

The bot makes this comment when closing an issue:

triagebot

Hi and thank you for taking the time to report an issue to the Rust project. This issue has been labelled E-needs-mcve for more than 4 years. To help keep the issue inbox manageable, I will close this issue for now.

If an MCVE is available and E-needs-mcve was no longer applicable, please reopen this issue and remove the E-needs-mcve label by writing a comment containing this line: @rustbot label -E-needs-mcve

In fact, feel free to reopen this issue if you disagree with me for any reason. Also consider reporting it to the triagebot feedback topic in the t-release/triage stream so my heuristics can be improved.

Enselic commented 6 months ago

@jackh726 Hello! Before I close this PR I just wanted to check if you are still skeptical about doing it like this? Or have you changed your mind? If you have changed your mind I can keep working on it.

jackh726 commented 6 months ago

I'd be happy to have triagebot pick a few issues a week meeting this criteria and just posting them to zulip, to "ping" people to look at them.

From there, somebody can look to see if they 1) really have no repro at all (and if so, close) 2) have a repro but no MCVE, and maybe add like a MCVE-triaged label or something to make sure the bot doesn't get around to it (to be removed at some point when we don't need the bot)

jackh726 commented 6 months ago

I still don't think these issues are an automatic candidate for closing, but I do think they're a great candidate for "hey, these are questionable and probably easy to triage", so I don't think it's worth just outright dropping this!

Enselic commented 6 months ago

I think it makes a lot of sense to turn this PR into "auto-closing of old S-needs-repro issues". Any objections? (If not I'll implement this some time in the future.)

Kudos to everyone involved in getting S-needs-repro in place btw.

jackh726 commented 6 months ago

I still think it's not a great idea to auto close old issues like that. Would still be very happy to see this as a zulip ping to look at issues (and actually, that logic is useful for other things too, so writing it is useful regardless)

Enselic commented 3 months ago

This has slipped down on my prio list, and I don't see myself getting time to resume work on this in the near future unfortunately. I don't like to keep PRs open indefinitely, so I will close this for now.