Skip to content

Commit b142fb8

Browse files
committed
Auto-merge upstream openclaw/openclaw
2 parents 36be15e + 64db900 commit b142fb8

79 files changed

Lines changed: 4054 additions & 4144 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/openclaw-changelog-update/SKILL.md

Lines changed: 117 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ content, ordering, grouping, and attribution discipline.
1212

1313
## Goal
1414

15-
Rewrite the target `CHANGELOG.md` version section from history, not from stale
16-
draft notes. Produce grouped user-facing release notes sorted by user interest
17-
while preserving every relevant issue/PR ref and every human `Thanks @...`
18-
attribution.
15+
Rebuild the target `CHANGELOG.md` version section from a complete, generated
16+
history manifest, not stale draft notes. Produce grouped user-facing release
17+
notes sorted by user interest while preserving every relevant issue/PR ref and
18+
every human `Thanks @...` attribution.
1919

2020
## Inputs
2121

@@ -34,8 +34,37 @@ attribution.
3434
- `git log --first-parent --date=iso-strict --pretty=format:'%h%x09%ad%x09%s' <base-tag>..<target-ref>`
3535
- `git log --first-parent --grep='(#' --date=short --pretty=format:'%h%x09%ad%x09%s' <base-tag>..<target-ref>`
3636
- also inspect `--since='24 hours ago'` when main moved during the release.
37-
3. Read linked PRs/issues or diffs for ambiguous commits. Direct commits matter;
38-
infer notes from subject, body, touched files, tests, and nearby commits.
37+
3. Generate the complete contribution record and editorial manifest before
38+
writing grouped prose:
39+
40+
```bash
41+
node .agents/skills/openclaw-changelog-update/scripts/verify-release-notes.mjs \
42+
--base <base-tag> \
43+
--target <target-ref> \
44+
--version <YYYY.M.PATCH> \
45+
--manifest /tmp/openclaw-release-<YYYY.M.PATCH>.json \
46+
--write-ledger
47+
```
48+
49+
- the manifest is the required input to the rewrite, not an after-the-fact
50+
audit; it contains every referenced PR, eligible contributor credit,
51+
inline issue context, every direct commit, and an editorial-eligibility
52+
classification for PRs and direct commits
53+
- for a historical backfill, add `--seed-ref <pre-backfill-ref>` once so
54+
contribution records from the prior changelog are retained even when an
55+
older merged commit omitted its PR number; the verifier excludes records
56+
for work reverted after the base tag, including beta work reverted before
57+
the stable release
58+
- source PR discovery combines merged GitHub commit associations with merged
59+
PR references explicitly present in active commit subjects/bodies so
60+
cherry-picks and squash commits remain accounted for. Resolve every
61+
association page and exclude PRs merged after the target release commit
62+
- read the manifest before editing `### Highlights`, `### Changes`, or
63+
`### Fixes`; do not carry old grouped prose forward without re-auditing it
64+
- inspect linked PRs/issues or diffs for ambiguous commits. Direct commits
65+
are editorial input, not public ledger rows; infer material user outcomes
66+
from subject, body, touched files, tests, and nearby commits
67+
3968
4. Rewrite one stable-base section only:
4069
- use `## YYYY.M.PATCH`
4170
- do not create beta-specific headings
@@ -44,10 +73,21 @@ attribution.
4473
section instead of deleting them
4574
5. Section shape:
4675
- `### Highlights`: 5-8 bullets, broad user wins first
76+
- include only a clear user-visible capability or workflow unlock, a
77+
material reliability/safety fix, a broad cross-surface improvement, or
78+
a release-defining integration/compatibility milestone
79+
- every highlight must say what changed for a user in one sentence; use
80+
one user story per bullet and group its supporting PRs
81+
- exclude tests, CI, refactors, docs, catalog churn, and implementation
82+
detail unless the outcome is a material install/update, data-safety, or
83+
widely visible user improvement
4784
- `### Changes`: new capabilities and behavior changes
4885
- `### Fixes`: user-facing fixes first, grouped by impact and surface
4986
- group related changes/fixes by surface and user impact; avoid one bullet
5087
per tiny commit when several commits tell one user-facing story
88+
- `### Complete contribution record`: generated PR-first record after the
89+
grouped prose; it is the exhaustive accounting surface, not a second
90+
release summary
5191
6. Preserve attribution:
5292
- keep `#issue`, `(#PR)`, `Fixes #...`, and `Thanks @...`
5393
- every human-authored merged PR represented by a user-facing entry needs
@@ -62,17 +102,35 @@ attribution.
62102
- multiple `Thanks @...` handles in one bullet are expected; do not drop or
63103
collapse contributor credit just because the note is grouped
64104
- if one grouped bullet covers both direct commits and PRs, keep all PR refs
65-
and thanks, plus any issue refs from the direct commits
66-
- before finalizing, audit the final release-note body:
67-
- extract all `#NNN` refs from the notes
68-
- resolve which refs are PRs and collect human PR authors
69-
- resolve issue refs used as bug/report refs and collect human reporters
70-
- scan represented commits for `Co-authored-by`
71-
- compare those handles to the final `Thanks @...` set
72-
- fix every missing human credit or explicitly record why it is omitted
105+
and thanks, plus any issue refs and human credit from the direct work
106+
- issues remain normal inline `#NNN` references. Do not add a separate
107+
linked-issues inventory. The generated PR record keeps source issues
108+
inline as `Related #NNN` on the PR that shipped them
109+
- when backfilling an older linked-issues inventory, preserve reporter
110+
credit inline for every GitHub-confirmed closing PR relationship. Do not
111+
infer a PR relationship from a generic cross-reference event, invent an
112+
unrelated PR link for a standalone report, or recreate the retired
113+
inventory
114+
- the complete contribution record lists every merged source PR exactly once
115+
as `**PR #NNN**`; source PRs include GitHub commit associations and merged
116+
PR references explicitly present in active commit subjects/bodies. It
117+
preserves author/co-author credit and any issue references in the original
118+
title
119+
- direct commits remain in the manifest with GitHub-resolved author,
120+
co-author, issue, and editorial-eligibility data. They inform grouped
121+
prose but are never rendered as a public `#### Direct commits` dump. Add
122+
direct-commit credit to a grouped bullet only when it shares an explicit
123+
closing issue reference or at least two distinctive subject terms
124+
- the verifier rejects `docs`, `test`, `refactor`, `ci`, `build`, `chore`,
125+
and `style` PRs in Highlights, Changes, or Fixes. Keep those internal
126+
contributions in the complete PR record, but do not give them editorial
127+
release-note space
128+
- classify internal-only work from conventional prefixes and clear title
129+
signals such as `QA`, `test`, `docs`, `refactor`, `lint`, or `CI`; an
130+
untyped title is not automatically editorial
73131
- do not add GHSA references, advisory IDs, or security advisory slugs to
74132
changelog entries or GitHub release-note text unless explicitly requested
75-
- never thank bots, `@openclaw`, `@clawsweeper`, or `@steipete`
133+
- never thank bots, `@claude`, `@openclaw`, `@clawsweeper`, or `@steipete`
76134
- do not use GitHub's release contributor count as the source of truth; the
77135
changelog must carry the complete human credit set itself
78136
7. Sorting preference:
@@ -91,36 +149,50 @@ attribution.
91149
- if any compatibility `removeAfter` is on/before release date, resolve it
92150
or explicitly record the blocker before shipping
93151
10. Validate and ship:
94-
- generate and verify the complete contribution ledger before committing:
95-
```bash
96-
node .agents/skills/openclaw-changelog-update/scripts/verify-release-notes.mjs \
97-
--base <base-tag> \
98-
--target <target-ref> \
99-
--version <YYYY.M.PATCH> \
100-
--write-ledger
101-
```
102-
- the command fails when any `#NNN` reference in release history or the
103-
rendered release section is absent from the ledger, when reverted work is
104-
presented as shipped, or when an eligible PR author, issue reporter, or
105-
known co-author is missing from that entry's `Thanks @...` credit
106-
- after the GitHub release or prerelease is published, verify every matching
107-
release page against the same source section:
108-
```bash
109-
node .agents/skills/openclaw-changelog-update/scripts/verify-release-notes.mjs \
110-
--base <base-tag> \
111-
--target <target-ref> \
112-
--version <YYYY.M.PATCH> \
113-
--release-tag v<YYYY.M.PATCH> \
114-
--check-github
115-
```
116-
- add one `--release-tag` for every beta and stable page in the train; a
117-
`### Release verification` tail is permitted, but any other body drift
118-
fails the check; the GitHub body must begin with the complete
119-
`## YYYY.M.PATCH` changelog section, including its heading
120-
- `git diff --check`
121-
- for docs/changelog-only changes, no broad tests are required
122-
- commit with `scripts/committer "docs(changelog): refresh YYYY.M.PATCH notes" CHANGELOG.md`
123-
- push, pull/rebase if needed, then branch/rebase release from latest `main`
152+
153+
- after the manifest-driven rewrite, regenerate and verify the complete
154+
contribution record before committing:
155+
```bash
156+
node .agents/skills/openclaw-changelog-update/scripts/verify-release-notes.mjs \
157+
--base <base-tag> \
158+
--target <target-ref> \
159+
--version <YYYY.M.PATCH> \
160+
--manifest /tmp/openclaw-release-<YYYY.M.PATCH>.json \
161+
--write-ledger
162+
```
163+
- the command fails when any `#NNN` reference in release history or the
164+
rendered release section cannot resolve, when reverted work is presented
165+
as shipped, when a source PR is absent from the contribution record, when
166+
direct commits are rendered as a public record dump, when non-editorial
167+
PRs appear in grouped prose, or when an eligible PR author or known
168+
co-author is missing from that PR's `Thanks @...` credit
169+
- when grouped prose names a PR, that same bullet must retain every
170+
contributor and linked-reporter credit from its generated PR record
171+
- unqualified `#NNN` references resolve against `openclaw/openclaw`;
172+
cross-repository references such as `openclaw/imsg#141` remain literal
173+
text and must not be rewritten as local issue links
174+
- after the GitHub release or prerelease is published, verify every matching
175+
release page against the same source section:
176+
```bash
177+
node .agents/skills/openclaw-changelog-update/scripts/verify-release-notes.mjs \
178+
--base <base-tag> \
179+
--target <target-ref> \
180+
--version <YYYY.M.PATCH> \
181+
--release-tag v<YYYY.M.PATCH> \
182+
--check-github
183+
```
184+
- add one `--release-tag` for every beta and stable page in the train; a
185+
`### Release verification` tail is permitted, but any other body drift
186+
fails the check; the GitHub body must begin with the complete
187+
`## YYYY.M.PATCH` changelog section, including its heading
188+
- GitHub release bodies are limited to 125,000 characters. If the complete
189+
source section plus an existing verification tail exceeds that limit, keep
190+
the source section intact and omit the tail; never truncate the
191+
contribution record
192+
- `git diff --check`
193+
- for docs/changelog-only changes, no broad tests are required
194+
- commit with `scripts/committer "docs(changelog): refresh YYYY.M.PATCH notes" CHANGELOG.md`
195+
- push, pull/rebase if needed, then branch/rebase release from latest `main`
124196

125197
## Quota / API Outage Rule
126198

0 commit comments

Comments
 (0)