| { |
| "name": "Release note", |
| "objective": "Assemble accurate, human-readable release notes from the merged commits, issues, and PRs in a release, drafted from evidence rather than memory.", |
| "trigger": { |
| "type": "event", |
| "cadence_or_event": "A release branch is cut or a tag is created; also a weekly draft for the next release during active development." |
| }, |
| "intake": { |
| "sources": ["merged pull requests", "closed issues", "commits since the last tag", "labels and breaking-change markers"], |
| "selection_rule": "Include user-affecting changes in the release range; drop chores, merge commits, and reverts that cancel out." |
| }, |
| "workspace": { |
| "isolation": "Read access to git history, PR and issue metadata, and the existing changelog; draft PR only.", |
| "allowed_actions": ["read commit and PR metadata", "draft changelog entries", "open a draft changelog PR", "link entries to sources"], |
| "disallowed_actions": ["publish the release", "edit tags", "reword security advisories unreviewed"] |
| }, |
| "context": { |
| "required_files": ["changelog", "release-note style guide", "label-to-section mapping"], |
| "runtime_sources": ["commit range", "PR metadata", "issue links", "migration notes"] |
| }, |
| "agents": [ |
| { |
| "role": "Collector", |
| "responsibility": "Gather merged PRs, issues, and commits in the release range with stable links." |
| }, |
| { |
| "role": "Classifier", |
| "responsibility": "Group changes into features, fixes, breaking changes, and docs." |
| }, |
| { |
| "role": "Writer", |
| "responsibility": "Draft user-facing notes that explain impact and migrations." |
| }, |
| { |
| "role": "Reviewer", |
| "responsibility": "Check each note against its source and flag user-affecting items for a human." |
| } |
| ], |
| "verification": { |
| "gates": ["every entry links to a merged PR, issue, or commit", "breaking changes and migrations are called out explicitly", "noise is excluded", "processed IDs are recorded"], |
| "receipts": ["release range", "processed PR and issue IDs", "section mapping", "draft changelog link"] |
| }, |
| "state": { |
| "artifacts": ["draft changelog PR", "processed-ID ledger"], |
| "update_rule": "Record processed IDs and which entries were human-reviewed so re-runs do not duplicate work." |
| }, |
| "budget": { |
| "max_retries": 2, |
| "max_runtime_minutes": 60 |
| }, |
| "escalation": { |
| "conditions": ["security advisory", "ambiguous breaking change", "customer-commitment wording", "license-relevant change", "release scope needing product judgment"], |
| "destination": "Release owner via the draft changelog PR" |
| }, |
| "exit": { |
| "success": "A review-ready draft changelog links every entry to its source and calls out breaking changes.", |
| "stop_without_success": "The draft is blocked on product wording or a security advisory." |
| } |
| } |
|
|