dotnet / dotnet/arcade-services
Maestro subscriptions should support repo-origin filtering
- Dominant language
- C#
- Stars
- 86
- Forks
- 86
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 35
Description
Subscriptions from the VMR (VMR to repo or VMR to VMR) have a major flaw today: the lack of the ability to select assets to update based on repo origin. We have the ability to exclude assets based on name, and target only certain directories in flow to the VMR, but there is no way today to filter based on the repo origin. Note that this is available in `update-dependencies`, based on applying information from a merged manifest.
The problem with this state is that there are frequent cases where we want to select assets based on origin. In pre-VMR land, this was pretty simple. There was implicit filtering based on the repos that you subscribed to. Roslyn could simply NOT subscribe to the runtime, because it didn't depend on the runtime at build time. However, in the VMR this isn't possible. Instead, we're left with very complex subscriptions that attempt to exclude some set of assets across a number of repos.
To remedy this, I think we need a couple things:
- Repo origin becomes an asset field. This is optional, and would only be populated for new VMR builds.
- Excluded assets becomes a glob include/exclude that allows for repo origin filtering. E.g. `+runtime|*System.Text.Json` - I think it's important that this allows for include/exclude. When thinking about updating roslyn, for instance, we want command-line-api, but we don't want anything else. It seems more logical to include command-line-api than exclude everything that the VMR builds.
Doing this would drastically simplify a bunch of subscriptions, especially backflow.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing Maestro subscription filtering, asset metadata, and the merged-manifest handling used by update-dependencies. Define how optional repo-origin fields are populated for new VMR builds and how include/exclude glob syntax should select origins and asset names. Done means subscriptions can express origin-based inclusion and exclusion and the affected backflow cases are covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100