File size: 2,851 Bytes
9ec4919
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
  "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."
  }
}