Skip to content

Triage workflow should not auto-add Renovate and [puppetsync] PRs to the Org Triage board #97

Description

@silug

Problem

add_new_issue_to_triage_project.yml adds every newly opened issue and PR to the Org Triage board, including automated ones. The "New" column is meant to be a triage queue that gets emptied, but it fills with Renovate PRs and puppetsync sync PRs faster than it can be worked, and those get removed from the board by hand.

Scale of the noise: 68 of the 100 most recent open PRs org-wide are [puppetsync]-titled, and Renovate accounts for 260 of the 448 open items across the org. Neither needs triage — Renovate is managed separately, and sync PRs are mechanical and self-resolving.

The cost isn't just tidying. Because the queue is dominated by traffic nobody needs to read, the items that do need a human get lost in it — see the companion issue on outside contributions.

Proposed change

Add a job-level if: to the template (modules/profile/files/_github/workflows/add_new_issue_to_triage_project.yml):

jobs:
  add-to-project:
    name: Add issue to project
    runs-on: ubuntu-latest
    if: >-
      github.actor != 'renovate[bot]' &&
      !startsWith(github.event.pull_request.title, '[puppetsync]')
    steps:
      - uses: actions/add-to-project@v2
        with:
          project-url: https://github.com/orgs/simp/projects/11
          github-token: ${{ secrets.AUTO_TRIAGE_TOKEN }}

Two notes on the expression:

  • On issues events github.event.pull_request is null, and startsWith(null, …) evaluates false, so the negation passes and issues are still added. If that implicit behavior feels too subtle, the explicit form is equivalent:
        !(github.event_name == 'pull_request_target' &&
          startsWith(github.event.pull_request.title, '[puppetsync]'))
  • Filtering by title depends on the [puppetsync] prefix convention holding. It does today (that prefix is set by the commit_message / PR title in the sync configs), but it is a convention rather than something enforced — worth a comment in the template saying so, since a future config that omits the prefix would silently start adding sync PRs again.

dependabot[bot] could be added to the actor check pre-emptively, though nothing in the org currently uses it.

Deliberately not filtering PRs in general

An earlier version of this idea was "only auto-add issues, not PRs." That's wrong for this org: drive-by PRs from outside contributors arrive semi-regularly, often without an accompanying issue, and are exactly what the board needs to catch. The filter above targets automation by actor and title, not PRs as a class.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions