Skip to content

Add changes generator tool#31

Merged
richlander merged 3 commits intomainfrom
add-changes-generator
Mar 27, 2026
Merged

Add changes generator tool#31
richlander merged 3 commits intomainfrom
add-changes-generator

Conversation

@richlander
Copy link
Copy Markdown
Owner

New tool to generate changes.json for .NET releases by comparing source-manifest.json between two refs in dotnet/dotnet.

New projects

  • Dotnet.Release.Changes — Schema types (ChangeRecords, ChangeEntry, CommitEntry, SourceManifest) with AOT-compatible serializer context
  • Dotnet.Release.ChangesHandlerManifestDiffer, ChangeCollector (GitHub compare API), ChangesGenerator, CveCrossReference, ProductMapper

CLI command

dotnet-release generate changes <repo-path> --base <ref> --head <ref>
  [--branch <name>] [--version <ver>] [--date <date>]
  [--cve-repo <path>] [--labels] [--jsonl] [--output <file>]

Features

  • Diffs source-manifest.json via local git clone (no network for manifest reads)
  • Enumerates PRs via GitHub compare API for each changed child repo
  • CVE cross-reference via --cve-repo (loads cve.json from dotnet/core release-index branch, identifies security commits in range)
  • Handles direct patches to dotnet/dotnet (10.0+ security model where fixes land directly in the VMR)
  • PR label fetching via --labels for agent-led categorization
  • JSONL output via --jsonl (one repo per line for streaming/agent processing)
  • Product mapping (repo → product slug from taxonomy)

Design

Follows the Cve/CveHandler pattern — schema types in one library, business logic in another. The tool is a complete, faithful data collector; it does not filter or categorize. Categorization is left to the consuming agent.

Designed for use in GitHub Agentic Workflows (gh-aw) where an AI agent runs the tool and uses the structured output to draft release notes.

Tested

  • Preview 1 → Preview 2: 1,389 PRs across 20 repos
  • 10.0 servicing (v10.0.103 → v10.0.104): 370 PRs + 2 CVE matches (CVE-2026-26127, CVE-2026-26130)
  • JSONL output: 16 lines, one per repo, security changes correctly attributed to dotnet repo

Also

  • Updates Directory.Build.props to net11.0 / LangVersion 14

richlander and others added 3 commits March 26, 2026 22:33
New tool to generate changes.json for .NET releases by comparing
source-manifest.json between two refs in dotnet/dotnet.

New projects:
- Dotnet.Release.Changes: Schema types (ChangeRecords, ChangeEntry,
  CommitEntry, SourceManifest) with AOT-compatible serializer context
- Dotnet.Release.ChangesHandler: ManifestDiffer, ChangeCollector (GitHub
  compare API), ChangesGenerator, CveCrossReference, ProductMapper

CLI command:
  dotnet-release generate changes <repo-path> --base <ref> --head <ref>
    [--branch <name>] [--version <ver>] [--date <date>]
    [--cve-repo <path>] [--labels] [--jsonl] [--output <file>]

Features:
- Diffs source-manifest.json via local git (no network for manifest)
- Enumerates PRs via GitHub compare API for each changed child repo
- CVE cross-reference via --cve-repo (loads cve.json from dotnet/core
  release-index branch, identifies security commits in range)
- Handles direct patches to dotnet/dotnet (10.0+ security model)
- PR label fetching via --labels for agent-led categorization
- JSONL output via --jsonl (one repo per line for streaming processing)
- Product mapping (repo -> product slug from taxonomy)

Also updates Directory.Build.props to net11.0 / LangVersion 14.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CI uses .NET 10 SDK which doesn't support net11.0. Revert
Directory.Build.props back to net10.0/LangVersion 13.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update all CI workflows and Directory.Build.props to target .NET 11:
- Directory.Build.props: net11.0, LangVersion 14
- ci.yml: dotnet-version 11.0.x (build, pack, pack-rid jobs)
- publish.yml: dotnet-version 11.0.x (all 4 jobs)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@richlander richlander merged commit a6a06ae into main Mar 27, 2026
8 checks passed
@richlander richlander deleted the add-changes-generator branch March 27, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant