prioritization.rs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. use crate::github;
  2. use crate::meeting::{Meeting, Query, QueryMap, Step};
  3. pub fn prepare_meeting<'a>() -> Meeting<Step<'a>> {
  4. Meeting {
  5. steps: vec![
  6. unpri_i_prioritize(),
  7. regressions(),
  8. nominations(),
  9. prs_waiting_on_team(),
  10. agenda(),
  11. final_review(),
  12. ],
  13. }
  14. }
  15. pub fn unpri_i_prioritize<'a>() -> Step<'a> {
  16. let mut queries = Vec::new();
  17. queries.push(QueryMap {
  18. name: "unpri_i_prioritize.all",
  19. query: github::Query {
  20. kind: github::QueryKind::List,
  21. filters: vec![("state", "open")],
  22. include_labels: vec!["I-prioritize"],
  23. exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
  24. },
  25. });
  26. queries.push(QueryMap {
  27. name: "unpri_i_prioritize.t_compiler",
  28. query: github::Query {
  29. kind: github::QueryKind::List,
  30. filters: vec![("state", "open")],
  31. include_labels: vec!["I-prioritize", "T-compiler"],
  32. exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
  33. },
  34. });
  35. queries.push(QueryMap {
  36. name: "unpri_i_prioritize.libs_impl",
  37. query: github::Query {
  38. kind: github::QueryKind::List,
  39. filters: vec![("state", "open")],
  40. include_labels: vec!["I-prioritize", "libs-impl"],
  41. exclude_labels: vec!["P-critical", "P-high", "P-medium", "P-low"],
  42. },
  43. });
  44. Step {
  45. name: "unpri_i_prioritize",
  46. actions: vec![Query {
  47. repo: "rust-lang/rust",
  48. queries,
  49. }],
  50. }
  51. }
  52. pub fn regressions<'a>() -> Step<'a> {
  53. let mut queries = Vec::new();
  54. queries.push(QueryMap {
  55. name: "regressions.stable_to_beta",
  56. query: github::Query {
  57. kind: github::QueryKind::List,
  58. filters: vec![("state", "open")],
  59. include_labels: vec!["regression-from-stable-to-beta"],
  60. exclude_labels: vec![
  61. "P-critical",
  62. "P-high",
  63. "P-medium",
  64. "P-low",
  65. "T-infra",
  66. "T-release",
  67. "T-libs",
  68. ],
  69. },
  70. });
  71. queries.push(QueryMap {
  72. name: "regressions.stable_to_nightly",
  73. query: github::Query {
  74. kind: github::QueryKind::List,
  75. filters: vec![("state", "open")],
  76. include_labels: vec!["regression-from-stable-to-nightly"],
  77. exclude_labels: vec![
  78. "P-critical",
  79. "P-high",
  80. "P-medium",
  81. "P-low",
  82. "T-infra",
  83. "T-release",
  84. "T-libs",
  85. ],
  86. },
  87. });
  88. queries.push(QueryMap {
  89. name: "regressions.stable_to_stable",
  90. query: github::Query {
  91. kind: github::QueryKind::List,
  92. filters: vec![("state", "open")],
  93. include_labels: vec!["regression-from-stable-to-stable"],
  94. exclude_labels: vec![
  95. "P-critical",
  96. "P-high",
  97. "P-medium",
  98. "P-low",
  99. "T-infra",
  100. "T-release",
  101. "T-libs",
  102. ],
  103. },
  104. });
  105. Step {
  106. name: "regressions",
  107. actions: vec![Query {
  108. repo: "rust-lang/rust",
  109. queries,
  110. }],
  111. }
  112. }
  113. pub fn nominations<'a>() -> Step<'a> {
  114. let mut queries = Vec::new();
  115. queries.push(QueryMap {
  116. name: "nominations.stable_nominated",
  117. query: github::Query {
  118. kind: github::QueryKind::List,
  119. filters: vec![],
  120. include_labels: vec!["stable-nominated"],
  121. exclude_labels: vec!["stable-accepted"],
  122. },
  123. });
  124. queries.push(QueryMap {
  125. name: "nominations.beta_nominated",
  126. query: github::Query {
  127. kind: github::QueryKind::List,
  128. filters: vec![],
  129. include_labels: vec!["beta-nominated"],
  130. exclude_labels: vec!["beta-accepted"],
  131. },
  132. });
  133. queries.push(QueryMap {
  134. name: "nominations.i_nominated",
  135. query: github::Query {
  136. kind: github::QueryKind::List,
  137. filters: vec![("state", "open")],
  138. include_labels: vec!["I-nominated"],
  139. exclude_labels: vec![],
  140. },
  141. });
  142. queries.push(QueryMap {
  143. name: "nominations.i_nominated_t_compiler",
  144. query: github::Query {
  145. kind: github::QueryKind::List,
  146. filters: vec![("state", "open")],
  147. include_labels: vec!["I-nominated", "T-compiler"],
  148. exclude_labels: vec![],
  149. },
  150. });
  151. queries.push(QueryMap {
  152. name: "nominations.i_nominated_libs_impl",
  153. query: github::Query {
  154. kind: github::QueryKind::List,
  155. filters: vec![("state", "open")],
  156. include_labels: vec!["I-nominated", "libs-impl"],
  157. exclude_labels: vec![],
  158. },
  159. });
  160. Step {
  161. name: "nominations",
  162. actions: vec![Query {
  163. repo: "rust-lang/rust",
  164. queries,
  165. }],
  166. }
  167. }
  168. pub fn prs_waiting_on_team<'a>() -> Step<'a> {
  169. let mut queries = Vec::new();
  170. queries.push(QueryMap {
  171. name: "prs_waiting_on_team.all",
  172. query: github::Query {
  173. kind: github::QueryKind::List,
  174. filters: vec![("state", "open")],
  175. include_labels: vec!["S-waiting-on-team"],
  176. exclude_labels: vec![],
  177. },
  178. });
  179. queries.push(QueryMap {
  180. name: "prs_waiting_on_team.t_compiler",
  181. query: github::Query {
  182. kind: github::QueryKind::List,
  183. filters: vec![("state", "open")],
  184. include_labels: vec!["S-waiting-on-team", "T-compiler"],
  185. exclude_labels: vec![],
  186. },
  187. });
  188. queries.push(QueryMap {
  189. name: "prs_waiting_on_team.libs_impl",
  190. query: github::Query {
  191. kind: github::QueryKind::List,
  192. filters: vec![("state", "open")],
  193. include_labels: vec!["S-waiting-on-team", "libs-impl"],
  194. exclude_labels: vec![],
  195. },
  196. });
  197. Step {
  198. name: "prs_waiting_on_team",
  199. actions: vec![Query {
  200. repo: "rust-lang/rust",
  201. queries,
  202. }],
  203. }
  204. }
  205. pub fn agenda<'a>() -> Step<'a> {
  206. let mut queries = Vec::new();
  207. let mut actions = Vec::new();
  208. queries.push(QueryMap {
  209. name: "mcp.seconded",
  210. query: github::Query {
  211. kind: github::QueryKind::List,
  212. filters: vec![("state", "open")],
  213. include_labels: vec!["major-change", "final-comment-period"],
  214. exclude_labels: vec![],
  215. },
  216. });
  217. queries.push(QueryMap {
  218. name: "mcp.new_not_seconded",
  219. query: github::Query {
  220. kind: github::QueryKind::List,
  221. filters: vec![("state", "open")],
  222. include_labels: vec!["major-change", "to-announce"],
  223. exclude_labels: vec!["final-comment-period"],
  224. },
  225. });
  226. queries.push(QueryMap {
  227. name: "mcp.old_not_seconded",
  228. query: github::Query {
  229. kind: github::QueryKind::List,
  230. filters: vec![("state", "open")],
  231. include_labels: vec!["major-change"],
  232. exclude_labels: vec!["to-announce", "final-comment-period"],
  233. },
  234. });
  235. actions.push(Query {
  236. repo: "rust-lang/compiler-team",
  237. queries,
  238. });
  239. let mut queries = Vec::new();
  240. queries.push(QueryMap {
  241. name: "beta_nominated.t_compiler",
  242. query: github::Query {
  243. kind: github::QueryKind::List,
  244. filters: vec![],
  245. include_labels: vec!["beta-nominated", "T-compiler"],
  246. exclude_labels: vec!["beta-accepted"],
  247. },
  248. });
  249. queries.push(QueryMap {
  250. name: "beta_nominated.libs_impl",
  251. query: github::Query {
  252. kind: github::QueryKind::List,
  253. filters: vec![],
  254. include_labels: vec!["beta-nominated", "libs-impl"],
  255. exclude_labels: vec!["beta-accepted"],
  256. },
  257. });
  258. queries.push(QueryMap {
  259. name: "beta_nominated.t_rustdoc",
  260. query: github::Query {
  261. kind: github::QueryKind::List,
  262. filters: vec![],
  263. include_labels: vec!["beta-nominated", "T-rustdoc"],
  264. exclude_labels: vec!["beta-accepted"],
  265. },
  266. });
  267. queries.push(QueryMap {
  268. name: "stable_nominated.t_compiler",
  269. query: github::Query {
  270. kind: github::QueryKind::List,
  271. filters: vec![],
  272. include_labels: vec!["stable-nominated", "T-compiler"],
  273. exclude_labels: vec!["stable-accepted"],
  274. },
  275. });
  276. queries.push(QueryMap {
  277. name: "stable_nominated.t_rustdoc",
  278. query: github::Query {
  279. kind: github::QueryKind::List,
  280. filters: vec![],
  281. include_labels: vec!["stable-nominated", "T-rustdoc"],
  282. exclude_labels: vec!["stable-accepted"],
  283. },
  284. });
  285. queries.push(QueryMap {
  286. name: "stable_nominated.libs_impl",
  287. query: github::Query {
  288. kind: github::QueryKind::List,
  289. filters: vec![],
  290. include_labels: vec!["stable-nominated", "libs-impl"],
  291. exclude_labels: vec!["stable-accepted"],
  292. },
  293. });
  294. queries.push(QueryMap {
  295. name: "prs_waiting_on_team.t_compiler",
  296. query: github::Query {
  297. kind: github::QueryKind::List,
  298. filters: vec![("state", "open")],
  299. include_labels: vec!["S-waiting-on-team", "T-compiler"],
  300. exclude_labels: vec![],
  301. },
  302. });
  303. queries.push(QueryMap {
  304. name: "prs_waiting_on_team.libs_impl",
  305. query: github::Query {
  306. kind: github::QueryKind::List,
  307. filters: vec![("state", "open")],
  308. include_labels: vec!["S-waiting-on-team", "libs-impl"],
  309. exclude_labels: vec![],
  310. },
  311. });
  312. queries.push(QueryMap {
  313. name: "issues_of_note.p_critical",
  314. query: github::Query {
  315. kind: github::QueryKind::List,
  316. filters: vec![("state", "open")],
  317. include_labels: vec!["T-compiler", "P-critical"],
  318. exclude_labels: vec![],
  319. },
  320. });
  321. queries.push(QueryMap {
  322. name: "issues_of_note.unassigned_p_critical",
  323. query: github::Query {
  324. kind: github::QueryKind::List,
  325. filters: vec![("state", "open"), ("no", "assignee")],
  326. include_labels: vec!["T-compiler", "P-critical"],
  327. exclude_labels: vec![],
  328. },
  329. });
  330. queries.push(QueryMap {
  331. name: "issues_of_note.p_high",
  332. query: github::Query {
  333. kind: github::QueryKind::List,
  334. filters: vec![("state", "open")],
  335. include_labels: vec!["T-compiler", "P-high"],
  336. exclude_labels: vec![],
  337. },
  338. });
  339. queries.push(QueryMap {
  340. name: "issues_of_note.unassigned_p_high",
  341. query: github::Query {
  342. kind: github::QueryKind::List,
  343. filters: vec![("state", "open"), ("no", "assignee")],
  344. include_labels: vec!["T-compiler", "P-high"],
  345. exclude_labels: vec![],
  346. },
  347. });
  348. // - [N regression-from-stable-to-stable](https://github.com/rust-lang/rust/labels/regression-from-stable-to-stable)
  349. // - [M of those are not prioritized](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-stable+-label%3AP-critical+-label%3AP-high+-label%3AP-medium+-label%3AP-low).
  350. //
  351. // There are N (more|less) `P-critical` issues and M (more|less) `P-high` issues in comparison with last week.
  352. queries.push(QueryMap {
  353. name: "issues_of_note.regression_from_stable_to_beta",
  354. query: github::Query {
  355. kind: github::QueryKind::List,
  356. filters: vec![("state", "open")],
  357. include_labels: vec!["regression-from-stable-to-beta"],
  358. exclude_labels: vec![],
  359. },
  360. });
  361. queries.push(QueryMap {
  362. name: "issues_of_note.regression_from_stable_to_nightly",
  363. query: github::Query {
  364. kind: github::QueryKind::List,
  365. filters: vec![("state", "open")],
  366. include_labels: vec!["regression-from-stable-to-nightly"],
  367. exclude_labels: vec![],
  368. },
  369. });
  370. queries.push(QueryMap {
  371. name: "issues_of_note.regression_from_stable_to_stable",
  372. query: github::Query {
  373. kind: github::QueryKind::List,
  374. filters: vec![("state", "open")],
  375. include_labels: vec!["regression-from-stable-to-stable"],
  376. exclude_labels: vec![],
  377. },
  378. });
  379. queries.push(QueryMap {
  380. name: "p_critical.t_compiler",
  381. query: github::Query {
  382. kind: github::QueryKind::List,
  383. filters: vec![("state", "open")],
  384. include_labels: vec!["T-compiler", "P-critical"],
  385. exclude_labels: vec![],
  386. },
  387. });
  388. queries.push(QueryMap {
  389. name: "p_critical.libs_impl",
  390. query: github::Query {
  391. kind: github::QueryKind::List,
  392. filters: vec![("state", "open")],
  393. include_labels: vec!["libs-impl", "P-critical"],
  394. exclude_labels: vec![],
  395. },
  396. });
  397. queries.push(QueryMap {
  398. name: "p_critical.t_rustdoc",
  399. query: github::Query {
  400. kind: github::QueryKind::List,
  401. filters: vec![("state", "open")],
  402. include_labels: vec!["T-rustdoc", "P-critical"],
  403. exclude_labels: vec![],
  404. },
  405. });
  406. queries.push(QueryMap {
  407. name: "beta_regressions.unassigned_p_high",
  408. query: github::Query {
  409. kind: github::QueryKind::List,
  410. filters: vec![("state", "open"), ("no", "assignee")],
  411. include_labels: vec!["regression-from-stable-to-beta", "P-high"],
  412. exclude_labels: vec!["T-infra", "T-release"],
  413. },
  414. });
  415. queries.push(QueryMap {
  416. name: "nightly_regressions.unassigned_p_high",
  417. query: github::Query {
  418. kind: github::QueryKind::List,
  419. filters: vec![("state", "open"), ("no", "assignee")],
  420. include_labels: vec!["regression-from-stable-to-nightly", "P-high"],
  421. exclude_labels: vec!["T-infra", "T-release"],
  422. },
  423. });
  424. queries.push(QueryMap {
  425. name: "i_nominated.t_compiler",
  426. query: github::Query {
  427. kind: github::QueryKind::List,
  428. filters: vec![("state", "open")],
  429. include_labels: vec!["I-nominated", "T-compiler"],
  430. exclude_labels: vec![],
  431. },
  432. });
  433. queries.push(QueryMap {
  434. name: "i_nominated.libs_impl",
  435. query: github::Query {
  436. kind: github::QueryKind::List,
  437. filters: vec![("state", "open")],
  438. include_labels: vec!["I-nominated", "libs-impl"],
  439. exclude_labels: vec![],
  440. },
  441. });
  442. actions.push(Query {
  443. repo: "rust-lang/rust",
  444. queries,
  445. });
  446. Step {
  447. name: "agenda",
  448. actions,
  449. }
  450. }
  451. pub fn final_review<'a>() -> Step<'a> {
  452. Step {
  453. name: "final_review",
  454. actions: vec![],
  455. }
  456. }