Faster idle and stale flags for community MRs (and retire the 120-day ping)

What does this MR do and why?

First of three stacked MRs reworking the post-creation lifecycle for community contribution MRs (labels, nudge, close). This one updates the labelling / detection layer:

  • Flag idle after 7 days of no activity (was 21).
  • Flag stale after 30 days (was 120).
  • Count a pushed commit as activity (the most recent commit, by any author), so a contributor who pushes without commenting is no longer treated as idle. This affects the shared idle clock used by the community-contribution report and the per-team "merge requests needing attention" reports.
  • Include draft MRs in idle/stale labelling.
  • Escalate to the engineering manager when an MR is stuck in the reviewer's court. The old 120-day, stale-triggered escalation in nudge-stale-community-contributions is replaced by a reviewer's-court one: when an MR is workflow::ready for review, was already pinged once (automation:reviewers-reminded), and is still idle after about 14 days, it pings the group engineering manager (or the contributor-success backup DRI) to find a reviewer, relabel to workflow::in dev, or close it. automation:reviewers-reminded is removed automatically when an MR returns to workflow::in dev (see spec/processor/community/reset_review_state_spec.rb), so a reviewer can be re-chased on later review rounds.
  • Drop idle MRs from the daily community-contribution report. Since idle is now flagged about 3x sooner, the report would otherwise flood MR coaches with idle MRs. The court-aware nudge (MR 2) handles idle authors directly, so the report now lists only untriaged MRs.

MR 2 (court-aware nudge) and MR 3 (auto-close) follow as stacked MRs.

Related to gitlab-org/developer-relations/contributor-success/team-task#1226 (closed)

Expected impact & dry-runs

  • Idle labelling triggers about 3x sooner and now includes drafts, so expect a one-time wave of newly-idle MRs on the first run. This MR applies labels only, plus the EM escalation comment for MRs that were already reviewer-reminded.
  • Validated end-to-end on local GDK: idle at 7d, stale at 30d, a recent-commit MR (including a gitlab-bot commit) correctly left active, the escalation pinging the right group EM, and the report no longer selecting idle or stale MRs.
  • Recommend a dry-run:custom against groups/9970 before merge to size the first labelling wave.
Edited by Sina Abadi

Merge request reports

Loading