Auto-assign workflow: load-balanced issue/PR routing (CODEOWNERS + custom Action) #3102
i-trytoohard
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The problem
Over the last 2 weeks we've had 150+ new issues and PRs — roughly 10 per day. Current state of the repo:
We have no
CODEOWNERSfile and no auto-assign workflow. Every assignment is manual. At 10/day this is unsustainable — things fall through the cracks, the wrong person gets assigned, or nothing gets assigned at all.Goal: load-balance humans. Not just "something is assigned" — but the right person, with the least current load.
Proposed design: two layers
Issues and PRs need different rules. One tool can't do both well.
Layer 1 — PRs:
CODEOWNERS(path-based review routing)A
CODEOWNERSfile maps file paths → owners. GitHub automatically requests review from the right person when a PR touches their area. This is correct by construction — a mobile PR never lands on a backend dev.Sketch (paths and owners to be confirmed by the team):
Pros: Zero maintenance, always correct, built into GitHub.
Cons: Does nothing for issues (issues have no file paths).
Layer 2 — Issues: custom load-balanced auto-assign Action
A GitHub Action that runs on issue events and assigns to the least-loaded person — not round-robin. Round-robin ignores current backlog; if someone's on PTO with 20 open issues, it keeps dumping on them.
Logic:
"Least-loaded" = a small script that queries the API for each candidate's open-issue count and picks the lowest.
Component → owner pool (using our existing
comp/*labels):comp/daemoncomp/desktopcomp/mobilecomp/clicomp/docs-siteWhy not just use
kentaro-m/auto-assign-action?It's round-robin. Cycles through people regardless of current load. At 10/day the drift kills you — one person ends up with 30 open issues, another with 5. The custom script is ~60 lines and actually checks who's drowning.
Confirmed team roster
Handles below are API-verified as real GitHub accounts.
Input needed from the team
packages/,scripts/,test/,.github/route?)needs-triageunlabeled issues auto-assign at all, or wait for a human to label them first? (Auto-assign reduces 0-assignee issues but may misroute.)Drop your thoughts below. Once we agree on the mapping, we'll wire up the
CODEOWNERS+ Action in one PR.All reactions