Per-component release notes PRs in the release-notes skill (#10382)#10383
Open
Per-component release notes PRs in the release-notes skill (#10382)#10383
Conversation
Restructures the release-notes agentic workflow and skills so each milestone produces a set of PRs (one base PR plus one PR per component file) instead of a single monolithic PR. Component teams can review and edit their own file in isolation. Skills: - Add references/pr-layout.md describing the base + per-component branch scheme, seed order under the per-run cap, and the merge flow. - component-mapping.md: add Branch Suffix and Default Assignee columns; add an out-of-VMR section for containers and dotnetmaui with a content-sourcing protocol; split expected output files between base branch (metadata) and per-component branches (one .md each). - release-notes/SKILL.md: update output description and reference list. - update-existing-branch/SKILL.md: rewrite for branch-set semantics; add the invariant table; update component branches only when their markdown is being edited this run, to respect the push cap. Workflow: - Bump safe-outputs.create-pull-request.max and push-to-pull-request-branch.max from 5 to 10 (gh-aw schema cap). Initial seed of a new milestone now spans up to two daily runs in seed order; steady-state reruns only push branches that changed. - Rewrite the 'Create or update the PR set' step into three explicit cases: no branch set, partial branch set (continues seeding from where the cap stopped), and complete branch set. - Make 'Regenerate changes.json' a delta-aware step (only when the head ref moved) to align with update-existing-branch. - Distinguish closed/merged base PR vs closed/merged component PR vs missing component PR in the transitions section. - Recompile release-notes.lock.yml; gh-aw setup pin moves from 0.67.0 to 0.71.1 as a side effect of the recompile. Manual fallback: - createprs-for-preview.prompt.md is now a thin pointer to the skill; aligns branch naming and assignee table with component-mapping.md; explicitly requires seeding base metadata before opening the base PR so the base branch has a non-empty diff. Out of scope: the auth failure tracked in #10342 (workflow has not run since 2026-04-07) is owned separately. The skills changes also benefit running the custom release-notes agent locally, which does not depend on the agentic workflow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Matches the convention used by sibling files in the release-notes skill (SKILL.md, quality-bar.md, feature-scoring.md, editorial-rules.md). No content changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reverts the agentic-workflow changes (release-notes.md, release-notes.lock.yml, actions-lock.json) and removes the createprs-for-preview manual-fallback prompt entirely. The release-notes skill is now the single source of truth for branch/PR layout; the agentic workflow on main does not currently delegate to the skill, so workflow behavior is left untouched in this PR and can be addressed separately. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-derive the branch-set rewrite from the file on main, keeping its ~80-col paragraph wrapping. Only substantive content changes remain in the diff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- pr-layout.md: pare down to branch layout, invariants, merge flow, title convention. Drop the 14-row branch table, mermaid diagram, full PR body/label/assignee specs, draft-state ceremony, per-run cap with seed order, completeness check, and README-on-base section. Workflow-orchestration concerns belong in the workflow when it adopts the skill, not in the skill itself. - component-mapping.md: add only the Branch Suffix column. Drop the Default Assignee column (CODEOWNERS handles routing), the Out-of-VMR section, the C#/VB row split, and the Output File rename. - release-notes SKILL.md: trim Local testing section to a single paragraph. - update-existing-branch SKILL.md: drop workflow-specific safe-outputs reference from step 4 and tighten its prose. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…name Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add .NET MAUI and Containers as out-of-band components: they ship with .NET but aren't in the VMR, so the agent stands up empty stub PRs for the teams to fill in or close. - Rename "Expected output files per preview" to "Default component set per preview" and clarify owners may close empty PRs when there is nothing noteworthy that milestone. - Add dotnetmaui.md and containers.md to the default file list. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Local dry-run drafted 11.0.0-preview.4.md on the base branch because nothing in the skill said otherwise. The .NET release team generates that file through separate artifacts-publishing automation, so call it out as not-this-skill''s-job to avoid duplicate edits. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The default-assignee list from createprs-for-preview.prompt.md (and the original component-mapping.md before simplification) routes each component PR to its component team owner via gh pr create --assignee. Bring it back so the right team sees the PR in their review queue instead of relying solely on repo-level CODEOWNERS. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restore the original "Expected output files per preview" heading and intro sentence; drop the "(base branch)" annotations. The added rows for dotnetmaui.md and containers.md remain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danroth27
commented
Apr 29, 2026
danroth27
commented
Apr 29, 2026
danroth27
commented
Apr 29, 2026
danroth27
commented
Apr 29, 2026
danroth27
commented
Apr 29, 2026
- release-notes/SKILL.md: rephrase local-testing sentence per
reviewer suggestion.
- update-existing-branch/SKILL.md:
- drop the redundant "do not modify" paragraph (the table above
already states the invariant).
- drop the "Components that have no delta this run get no commit"
sentence; the surrounding text already implies it.
- drop the "(on the relevant component branch)" parenthetical.
- restore the original 4-item Default-outcome list (revert the
base-branch / per-PR annotations and the new step 5).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danroth27
commented
Apr 29, 2026
Per reviewer suggestion: restore the original heading "Update markdown in place" and lead with the "Use the current draft / prefer integration over duplication" sentence, then add the per-component branch guidance as a follow-up paragraph. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danroth27
commented
Apr 29, 2026
dotnet/aspnetcore tags every PR with a release milestone (e.g. `11.0-preview4`), so the contributor links in aspnetcore.md should append `+milestone%3A<slug>` to scope each link to this milestone. Other source repos don't apply milestones consistently, so the rule is aspnetcore-specific. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The deleted createprs-for-preview prompt called this out explicitly; restoring the rule now that pr-layout.md is the canonical source. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jongalloway
approved these changes
May 2, 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.
Closes #10382.
Summary
Updates the
release-notesskill so each release milestone is described as a set of pull requests — one base PR holding shared metadata plus one PR per component file (aspnetcore.md,runtime.md,libraries.md, etc.) — instead of a single monolithic PR. Component teams can review and edit their own file in isolation; the base PR's diff grows into the consolidation as component PRs merge.This PR is scoped to the skill only. The agentic workflow on
maindoes not currently delegate to therelease-notesskill (it has its own ~370-line inline playbook), so workflow changes are not required for the skill update to take effect for callers that do use the skill — most importantly, running the release-notes custom agent locally. Reconciling the workflow with the skill is tracked separately.What changes
.github/skills/release-notes/references/pr-layout.md— the canonical description of the base + per-component branch scheme: branch naming, PR titles, default assignees, draft-state rules, merge flow (component → base → main), per-run-cap seed order, completeness check, and the rerun invariants.component-mapping.md— added Branch Suffix and Default Assignee(s) columns to the main table; split Roslyn into separate C#/VB rows; added an Out-of-VMR components section forcontainersanddotnetmauiwith an explicit content-sourcing protocol so the agent does not refuse them just because they don't appear inchanges.json; split expected output files between the base branch (metadata) and per-component branches.release-notes/SKILL.md— output description and reference list updated for the new layout.update-existing-branch/SKILL.md— rewritten for branch-set semantics. Added the invariant table (metadata files only on base branch; each component .md only on its own branch). Step 4 is now explicit that component branches are only refreshed when their markdown is being edited in the current run, to respect the per-run push cap that callers may impose..github/prompts/createprs-for-preview.prompt.md— the manual-fallback prompt is replaced by the skill. No other files in the repo reference it.Why now
It is almost time to generate Preview 4 release notes. Splitting the PR set first lets each team review only their component's diff. The skill changes take effect immediately for the custom release-notes agent run locally — that path doesn't depend on the agentic workflow (which has not actually run since 2026-04-07 anyway, blocked on the auth failure tracked in #10342, owned separately).
Validation
markdownlintagainst the repo's.markdown-lint.ymlon every changed markdown file → clean.Out of scope
release-notes.md/ lock file) is intentionally untouched. The workflow currently restates the editorial playbook inline rather than invoking therelease-notesskill; reconciling that overlap is a separate cleanup that should land after this skill update.cc @richlander @jeffhandley