Route vendored-sync drift issues to area triage via manifest-declared labels - #55520
Merged
Conversation
Every entry in eng/vendored-files.json is 'dotnet test' <-> Microsoft.Testing.Platform shared source, so drift issues opened by the vendored-files workflow now also carry the MTP area label and land in the normal area triage queue. - Apply both labels on issue creation and backfill the area label on issues opened before this change. - Create the area label only when missing so the repo-owned description/color is not overwritten by the workflow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 577f0b32-950f-4628-bd19-76ff5dbcabeb
The drift detector is upstream-agnostic (a source can point at any repo), so hard-coding the MTP area label would misroute a future entry vendored for a different area. Move the area labels into eng/vendored-files.json instead. - Add manifest-level 'default_area_labels' plus an optional per-entry 'area_labels' override; validate both. - Resolve labels per entry when creating issues, backfilling labels on existing issues, and ensuring labels exist. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 577f0b32-950f-4628-bd19-76ff5dbcabeb
|
Azure Pipelines: Successfully started running 2 pipeline(s). 1 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the vendored-file drift detector workflow so drift issues are routed into the correct area triage queues by applying area labels that are declared in the eng/vendored-files.json manifest (with a manifest-level default and per-entry overrides), rather than hard-coding labels in the script.
Changes:
- Add
default_area_labelsat the manifest level, with optional per-entryarea_labelsoverrides. - Update the drift detector script to resolve per-entry label sets, apply them on issue create, and backfill missing labels on existing open drift issues.
- Update documentation and workflow comments to describe the new label-routing behavior.
Show a summary per file
| File | Description |
|---|---|
| eng/vendored-files.md | Document manifest schema changes and clarify how/when to set area_labels. |
| eng/vendored-files.json | Add default_area_labels for the current set of dotnet test/MTP vendored entries. |
| .github/workflows/check-vendored-files.yml | Update workflow commentary to note issues include area labels from the manifest. |
| .github/scripts/check_vendored_files.py | Resolve/apply area labels per entry, backfill missing labels on existing issues, and adjust label creation behavior. |
Copilot's findings
- Files reviewed: 4/4 changed files
- Comments generated: 2
Reject non-list area label declarations during manifest validation, and make label setup enumerate existing labels before creating only the missing ones. Surface gh failures and stop the check instead of continuing with incomplete label setup. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 577f0b32-950f-4628-bd19-76ff5dbcabeb
Member
Author
|
@marcpopMSFT could you please review? |
Member
I'm not really familiar with what you're doing here so not sure how much help I can be. I had copilot do a local review and asked a few questions and it's going to add those comments to the review. |
marcpopMSFT
reviewed
Aug 5, 2026
Require manifest area labels to exist in the repository taxonomy and replace stale Area-* labels on existing sync issues while preserving unrelated labels. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 131255e3-e14c-4fc3-91f6-00ff64afb2a6
marcpopMSFT
approved these changes
Aug 10, 2026
Evangelink
enabled auto-merge
August 26, 2026 14:15
Evangelink
had a problem deploying
to
copilot-pat-pool
August 26, 2026 14:16 — with
GitHub Actions
Failure
This was referenced Aug 26, 2026
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.
Follow-up to the vendored-files drift detector, prompted by @marcpopMSFT's question on #55471: drift issues only carried
area-vendored-sync, so they never reached an area triage queue.Every entry in
eng/vendored-files.jsonisdotnet test↔ Microsoft.Testing.Platform shared source, so those issues now also getArea-dotnet test (MTP).The detector itself is upstream-agnostic — each source declares its own
repo/ref/path, so it can track a file vendored from any repository. Hard-coding the MTP label in the script would therefore silently misroute a future entry vendored for a different area. Area routing is manifest data instead:eng/vendored-files.jsongains a manifest-leveldefault_area_labels, plus an optional per-entryarea_labelsoverride.Entry.issue_labelsresolves the label set per entry; issue creation, label backfill, and label creation all go through it.ensure_labelstill force-creates the workflow-owned sync label, but only creates area labels when missing — the repo's triage taxonomy owns their description/colour, and the workflow must not overwrite it.validaterejects empty/non-stringarea_labelsand re-declaring the sync label.Docs updated: manifest schema, an explicit note that a differently-scoped entry must set
area_labels, and a step in Adding a new vendored file.Testing
check_vendored_files.py validatepasses (30 entries, 38 sources).validaterejecting malformedarea_labels.check --dry-runagainstmicrosoft/testfx: 4 drifted, 0 errors, each resolvingarea-vendored-sync, Area-dotnet test (MTP).No product code is touched — this only affects the labels on issues the weekly workflow opens.