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
Problem
add_new_issue_to_triage_project.ymladds 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):Two notes on the expression:
issueseventsgithub.event.pull_requestis null, andstartsWith(null, …)evaluates false, so the negation passes and issues are still added. If that implicit behavior feels too subtle, the explicit form is equivalent:[puppetsync]prefix convention holding. It does today (that prefix is set by thecommit_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