惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
Last Week in AI
Last Week in AI

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
docs(release): backfill complete contribution records · o...
vincentkoc · 2026-06-18 · via Recent Commits to openclaw:main

@@ -12,10 +12,10 @@ content, ordering, grouping, and attribution discipline.

12121313

## Goal

141415-

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.

19192020

## 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`

124196125197

## Quota / API Outage Rule

126198