mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #78] [MERGED] ci(assign-reviewers): self-enroll this repo + seed the expertise map from approval history #90
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/78
Author: @mattmillerai
Created: 7/26/2026
Status: ✅ Merged
Merged: 7/26/2026
Merged by: @mattmillerai
Base:
main← Head:matt/self-enroll-assign-reviewers📝 Commits (2)
5dd39e7ci(assign-reviewers): self-enroll this repo + seed the expertise map from approval history7f6259eci(assign-reviewers): skip fork PRs cleanly and close two expertise-map glob gaps📊 Changes
3 files changed (+210 additions, -3 deletions)
View changed files
➕
.github/reviewers.yml(+131 -0)➕
.github/workflows/ci-assign-reviewers.yml(+76 -0)📝
AGENTS.md(+3 -3)📄 Description
17 open PRs in this repo had no assignee, so nothing routed them to anyone who could approve them. This repo has shipped an expertise-aware, load-balanced router since BE-1943 and never enrolled itself in it.
Worth stating up front, because the name misleads:
assign-reviewers.ymlwrites the ASSIGNEE field, not reviewer requests. From its own header — "this org routes/alerts people via the ASSIGNEE field". That is precisely the routing that was missing here.Why the map is seeded from approvals, not git history
Nearly every commit on
mainhere has a single author, so authorship carries no routing signal at all. Scoring it would put one name in every bucket. The buckets are instead populated from who has actually approved merged PRs in the matching area:assign-*runs_on/ self-hostedThis is a prerequisite for #63, not a duplicate of it
refresh-reviewers(#63, BE-4116) treats the committedrules:globs as its bucket definitions and only re-scores membership — it cannot bootstrap a map from nothing. Two warnings are recorded in the file itself:default_poolis load-bearingSelection drops the PR author, so a bucket whose only member is the author empties.
default_poolis three proven approvers and deliberately excludes the person who opens most PRs here.Verification
The reusable parses
reviewers.ymlwith a hand-rolled minimal YAML parser (js-yaml isn't available insidegithub-script), so standard YAML validity is not sufficient. I extracted that parser and itsglobToRegExp/matchesAnyverbatim fromassign-reviewers.ymland drove the committed map through them:paths+reviewers;default_poolparsed correctly.default_pool.default_pool.actionlintclean; all 8 referenced logins confirmed repo collaborators (GitHub silently drops an unassignable login, so this is worth checking rather than assuming).The two deviations are deliberate human overrides, not map errors:
That retro pass is also what caught a real gap:
ci-assign-reviewers.ymldoes not matchassign-*.yml, so this repo's own routing caller would have fallen through todefault_pool. It now names itself.num_reviewers: 1matches how PRs here are actually tracked — one named owner, not a pair. Easy to raise if single-owner PRs start stalling.ELI5
Pull requests here were piling up with nobody's name on them, so nobody knew they were meant to look. The repo already had a robot that puts the right person's name on a PR based on which files it touches — it had just never been switched on for itself.
This switches it on and gives it the phone book. The phone book is built from who has actually approved this kind of change before, not from who wrote the code, because one person wrote nearly all the code here and that tells you nothing about who should check it.
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.