Skip to content

Navigation Menu

Sign in
Sign up

Auto-assign workflow: load-balanced issue/PR routing (CODEOWNERS + custom Action) #3102

i-trytoohard started this conversation in Ideas
Discussion options

The problem

Over the last 2 weeks we've had 150+ new issues and PRs — roughly 10 per day. Current state of the repo:

Open Unassigned
Issues 200 85 (42%)
PRs 100 41 (41%)

We have no CODEOWNERS file 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 CODEOWNERS file 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):

# Backend (Go daemon, CLI, storage, lifecycle)
/backend/ @harshitsinghbhandari @neversettle17-101
/backend/internal/cli/ @whoisasx @harshitsinghbhandari
/backend/internal/notify/ @whoisasx
# Frontend (Electron + React supervisor, landing page)
/frontend/ @codebanditssss @JAYATIAHUJA
/frontend/src/landing/ @codebanditssss @JAYATIAHUJA
# Mobile bridge
/backend/internal/mobilebridge/ @Vaibhaav-Tiwari
# Docs
/docs/ @somewherelostt

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:

Issue opened
 → add needs-triage label
 → assign to least-loaded person in the triage pool (all eng)
Issue labeled comp/*
 → reassign to least-loaded person in that component's owner pool

"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):

Label Pool
comp/daemon @harshitsinghbhandari @neversettle17-101
comp/desktop @codebanditssss @JAYATIAHUJA @Vaibhaav-Tiwari
comp/mobile @Vaibhaav-Tiwari
comp/cli @harshitsinghbhandari @whoisasx
comp/docs-site @codebanditssss @JAYATIAHUJA
unlabeled (triage) rotation of all engineers

Why 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.

Name Handle Area
Harshit @harshitsinghbhandari backend + releases
Khushi @codebanditssss frontend + landing
Jayati @JAYATIAHUJA frontend
Vaibhav Tiwari @Vaibhaav-Tiwari mobile (major), some FE/BE
Dhruv @illegalcall all-round reviewer
Aditi @neversettle17-101 core-backend
Adil @whoisasx SCM, notifications
Maaz @somewherelostt content
Pulkit @Pulkit7070 reviews

Input needed from the team

  1. Component → owner mapping — is the table above right? Anything missing or misplaced?
  2. CODEOWNERS paths — are the path globs correct? What's missing? (e.g., where do packages/, scripts/, test/, .github/ route?)
  3. Dhruv (@illegalcall) in the issue triage rotation, or reviewer-only? He's the all-round reviewer — adding triage noise might not be wanted.
  4. Should needs-triage unlabeled issues auto-assign at all, or wait for a human to label them first? (Auto-assign reduces 0-assignee issues but may misroute.)
  5. PTO / load caps — should we skip someone if they have >N open issues? What's N?
  6. Anyone I missed? If someone should be in a pool and isn't listed, call it out.

Drop your thoughts below. Once we agree on the mapping, we'll wire up the CODEOWNERS + Action in one PR.

You must be logged in to vote

Replies: 0 comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Ideas
Labels
None yet
1 participant

AltStyle によって変換されたページ (->オリジナル) /