Determinize release: hardcode OptProf baseline + Phase 3.2 baseline resolver - #14222
Merged
JanProvaznik merged 2 commits intoJun 30, 2026
Merged
Conversation
Adds scripts/Get-PackageValidationBaseline.ps1: given the release version, it computes git merge-base(origin/main, origin/vs<ver>), finds the matching successful build in official pipeline 9434, derives the package version from the OfficialBuildId via the Arcade date encoding, and verifies it on the dotnet-tools feed — collapsing the manual Phase 3.2 investigation into one command. Validated against 18.9: outputs 18.9.0-preview-26330-01 (the branch-point main build 20260630.1 @ 0ac5599). The Arcade date formula (yy*1000 + month*50 + day) was cross-checked against the 18.7 (26230), 18.8 (26276), and 18.9 (26330) baselines. Wires the script into the checklist Phase 3.2, the skill's baseline procedure (as the preferred path; manual steps kept as fallback), and the Key Files table. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…otstrap Eliminates the recurring Phase 4.4 dance (cancel the failing auto-build, re-run with a manual OptProf override) for freshly-cut release branches. .vsts-dotnet.yml: - New OptProfBaselineDrop variable holding the latest known-good main OptimizationData drop. - On vs* branches, seed OptProfDrop from it (and clear SourceBranch) so the first official build of a brand-new branch has valid OptProf data. main is unaffected (still resolves its own OptProf via SourceBranch); existing vs branches keep their frozen copies. scripts/Get-LatestOptProfDrop.ps1: - Resolves the value deterministically from the MSBuild-OptProf pipeline (17389) latest successful run on main, reading the 'Set PreviousOptimizationInputsDropName' step. Validated -> OptimizationData/DotNet-msbuild-Trusted/main/20260623.5/14471019/1. Process: - New release-checklist Phase 3.3 refreshes OptProfBaselineDrop in the main-bump PR (renumbered API-compat->3.4, merge->3.5; artifact-table ref updated). - Phase 4.4 demoted to a fallback (only if the seeded build still fails). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
JanProvaznik
temporarily deployed
to
copilot-pat-pool
June 30, 2026 14:33 — with
GitHub Actions
Inactive
Contributor
🔍 Skill Validator Results
Summary
Full validator output```text Found 1 skill(s) [release] 📊 release: 3,668 BPE tokens [chars/4: 3,588] (standard ~), 13 sections, 1 code blocks [release] ⚠ Skill is 3,668 BPE tokens (chars/4 estimate: 3,588) — approaching "comprehensive" range where gains diminish. ✅ All checks passed (1 skill(s)) ``` |
JanProvaznik
temporarily deployed
to
copilot-pat-pool
June 30, 2026 14:34 — with
GitHub Actions
Inactive
JanProvaznik
temporarily deployed
to
copilot-pat-pool
June 30, 2026 14:35 — with
GitHub Actions
Inactive
ViktorHofer
approved these changes
Jun 30, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR determinizes two parts of the MSBuild release process: (1) ensuring newly-cut vs* branches have a known-good OptProf baseline so the first official build succeeds without manual intervention, and (2) reintroducing a deterministic resolver script for PackageValidationBaselineVersion (Phase 3.2) and wiring it into the release checklist + release skill docs.
Changes:
- Add a hardcoded
OptProfBaselineDropin.vsts-dotnet.ymland seedOptProfDropfrom it onvs*branches (while keepingmainbehavior unchanged). - Add/re-include two helper scripts to deterministically resolve (a) the latest OptProf drop and (b) the package validation baseline.
- Update release checklist and release skill documentation to incorporate the new deterministic steps and revised Phase numbering.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/Get-PackageValidationBaseline.ps1 |
New helper script to compute PackageValidationBaselineVersion via merge-base + pipeline query + dotnet-tools feed verification. |
scripts/Get-LatestOptProfDrop.ps1 |
New helper script to pull the latest OptProf drop from MSBuild-OptProf pipeline logs. |
documentation/release-checklist.md |
Updates Phase 3 to reference the new scripts and documents the new OptProf baseline refresh + fallback behavior. |
.vsts-dotnet.yml |
Adds OptProfBaselineDrop and seeds OptProfDrop for vs* branches to avoid first-build failures. |
.github/skills/release/SKILL.md |
Documents the deterministic baseline resolver and adds OptProf baseline refresh into Phase 3 guidance and quick links. |
JanProvaznik
enabled auto-merge (squash)
June 30, 2026 14:43
70 tasks
This was referenced Sep 10, 2026
Closed
This was referenced Sep 11, 2026
Merged
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two release-process determinizations, plus re-includes the Phase 3.2 baseline helper that missed the #14220 merge.
1. Hardcode the OptProf baseline (new)
A freshly-cut
vs*branch has no OptProf optimization data of its own, so its first official build fails — today handled by the manual Phase 4.4 dance (cancel the auto-build, re-run with anOptional OptProfDrop Override). This makes it automatic:.vsts-dotnet.yml: newOptProfBaselineDropvariable holding the latest known-goodmainOptimizationData drop. Onvs*branches the build seedsOptProfDropfrom it (→/p:VisualStudioIbcDrop) and clearsSourceBranch, so the first build of a brand-new branch has valid OptProf data.mainis unaffected (still resolves its own OptProf viaSourceBranch); the manualOptProfDropNameoverride still wins; existingvs*branches keep their frozen copies (forward-only change).scripts/Get-LatestOptProfDrop.ps1: resolves the value deterministically from theMSBuild-OptProfpipeline (def 17389) latest successfulmainrun, reading theSet PreviousOptimizationInputsDropNamestep. Validated →OptimizationData/DotNet-msbuild-Trusted/main/20260623.5/14471019/1.OptProfBaselineDropin the main-bump PR (API-compat → 3.4, merge → 3.5). Phase 4.4 demoted to a fallback (only if the seeded build still fails).2. Deterministic Phase 3.2 baseline (re-include)
scripts/Get-PackageValidationBaseline.ps1+ its doc wiring — this was committed after #14220 had already merged at its first commit, so it never landed. Re-included here. ResolvesPackageValidationBaselineVersionviagit merge-base→ pipeline 9434 → dotnet-tools feed. Validated →18.9.0-preview-26330-01.Both scripts require
az loginwith devdiv access; the manual procedures remain as fallbacks.