mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #267] [MERGED] feat(assign-reviewers): route by expertise with shared history caching #270
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#270
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/267
Author: @mattmillerai
Created: 9/8/2026
Status: ✅ Merged
Merged: 9/8/2026
Merged by: @mattmillerai
Base:
main← Head:matt/intelligent-pr-assignment📝 Commits (2)
4681eeffix(assign-reviewers): route owners by relevant review experienced1a219afeat(assign-reviewers): reuse scheduled review history snapshots📊 Changes
6 files changed (+759 additions, -109 deletions)
View changed files
➕
.github/assign-reviewers/README.md(+17 -0)➕
.github/assign-reviewers/tests/assignment.test.cjs(+275 -0)📝
.github/workflows/assign-reviewers.yml(+318 -79)➕
.github/workflows/test-assign-reviewers.yml(+27 -0)📝
README.md(+1 -1)📝
docs/callers/assign-reviewers.md(+121 -29)📄 Description
ELI5
Assign PRs to people who know the changed code. The workflow now uses previous human approvals alongside the ownership map, adds another person only when they cover different code, and can reuse a shared review-history snapshot instead of downloading that history for every PR.
Motivation
The existing selector collapses every matching path rule into one pool and then ranks people by open assignment count. For code outside the map, it uses a general fallback pool without looking for relevant review experience. A small change in one area can therefore influence who owns a much larger change elsewhere, while a two-person request can notify two people with the same coverage. Recent human approvals provide a direct, auditable source of routing evidence for unmapped files.
Provenance
node --test .github/assign-reviewers/tests/*.test.cjs: 64 passed;python3 -m unittest discover -s .github/refresh-reviewers/tests -p 'test_*.py': 48 passed;actionlint .github/workflows/assign-reviewers.yml .github/workflows/test-assign-reviewers.yml: passed;python3 .github/workflow-pins/check_workflow_pins.py: passed;python3 .github/agents-md-integrity/check_agents_md.py --root .: passed with existing advisory warnings about length and ownership;git diff --check: passed.Summary
num_reviewersas a maximum. Remove random growth-pool substitution; use one explicitly described fallback owner when no path evidence exists.generate_historymode using the same collector: a scheduled/manual default-branch job publishes a neutral JSON manifest as a two-day Actions artifact.history_workflowopts PR routing into snapshots no older than 12 hours. Missing, stale, invalid, or inaccessible artifacts use live history.Rollout and limits
Existing live-only callers need only the usual reviewed SHA bump; the workflow remains self-contained. Cached routing adds a scheduled/manual job calling the same reusable with
generate_history: trueand setshistory_workflowon the PR job. The caller guide includes complete six-hour schedule wiring and initial manual seeding instructions. The App needs Actions read permission for artifact access. Author allowlist scoping remains in place. Review history is a bounded sample and directory proximity is a heuristic; explicit path rules remain the maintained ownership authority. History failures discard partial evidence and use the configured map. No caller rollout or live assignment was performed as part of local validation.Test plan
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.