Skip to content

Commit 0336938

Browse files
committed
docs(release): require early performance regression check
1 parent 9afbfc1 commit 0336938

2 files changed

Lines changed: 70 additions & 28 deletions

File tree

.agents/skills/openclaw-release-ci/SKILL.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,30 @@ The script prints only provider status and HTTP class, never tokens.
3535

3636
## Dispatch
3737

38+
Start product performance evidence as early as the release SHA exists, in
39+
parallel with other release work:
40+
41+
```bash
42+
gh workflow run openclaw-performance.yml \
43+
--repo openclaw/openclaw \
44+
--ref main \
45+
-f target_ref=<release-sha> \
46+
-f profile=release \
47+
-f repeat=3 \
48+
-f deep_profile=false \
49+
-f live_openai_candidate=false \
50+
-f fail_on_regression=false
51+
```
52+
53+
- Do not wait for full release validation to start this early perf signal.
54+
- Compare available Kova, gateway startup, and CLI startup metrics with earlier
55+
release evidence or clawgrit reports before publish/closeout.
56+
- Call out any regression in the release proof. Treat a major regression as a
57+
release blocker until it is fixed, waived by the operator, or proven to be
58+
infrastructure noise.
59+
- Full Release Validation also records advisory product-performance evidence;
60+
the early standalone run is for overlap and faster regression discovery.
61+
3862
Prefer the trusted workflow on `main`, target the exact release SHA:
3963

4064
```bash
@@ -85,7 +109,8 @@ Record:
85109

86110
- release SHA
87111
- full parent run URL
88-
- child run IDs and conclusions: CI, Release Checks, Plugin Prerelease, NPM Telegram
112+
- child run IDs and conclusions: CI, Release Checks, Plugin Prerelease, NPM Telegram, Product Performance
113+
- performance comparison result versus earlier releases when available
89114
- targeted local proof commands
90115
- provider-secret preflight result
91116
- known gaps or unrelated failures

.agents/skills/openclaw-release-maintainer/SKILL.md

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,15 @@ Use this skill for release and publish-time workflow. Keep ordinary development
5959
fixes that landed after the release branch cut and backport only important
6060
low-risk fixes. Operators may authorize up to 4 autonomous beta attempts;
6161
after 4 failed beta attempts, stop and report.
62+
- As soon as the release candidate SHA exists, dispatch `OpenClaw Performance`
63+
with `target_ref=<release-sha>` in parallel with the other release work. Do
64+
not wait for full release validation to start the performance signal.
65+
- Before publish/closeout, compare available product performance metrics with
66+
earlier releases: Kova agent-turn/resource metrics, gateway startup
67+
ready/listen/RSS/CPU metrics, and CLI startup metrics from release evidence
68+
or clawgrit reports. Report regressions explicitly. A major regression is a
69+
release blocker unless the operator waives it or the data clearly proves
70+
infrastructure noise.
6271
- Use `/changelog` before version/tag preparation so the top changelog section
6372
is deduped and ordered by user impact.
6473
- Do not create beta-specific `CHANGELOG.md` headings. Beta releases use the
@@ -540,50 +549,58 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
540549
6. Create `release/YYYY.M.D` from that post-changelog `main` commit.
541550
7. Make every repo version location match the beta tag before creating it.
542551
8. Commit release preparation changes on the release branch and push the branch.
543-
9. Run the fast local beta preflight from the release branch before any npm
544-
preflight or publish. Keep expensive Docker, Parallels, and published-package
545-
install/update lanes for after the beta is live unless the operator asks to
546-
run them before beta publication.
547-
10. For beta releases, skip mac app build/sign/notarize unless beta scope or a
552+
9. Immediately dispatch Actions > `OpenClaw Performance` from `main` with
553+
`target_ref=<release-sha>`, `profile=release`, `repeat=3`, deep profiling
554+
off, live OpenAI off, and regression failure off. Let it run in parallel
555+
with preflight and validation work.
556+
10. Run the fast local beta preflight from the release branch before any npm
557+
preflight or publish. Keep expensive Docker, Parallels, and published-package
558+
install/update lanes for after the beta is live unless the operator asks to
559+
run them before beta publication.
560+
11. For beta releases, skip mac app build/sign/notarize unless beta scope or a
548561
release blocker specifically requires it. For stable releases, include the
549562
mac app, signing, notarization, and appcast path.
550-
11. Confirm the target npm version is not already published.
551-
12. Create and push the git tag from the release branch.
552-
13. Create or refresh the matching GitHub release.
553-
14. Dispatch Actions > `QA-Lab - All Lanes` against the release tag and wait
563+
12. Confirm the target npm version is not already published.
564+
13. Create and push the git tag from the release branch.
565+
14. Create or refresh the matching GitHub release.
566+
15. Dispatch Actions > `QA-Lab - All Lanes` against the release tag and wait
554567
for the mock parity, live Matrix, and live Telegram credentialed-channel
555568
lanes to pass.
556-
15. Start `.github/workflows/openclaw-npm-release.yml` from the release branch
569+
16. Start `.github/workflows/openclaw-npm-release.yml` from the release branch
557570
with `preflight_only=true`
558571
and choose the intended `npm_dist_tag` (`beta` default; `latest` only for
559572
an intentional direct stable publish). Wait for it to pass. Save that run id
560573
because the real publish requires it to reuse the prepared npm tarball.
561-
16. For stable releases, start `.github/workflows/macos-release.yml` in
574+
17. Before real publish, review the early performance run if it has completed.
575+
Compare against earlier release evidence or clawgrit reports where
576+
available. Call out minor regressions in the release proof; block on major
577+
regressions unless waived or proven noisy.
578+
18. For stable releases, start `.github/workflows/macos-release.yml` in
562579
`openclaw/openclaw` and wait for the public validation-only run to pass.
563-
17. For stable releases, start
580+
19. For stable releases, start
564581
`openclaw/releases-private/.github/workflows/openclaw-macos-validate.yml`
565582
with the same tag and wait for the private mac validation lane to pass.
566-
18. For stable releases, start
583+
20. For stable releases, start
567584
`openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml`
568585
with `preflight_only=true` and wait for it to pass. Save that run id because
569586
the real publish requires it to reuse the notarized mac artifacts.
570-
19. If any preflight or validation run fails, fix the issue on a new commit,
587+
21. If any preflight or validation run fails, fix the issue on a new commit,
571588
delete the tag and matching GitHub release, recreate them from the fixed
572589
commit, and rerun all relevant preflights from scratch before continuing.
573590
Never reuse old preflight results after the commit changes. For pushed or
574591
published beta tags, do not delete/recreate; increment to the next beta tag.
575592
For preflight-only failures where npm did not publish the beta version,
576593
delete/recreate the same beta tag and prerelease at the fixed commit instead
577594
of skipping a prerelease number.
578-
20. Start `.github/workflows/openclaw-npm-release.yml` from the same branch with
595+
22. Start `.github/workflows/openclaw-npm-release.yml` from the same branch with
579596
the same tag for the real publish, choose `npm_dist_tag` (`beta` default,
580597
`latest` only when you intentionally want direct stable publish), keep it
581598
the same as the preflight run, and pass the successful npm
582599
`preflight_run_id`.
583-
21. Wait for `npm-release` approval from `@openclaw/openclaw-release-managers`.
584-
22. Run postpublish verification:
600+
23. Wait for `npm-release` approval from `@openclaw/openclaw-release-managers`.
601+
24. Run postpublish verification:
585602
`node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>`.
586-
23. Run the post-published beta verification roster. First scan current `main`
603+
25. Run the post-published beta verification roster. First scan current `main`
587604
for critical fixes that landed after the release branch cut; backport only
588605
important low-risk fixes before starting expensive lanes, or increment to
589606
the next beta if the fix must change the already-published package. If any
@@ -597,35 +614,35 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
597614
If a pre-npm lane fails before any tag/package leaves the machine, fix and
598615
rerun the same intended beta attempt. Repeat up to the operator's
599616
authorized beta-attempt limit, normally 4.
600-
24. Announce the beta/stable release on Discord best-effort using the configured secret workflow.
601-
25. If the operator requested beta only, stop after beta verification and the
617+
26. Announce the beta/stable release on Discord best-effort using the configured secret workflow.
618+
27. If the operator requested beta only, stop after beta verification and the
602619
announcement.
603-
26. If the stable release was published to `beta`, use the light stable
620+
28. If the stable release was published to `beta`, use the light stable
604621
promotion roster when the matching beta already carried the full confidence
605622
pass: published npm postpublish verify, Docker install/update smoke,
606623
macOS-only Parallels install/update smoke, and required QA signal.
607624
Then start the private
608625
`openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml`
609626
workflow to promote that stable version from `beta` to `latest`, then
610627
verify `latest` now points at that version.
611-
27. If the stable release was published directly to `latest` and `beta` should
628+
29. If the stable release was published directly to `latest` and `beta` should
612629
follow it, start that same private dist-tag workflow to point `beta` at the
613630
stable version, then verify both `latest` and `beta` point at that version.
614-
28. For stable releases, start
631+
30. For stable releases, start
615632
`openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml`
616633
for the real publish with the successful private mac `preflight_run_id` and
617634
wait for success.
618-
29. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
635+
31. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
619636
and `.dSYM.zip` artifacts to the existing GitHub release in
620637
`openclaw/openclaw`.
621-
30. For stable releases, download `macos-appcast-<tag>` from the successful
638+
32. For stable releases, download `macos-appcast-<tag>` from the successful
622639
private mac run, update `appcast.xml` on `main`, and verify the feed. Merge
623640
or cherry-pick release branch changes back to `main` after stable succeeds.
624-
31. For beta releases, publish the mac assets only when intentionally requested;
641+
33. For beta releases, publish the mac assets only when intentionally requested;
625642
expect no shared production
626643
`appcast.xml` artifact and do not update the shared production feed unless a
627644
separate beta feed exists.
628-
32. After publish, verify npm and the attached release artifacts.
645+
34. After publish, verify npm and the attached release artifacts.
629646

630647
## GHSA advisory work
631648

0 commit comments

Comments
 (0)