Encode .NET 11 Preview 7 retrospective into the release-notes skills - #10516
Open
danroth27 wants to merge 9 commits into
Open
Encode .NET 11 Preview 7 retrospective into the release-notes skills#10516danroth27 wants to merge 9 commits into
danroth27 wants to merge 9 commits into
Conversation
Reviewing and approving a component release notes PR is not enough - the owner is responsible for merging it into the milestone base branch once it's ready, rather than leaving it for someone else. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
Add a validate-code-samples skill and fold the lessons from generating the Preview 7 notes back into the surrounding skills. - Add .github/skills/validate-code-samples/SKILL.md, the runtime-verification stage that api-diff-validation already referenced but that did not exist. Covers acquiring the milestone build from ci.dot.net (build-metadata.json already emits sdk_url), pinning provenance via productCommit, installing scoped rather than machine-wide, and building/running every documented claim. Static API checks cannot see JS surface area, cannot catch inverted polarity, and cannot catch runtime-only requirements. - generate-changes: add a milestone cross-check with measured per-repo coverage. Only aspnetcore, runtime, sdk, and (weakly) efcore populate preview milestones reliably; roslyn and razor have no 11.x milestones at all. The milestone supplements changes.json, never replaces it. - api-verification: add the milestone-provenance rule. A change that shipped in an earlier preview still verifies against the current build, so presence in the build does not prove it belongs in these notes. - format-template: add the "Upgrading from the previous preview" section so preview-to-preview breaking changes are documented. - pr-layout: document creating the base branch first (branch globs exclude it), verifying assignees actually stuck, and the gh pr edit REST workaround. - component-mapping: add an owner-freshness check using the assignees endpoint. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
danroth27
commented
Aug 3, 2026
- generate-changes: replace the P7-specific coverage table with a plain list of the repos that maintain preview milestones, and add a rule that anything found via a milestone sweep must be verified independently. Milestone membership is a hand-applied label, so it shows intent, not that the change shipped. - api-verification: say "a PR associated with this milestone" rather than "a PR in this milestone", which read as GitHub milestone membership even though not every repo uses milestones per preview. - format-template: fold the preview upgrade guidance into the Breaking changes section. Preview notes already scope that section to what changed in the milestone, so it is the preview-to-preview upgrade story. Workaround removal stays called out separately since it is not a breaking change. - component-mapping, validate-code-samples: drop the historical anecdotes and keep the rules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
Milestones are applied by automation, so they are usually correct. They can be changed or applied incorrectly by hand afterwards, but that is the exception. The previous wording described them as hand-applied, which overstated the unreliability and framed verification as expecting a problem rather than confirming the expected result. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
The Projects (classic) GraphQL failure is not specific to the assignee flags - gh pr edit --body-file fails against dotnet/core the same way and silently leaves the body unchanged. Note the REST PATCH for title and body edits too. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
Each bug fix is one bullet: a single markdown link pointing at the PR, with a cleaned-up version of the PR or issue title as the display text. No area sub-grouping, no bundling several PRs into one bullet, and no trailing org/repo #number citation, since the link already carries it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
One bullet per PR with a cleaned-up title is easier to scan when the fixes are still grouped by namespace or area, so keep the grouping one level deep rather than a single flat list. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
Milestones are applied by automation and are usually correct, so describe them as strong but not conclusive evidence that a change shipped. Keep the separate changes.json and build verification step for the occasional incorrect or stale milestone assignment. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
jeffhandley
reviewed
Aug 7, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a851ab96-8780-407d-97d0-50eed422ead5
jeffhandley
approved these changes
Aug 10, 2026
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.
Folds the lessons from generating and validating the .NET 11 Preview 7 release notes back into the release-notes skills, so future milestones apply the same provenance, runtime-verification, editorial, and PR-management checks.
What prompted this
Four documented claims in the Preview 7 ASP.NET Core notes were wrong, and none were catchable by static managed API verification alone:
Blazor.pause.waitFor(fn).RequireAntiforgeryToken()EnableClientValidationDisableClientValidation, with inverted polarity[PersistentState]silently required a public propertyThe errors were found by building and running maintained samples against the actual milestone build.
Changes
Runtime verification
validate-code-samplesskill, filling the runtime-verification stage thatapi-diff-validationalready referenced.dotnet/sdk, confirming VMR provenance withproductCommit-*.jsonandbuild-metadata.json, and installing it in a scoped location instead of relying on a machine-wide preview SDK.validate-code-samplesinto the main release-notes workflow and fixes the link fromapi-diff-validation.Shipped-change and milestone provenance
generate-changesfor repositories that maintain per-preview milestones:dotnet/sdk,dotnet/aspnetcore,dotnet/runtime, anddotnet/efcore.changes.jsonas the authoritative shipped-change manifest. Milestones are strong but not conclusive supporting evidence: they are normally applied by automation, but assignments can be changed, incorrect, stale, or followed by a revert.Editorial structure
PR creation, ownership, and merge flow
gh pr editis unusable indotnet/corebecause of the Projects (classic) GraphQL failure, including title/body edits as well as assignee changes, and provides REST alternatives.Notes
release-notes/pr-owner-mergesbranch, whose commit is included here; that branch can be deleted..github/CODEOWNERSseparately lists/release-notes/ @rbhanda @leecow @victorisr. That is review ownership rather than per-component ownership, so it is deliberately unchanged.