Add issue triager: auto-label and auto-assign new issues#597
Draft
huzaifa-d wants to merge 4 commits into
Draft
Conversation
Adds a GitHub Actions workflow that assists issue triage on new/edited issues: - .github/labeler.yml: regex config for github/issue-labeler@v3.4 that applies OS-*, Container-*, and Area-* labels based on issue title+body. Patterns derived from previously triaged issues. Each label uses a single OR-alternation regex (the action ANDs multiple list entries). sync-labels: 0 means labels are only added, never removed, so human triage decisions are preserved. Issue-type labels are left to the issue templates. - .github/workflows/Issue.Labeler.yml: runs the labeler, then an actions/github-script step that auto-assigns area owners by keyword while preserving existing assignees. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an issue-triage GitHub Actions workflow to automatically apply area/OS/backend labels (via github/issue-labeler) and auto-assign likely area owners (via actions/github-script) when issues are opened or edited.
Changes:
- Introduces
.github/workflows/Issue.Labeler.ymlto label and assign issues onopened/edited. - Adds
.github/labeler.ymlcontaining regex→label mappings for OS/Container/Area labels.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/Issue.Labeler.yml | New workflow that runs labeler + owner auto-assignment on issue events. |
| .github/labeler.yml | New regex configuration mapping issue title/body matches to OS/Container/Area labels. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 4
- Review effort level: Low
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
The assignment step now re-fetches the issue's labels (to observe what the labeler step applied) and removes Needs-Triage when the issue has an OS-*/Container-*/Area-* label or an assigned owner. A 404 on removal (label already gone via a concurrent run) is ignored. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move the OS-* labeling and Needs-Triage-on-assign behavior out of the policy service and into the issue-labeler GitHub Action so triage has a single owner: - Remove the OS-Linux/MacOS/Windows rules from labelManagement.issueOpened.yml. The workflow's regex already applies OS-* labels across all issue types (not just Bug reports). - Delete labelManagement.issueAssigned.yml. Its only task removed Needs-Triage on assignment; the workflow now triggers on 'assigned' and clears Needs-Triage there, preserving that behavior for manual assignments too. The policy service keeps unrelated behavior: adding Needs-Triage on open, Issue-* type labels, close cleanup, author-feedback flow, and PR labelSync. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bbonaby
reviewed
Jul 1, 2026
| sync-labels: 0 | ||
| repo-token: ${{ github.token }} | ||
|
|
||
| - name: Assign owners and clear Needs-Triage |
Collaborator
There was a problem hiding this comment.
issue: can we see if we can create teams and then assign items to the teams instead of single users. We can create a team for each backend, and then one for MXC core (which would be things for SDK functionality, infrastructure and non backend specific MXC things).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
.github/copilot-instructions.md.Summary
Adds an issue-triage GitHub Action and consolidates overlapping label logic out of the policy service into it, so triage labeling + assignment has a single owner.
New: issue-triage Action
On issue
opened/edited/assigned:github/issue-labeler@v3.4using regex on title + body →OS-*,Container-*,Area-*. Patterns derived from previously triaged issues. Each label uses a single OR-alternation regex (the action ANDs multiple list entries).actions/github-script@v7(keyword match on title + body).Needs-Triageonce auto-triaged — an area label was applied or an owner is assigned..github/labeler.yml.github/workflows/Issue.Labeler.ymlNeeds-TriageremovalAssignee mapping
@bbonaby@SohamDas2021@jsidewhite@huzaifa-d@adpa-ms@richiemsftPolicy service consolidation
To avoid two systems doing overlapping triage, the following moved from
.github/policies/into the Action:OS-Linux/MacOS/Windowsrules fromlabelManagement.issueOpened.yml— the Action's regex appliesOS-*across all issue types, not just Bug reports.labelManagement.issueAssigned.yml— its only task removedNeeds-Triageon assign. The Action now triggers onassignedand clearsNeeds-Triagethere, preserving the behavior for manual assignments too.The policy service keeps all unrelated behavior: adding
Needs-Triageon open,Issue-*type labels, close cleanup, the author-feedback flow, and PRlabelSync.Design notes
sync-labels: 0— labels are only added, never removed, so human triage decisions are preserved.Issue-*type labels stay with the templates/policy (out of scope here).GITHUB_TOKENactions cannot recursively trigger workflows, so the Action's ownaddAssignees/label changes don't re-run it; only human events do.cc @SohamDas2021 (original author of the
.github/policies/label management) for review of the consolidation.