[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow - #124129

Merged
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback
Feb 8, 2026
Merged

[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflow#124129
lewing merged 3 commits into
mainfrom
lewing/vd-xml-fallback

Conversation

@lewing

@lewinglewing commented Feb 7, 2026

Copy link
Copy Markdown
Member

Version.Details.xml as primary VMR snapshot source + forward flow scanning

Problem

The codeflow status script relied on PR body metadata and commit messages to determine the VMR snapshot. When manual backflow was used (e.g., \darc vmr backflow\ pushed directly), the PR body was stale and commit messages didn't follow the expected format, causing incorrect freshness reporting.

Changes

Commit 1: VD.xml as primary snapshot

  • \�ng/Version.Details.xml\ (<Source Sha=...>) is now checked first as the authoritative snapshot source
  • XML parser with regex fallback, 40-char SHA validation
  • Commit messages are secondary confirmation, PR body is last resort
  • Case-insensitive SHA comparison throughout
  • \2>\\ for stderr isolation on all \gh\ calls

Commit 2: Forward flow scanning in -CheckMissing

  • -CheckMissing\ now scans open forward flow PRs (product repo → dotnet/dotnet)
  • Detects conflicts and staleness via Maestro comment scanning
  • Combined summary showing backflow + forward flow health

Testing

  • VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885 (conflicted), aspnetcore#65338 (deleted branch), runtime#124098 (normal), sourcelink#1581 (fresh)
  • Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1 conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)

Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885

CopilotAI review requested due to automatic review settings February 7, 2026 07:29
@github-actionsgithub-actionsBot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
@lewinglewing added the area-skills Agent Skills label Feb 7, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves reliability of GitHub “skills” automation scripts by (1) making VMR snapshot detection resilient to manual backflow commit message formats and (2) working around a Helix API artifact URI bug for subdirectory files.

Changes:

  • Add a fallback to read eng/Version.Details.xml on the PR branch to infer the VMR snapshot SHA when commit messages aren’t parseable.
  • Improve snapshot validation messaging (identify whether snapshot came from commit messages vs Version.Details.xml).
  • Rebuild Helix artifact file URIs from FileName for subdirectory artifacts and document the known Helix API issue.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

FileDescription
.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1Adds Version.Details.xml fallback and refines snapshot validation/status output.
.github/skills/azdo-helix-failures/scripts/Get-HelixFailures.ps1Workaround for broken Helix artifact URIs for files in subdirectories by reconstructing URLs.
.github/skills/azdo-helix-failures/references/helix-artifacts.mdDocuments the Helix API bug and the script’s workaround.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from b9b70b4 to 3090c43CompareFebruary 7, 2026 07:40
CopilotAI review requested due to automatic review settings February 7, 2026 07:40

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3090c43 to 3969355CompareFebruary 7, 2026 07:47
@lewinglewing changed the title Use Version.Details.xml as VMR snapshot fallback for manual backflow[skill] Use Version.Details.xml as VMR snapshot fallback for manual backflowFeb 7, 2026
@lewinglewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Feb 7, 2026
CopilotAI review requested due to automatic review settings February 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 3969355 to b5e3166CompareFebruary 7, 2026 07:52
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch 2 times, most recently from 2fa670d to 33ae35fCompareFebruary 7, 2026 07:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 33ae35f to 0062b79CompareFebruary 7, 2026 07:59
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 0062b79 to c0c18fdCompareFebruary 7, 2026 16:59
CopilotAI review requested due to automatic review settings February 7, 2026 17:10

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Comment thread.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1 Outdated
Version.Details.xml's <Source Sha=...> is the authoritative record of
which VMR commit a product repo branch is based on. Previously the script
treated it as a fallback after commit message parsing. Now it's checked
first, with commit messages as secondary confirmation.
This correctly handles:
- Manual backflow (darc vmr backflow pushed directly)
- Normal codeflow (Maestro-managed)
- Conflicted PRs (VD.xml reflects pre-codeflow state)
- Forward flow PRs (skips VD.xml, uses commit messages)
Tested against sdk#52727 (manual backflow) and sdk#52885 (conflicted).
-CheckMissing now scans open forward flow PRs (product repo → dotnet/dotnet)
in addition to missing backflow PRs. For each forward flow PR it detects:
- Conflict (Maestro 'Conflict detected' comment)
- Staleness (opposite codeflow merged while PR was open)
- Healthy (no issues)
Summary section now shows both directions.
Also fixes: dotnet-maestro comment author matching (gh CLI returns
'dotnet-maestro' not 'dotnet-maestro[bot]' for login field).
Tested against dotnet/sdk (4 forward PRs: 2 healthy, 1 stale, 1 conflict)
and dotnet/runtime (3 forward PRs: 2 healthy, 1 stale).
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 5cc04ae to adc8cb1CompareFebruary 7, 2026 17:19
CopilotAI review requested due to automatic review settings February 7, 2026 17:21
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 6daddd0 to 9d21ee3CompareFebruary 7, 2026 17:23

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

.github/skills/vmr-codeflow-status/scripts/Get-CodeflowStatus.ps1:265

  • Forward-flow lookup derives $repoShortName by stripping only the dotnet/ prefix. If -Repository is ever used with a non-dotnet/* repo, this produces an invalid search string (e.g., dotnet/otherOwner/repo). Consider deriving the repo name via ($Repository -split '/',2)[1] (or parsing owner/name once) so the search is robust and independent of the owner.
 Write-Host " ✅ Open backflow PR #$($openBranches[$branchName]) exists" -ForegroundColor Green
$coveredCount++

- Use 2>$null instead of 2>&1 for gh pr view to prevent stderr
corrupting JSON stream
- Wrap ConvertFrom-Json in try/catch for forward flow PR details
- Tighten regex fallback to require exactly 40-char hex SHA
- Use case-insensitive StringComparison for SHA matching
@lewing
lewingforce-pushed the lewing/vd-xml-fallback branch from 9d21ee3 to 7ed5756CompareFebruary 8, 2026 01:35
@lewing
lewing requested a review from steveisokFebruary 8, 2026 02:41
@lewing
lewing merged commit 77d947a into mainFeb 8, 2026
18 checks passed
@lewing
lewing deleted the lewing/vd-xml-fallback branch February 8, 2026 02:44
iremyux pushed a commit to iremyux/dotnet-runtime that referenced this pull request Mar 2, 2026
…ackflow (dotnet#124129)
## Version.Details.xml as primary VMR snapshot source + forward flow
scanning
### Problem
The codeflow status script relied on PR body metadata and commit
messages to determine the VMR snapshot. When manual backflow was used
(e.g., \darc vmr backflow\ pushed directly), the PR body was stale and
commit messages didn't follow the expected format, causing incorrect
freshness reporting.
### Changes
**Commit 1: VD.xml as primary snapshot**
- \�ng/Version.Details.xml\ (\<Source Sha=...>\) is now checked first as
the authoritative snapshot source
- XML parser with regex fallback, 40-char SHA validation
- Commit messages are secondary confirmation, PR body is last resort
- Case-insensitive SHA comparison throughout
- \2>\\\ for stderr isolation on all \gh\ calls
**Commit 2: Forward flow scanning in -CheckMissing**
- \-CheckMissing\ now scans open forward flow PRs (product repo →
dotnet/dotnet)
- Detects conflicts and staleness via Maestro comment scanning
- Combined summary showing backflow + forward flow health
### Testing
- VD.xml: Tested against sdk#52727 (manual backflow mismatch), sdk#52885
(conflicted), aspnetcore#65338 (deleted branch), runtime#124098
(normal), sourcelink#1581 (fresh)
- Forward flow: Tested against dotnet/sdk (4 PRs: 2 healthy, 1 stale, 1
conflict) and dotnet/runtime (3 PRs: 2 healthy, 1 stale)
Cross-repo context: dotnet/sdk#52727, dotnet/sdk#52885
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-skillsAgent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lewing@steveisok