Rewrite framework dependency diff URLs to dotnet/dotnet (VMR)#2168
Merged
LoopedBard3 merged 3 commits intoMay 4, 2026
Merged
Conversation
After the move to the VMR (dotnet/dotnet), the .NET runtime and ASP.NET runtime are built from dotnet/dotnet, and the commit hashes Crank captures are dotnet/dotnet commits. The Crank agent still hard-codes the old component-repo URLs (dotnet/aspnetcore, dotnet/runtime) for the synthetic Microsoft.AspNetCore.App and Microsoft.NETCore.App framework dependencies, so the rendered compare URLs in regression issues 404 (e.g. issue dotnet/aspnetcore#66568). Rewrite the URL at template-render time inside the Changes block of all five issue-body templates (rps, published-size, start-time in regressions.config.yml; download-size, first-ui in regressions.blazor.config.yml). The rewrite triggers when the dependency name is one of the two synthetic framework names, or when the stored RepositoryUrl is one of the legacy component-repo URLs. Other dependencies (e.g. application-owned assemblies like Antiforgery.dll, or already-correct dotnet/dotnet entries from post-VMR assembly metadata) are left untouched. Verified by parsing both YAML configs through Fluid and rendering each template against synthetic regressions covering all five diff cases: 0 leftover dotnet/aspnetcore or dotnet/runtime URLs, preserved aspnet/Benchmarks URL on application assemblies, framework deps correctly attributed to dotnet/dotnet. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates RegressionBot issue-body templates so dependency diff links for framework-level commits (e.g., Microsoft.AspNetCore.App / Microsoft.NETCore.App) point at the VMR (dotnet/dotnet) instead of legacy component repos, preventing 404 compare URLs in generated issues.
Changes:
- Rewrites rendered compare URLs to
https://github.com/dotnet/dotnetwhen dependency names indicate framework rollups or whenRepositoryUrlis one of the legacy component repo URLs. - Applies the rewrite consistently across all affected “Changes” tables in the regression issue templates (rps, published-size, start-time, download-size, first-ui).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| build/regressions.config.yml | Updates the rps/published-size/start-time issue templates to rewrite framework dependency compare links to dotnet/dotnet. |
| build/regressions.blazor.config.yml | Updates the Blazor download-size/first-ui issue templates to rewrite framework dependency compare links to dotnet/dotnet. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
DrewScoggins
approved these changes
May 4, 2026
Contributor
DrewScoggins
left a comment
There was a problem hiding this comment.
LGTM. Assuming these are the only two templates that we need to update.
Contributor
Author
|
Yup, these were the only ones I noticed to be updated. |
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.
Why
The
RegressionBotissues filed underdotnet/aspnetcoreinclude a per-dependency Changes table whose diff links 404 forMicrosoft.AspNetCore.AppandMicrosoft.NETCore.App. Concrete example: dotnet/aspnetcore#66568 shows three rows that share the same VMR commit hashes (0188adf...4c4e7f4):Microsoft.AspNetCore.Antiforgery.dlldotnet/dotnet/compare/0188adf...4c4e7f4[AssemblyMetadata])Microsoft.AspNetCore.Appdotnet/aspnetcore/compare/0188adf...4c4e7f4Microsoft.NETCore.Appdotnet/runtime/compare/0188adf...4c4e7f4After the move to the VMR (
dotnet/dotnet), the .NET runtime and ASP.NET runtime are built fromdotnet/dotnet, and the commit hashes Crank captures are dotnet/dotnet commits. The Crank agent (Microsoft.Crank.Agent/Startup.cs:3263, 3296) still hardcodes the legacy component-repo URLs (dotnet/aspnetcore,dotnet/runtime) for the syntheticMicrosoft.AspNetCore.AppandMicrosoft.NETCore.Appentries, so the rendered compare URLs are wrong.What
Rewrite the URL at template-render time inside the Changes block of all five issue-body templates:
build/regressions.config.yml—rps,published-size,start-timebuild/regressions.blazor.config.yml—download-size,first-uiThe rewrite triggers when either:
Microsoft.AspNetCore.App/Microsoft.NETCore.App, orRepositoryUrlis one of the legacy component-repo URLs (https://github.com/dotnet/aspnetcore,https://github.com/dotnet/runtime).Other dependencies (e.g. application-owned assemblies like
Antiforgery.dll, or already-correctdotnet/dotnetentries from post-VMR assembly metadata) are left untouched.{%- assign repoUrl = diff.RepositoryUrl -%} {%- if diff.Names contains 'Microsoft.AspNetCore.App' or diff.Names contains 'Microsoft.NETCore.App' or repoUrl == 'https://github.com/dotnet/aspnetcore' or repoUrl == 'https://github.com/dotnet/runtime' -%} {%- assign repoUrl = 'https://github.com/dotnet/dotnet' -%} {%- endif -%} {{ repoUrl }}/compare/{{ diff.PreviousCommitHash }}...{{ diff.CurrentCommitHash }}Validation
yaml.safe_load).FluidParseragainst a synthetic 5-row regression covering: an application assembly with its own repo URL, an already-correctdotnet/dotnetassembly-metadata entry, the two synthetic framework deps with the wrong hardcoded URLs, and a hypothetical "other dep stamped with one of the legacy URLs" case.dotnet/aspnetcore/dotnet/runtimeURLs, 4 correctly-attributeddotnet/dotnetURLs, 1 preservedaspnet/BenchmarksURL on the application assembly.Scope / non-goals
Microsoft.AspNetCore.Antiforgery.dllshowing up alongside the rolled-upMicrosoft.AspNetCore.App) — that bug lives in the Crank agent'sIsAspNetCoreDependency/IsNetCoreDependencypredicates and is intentionally left for a future Crank-side change.RepositoryUrlforMicrosoft.AspNetCore.App/Microsoft.NETCore.Appwill become conditional on the build source rather than a hard flip — best to do that work together.Rollout
The next scheduled run of
build/regressionbot.yml(07:00/19:00 UTC) picks this up automatically — the pipeline rebuilds the bot fromdotnet-crank@mainand reads these YAMLs from theselfcheckout each run.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com