From dotnet-dnceng
Trace dependency flow across .NET repos through the VMR pipeline. USE FOR: checking if a PR/commit from repo A has reached repo B, finding what runtime SHA is in an SDK build, tracing dependency versions through the VMR, checking if a commit is included in an SDK build, decoding SDK version strings, "has my fix reached runtime", "did roslyn#80873 flow to runtime", "what SHA is in SDK version X", cross-repo dependency tracing, mapping SDK versions to VMR commits. DO NOT USE FOR: codeflow PR health or staleness (use flow-analysis skill), CI build failures (use ci-analysis skill). INVOKES: maestro and GitHub MCP tools, Get-SdkVersionTrace.ps1 script.
npx claudepluginhub lewing/agent-plugins --plugin dotnet-dncengThis skill uses the workspace's default tool permissions.
Trace dependency flow across .NET repositories through the VMR pipeline. Two workflows:
Queries .NET APIs across NuGet packages, platform libraries, and local files. Searches types, lists members, diffs versions, finds extensions and implementors for library inspection.
Queries .NET APIs across NuGet packages, platform libraries, and local files. Searches types, lists members, diffs versions, finds extensions and implementors for .NET library questions.
Discovers .NET SDK versions, workload sets, manifest versions, and platform dependencies from live metadata and NuGet feeds. Useful for Xcode/JDK/Android SDK/MAUI requirements and prerelease workloads.
Share bugs, ideas, or general feedback.
Trace dependency flow across .NET repositories through the VMR pipeline. Two workflows:
Get-SdkVersionTrace.ps1 (handles version decoding, build lookup, and servicing topology automatically)Question: "Has change X from repo A reached repo B?"
Identify the merge commit SHA in repo A from the PR number, issue number, commit SHA, or description the user provides. If the PR isn't merged yet, stop — the change hasn't entered the pipeline.
⚠️ Internal branches (
internal/release/*) exist only on AzDO, not GitHub. Use the AzDO REST API to read files. See references/internal-vmr.md.
Read src/source-manifest.json from dotnet/dotnet on the target VMR branch (usually main or release/*). This file is the authoritative record of what the VMR has actually consumed — subscription status reflects Maestro's bookkeeping, but the manifest reflects reality. Find the entry for repo A — the commitSha field shows the latest commit the VMR has consumed.
Determine if the change is included (try in order):
If repo A's SHA in source-manifest is not past the merge commit → the change hasn't reached the VMR yet. Check for an open forward flow PR from repo A into dotnet/dotnet.
⚠️ 2xx/3xx bands: Only the 1xx branch source-builds all components. If tracing to a 2xx/3xx branch, runtime/aspnetcore won't appear in source-manifest — they're consumed as prebuilts from 1xx. See references/servicing-topology.md.
If the VMR has the change, check if it has flowed to repo B:
⚠️
eng/Version.Details.xmlis the file you want — it contains source dependency entries withShafields. Do NOT useeng/Versions.props(that has NuGet package versions, not source SHAs).
eng/Version.Details.xml in repo B.eng/Version.Details.xml in repo B — the dotnet/dotnet entry's Sha is the VMR commit repo B last consumed. Check src/source-manifest.json at that SHA for repo A's commitSha. If it's past the merge commit, the change reached repo B despite the stale subscription.Summarize the trace chain:
abc123 → VMR consumed it → runtime backflow current"Run the script to trace from an SDK version string to a component commit SHA:
# Trace runtime SHA in a specific SDK version
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103"
# Trace a specific component
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -Component "aspnetcore"
# Check if specific commits are included
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -CheckCommit "b226ba1f77a4","f3bc0212e637"
# Just decode the version string
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -DecodeOnly
The script decodes the SDK version, maps to a VMR branch, finds the build in AzDO, and walks the dependency chain through source-manifest.json (and Version.Details.xml for servicing branches that don't source-build all components).
⚠️ SDK version dates use Arcade's SHORT_DATE formula:
YY*1000 + MM*50 + DD(NOT YYDDD day-of-year).26117= Feb 17, 2026, NOT April 27. See references/sdk-version-format.md.
⚠️ Servicing branches (2xx, 3xx) do NOT source-build runtime. The script automatically follows the dependency chain through
Version.Details.xmlto the 1xx branch. See references/servicing-topology.md.