Skip to content

Commit fe5a4d5

Browse files
committed
Merge remote-tracking branch 'origin/main' into codex/issue-64714-streamto-autofill
2 parents a8ad950 + 8f4331e commit fe5a4d5

3,199 files changed

Lines changed: 182858 additions & 43543 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-parallels-smoke/SKILL.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,22 @@ Use this skill for Parallels guest workflows and smoke interpretation. Do not lo
1616
- Pass `--json` for machine-readable summaries.
1717
- Per-phase logs land under `/tmp/openclaw-parallels-*`.
1818
- Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
19+
- Hard-cap every top-level Parallels lane with host `timeout --foreground` (or `gtimeout --foreground` if that is the available binary) so a stalled install, snapshot switch, or `prlctl exec` transport cannot consume the rest of the testing window. Defaults:
20+
- macOS: `75m`
21+
- Linux: `75m`
22+
- Windows: `90m`
23+
- aggregate npm-update wrapper: `150m`
24+
If a lane hits the cap, stop there, inspect the newest `/tmp/openclaw-parallels-*` run directory and phase log, then fix or rerun the smallest affected lane. Do not keep waiting on a capped lane.
25+
- Actual OpenClaw npm install/update phases are a stricter budget than whole lanes: they should finish within 5 minutes. If a phase named `install-main`, `install-latest`, `install-baseline`, `install-baseline-package`, `update-dev`, or same-guest `openclaw update` exceeds 300s, treat it as a failure/harness bug and start diagnosis from that phase log. Do not wait for a longer lane cap.
26+
- For a full OS matrix, prefer running independent guest-family lanes in parallel when host capacity allows:
27+
- `timeout --foreground 75m pnpm test:parallels:macos -- --json`
28+
- `timeout --foreground 90m pnpm test:parallels:windows -- --json`
29+
- `timeout --foreground 75m pnpm test:parallels:linux -- --json`
30+
Keep each lane in its own shell/session and track the run directory for each one.
1931
- Do not run multiple smoke lanes against the same guest family at once. Tahoe lanes share the host HTTP port, and Windows/Linux lanes can collide on snapshot restore/start state if two jobs touch the same VM concurrently.
32+
- Do not run the aggregate `pnpm test:parallels:npm-update` wrapper in parallel with individual macOS/Windows/Linux smoke lanes; it touches the same guest families and snapshots.
33+
- Do not start Parallels lanes while any host command may rebuild, clean, or restage `dist` (`pnpm build`, `pnpm ui:build`, `pnpm release:check`, `pnpm test:install:smoke`, npm pack/install smoke, or Docker lanes that run package/build prep). Run the build/package gates first, let them finish, then start the VM matrix. Concurrent `dist` mutation can make host `npm pack` fail with missing files and wastes a full VM cycle.
34+
- While running or optimizing the matrix, record wall-clock duration per lane and the slowest phase from `/tmp/openclaw-parallels-*` logs. Use that timing before changing smoke order, timeouts, or helper behavior.
2035
- If `main` is moving under active multi-agent work, prefer a detached worktree pinned to one commit for long Parallels suites. The smoke scripts now verify the packed tgz commit instead of live `git rev-parse HEAD`, but a pinned worktree still avoids noisy rebuild/version drift during reruns.
2136
- For `openclaw update --channel dev` lanes, remember the guest clones GitHub `main`, not your local worktree. If a local fix exists but the rerun still fails inside the cloned dev checkout, do not treat that as disproof of the fix until the branch has been pushed.
2237
- For `prlctl exec`, pass the VM name before `--current-user` (`prlctl exec "$VM" --current-user ...`), not the other way around.
@@ -29,7 +44,13 @@ Use this skill for Parallels guest workflows and smoke interpretation. Do not lo
2944
## npm install then update
3045

3146
- Preferred entrypoint: `pnpm test:parallels:npm-update`
32-
- Flow: fresh snapshot -> install npm package baseline -> smoke -> install current main tgz on the same guest -> smoke again.
47+
- Required coverage: every release/update regression run must include both lanes:
48+
- fresh snapshot -> install requested package/baseline -> smoke
49+
- same guest baseline -> run the guest's installed `openclaw update ...` command -> smoke again
50+
- The update lane must exercise OpenClaw's internal updater. Do not count a direct `npm install -g <tgz-or-spec>` or harness-side package swap as update-flow coverage; those are install smokes only.
51+
- For published targets, install the old baseline package first (for example `[email protected]`), then run the installed guest CLI with the intended channel/tag (for example `openclaw update --channel beta --yes --json`) and verify `openclaw --version`, `openclaw update status --json`, gateway RPC, and an agent turn after the command.
52+
- For unpublished targets, pack the candidate on the host, serve the `.tgz` over the harness HTTP server, and point the guest updater at that served package. Prefer `openclaw update --tag http://<host-ip>:<port>/openclaw-<version>.tgz --yes --json`; when channel persistence also matters, pass `--channel <stable|beta>` and set `OPENCLAW_UPDATE_PACKAGE_SPEC` to the same served URL in the guest update environment. The command under test must still be `openclaw update`, not direct npm.
53+
- For unpublished local-fix validation, remember the old baseline updater code still controls the first hop. A fix that lives only in the new updater code cannot change that already-running old process; the served candidate must either keep package/plugin metadata compatible with the baseline host or the baseline itself must include the updater fix.
3354
- For beta/stable verification, resolve the tag immediately before the run (`npm view openclaw@beta version dist.tarball` or `npm view openclaw@latest ...`). Tags can move while a long VM matrix is already running; restart the matrix when the intended prerelease appears after an earlier registry 404/tag-lag check.
3455
- Source Peter's profile in the host shell (`set -a; source "$HOME/.profile"; set +a`) before OpenAI/Anthropic lanes. Do not print profile contents or env dumps; pass provider secrets through the guest exec environment.
3556
- Same-guest update verification should set the default model explicitly to `openai/gpt-5.4` before the agent turn and use a fresh explicit `--session-id` so old session model state does not leak into the check.

.agents/skills/openclaw-qa-testing/SKILL.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ Use this skill for `qa-lab` / `qa-channel` work. Repo-local QA only.
1212
- `docs/concepts/qa-e2e-automation.md`
1313
- `docs/help/testing.md`
1414
- `docs/channels/qa-channel.md`
15-
- `qa/QA_KICKOFF_TASK.md`
16-
- `qa/seed-scenarios.json`
15+
- `qa/README.md`
16+
- `qa/scenarios/index.md`
1717
- `extensions/qa-lab/src/suite.ts`
1818
- `extensions/qa-lab/src/character-eval.ts`
1919

@@ -28,24 +28,24 @@ Use this skill for `qa-lab` / `qa-channel` work. Repo-local QA only.
2828

2929
## Default workflow
3030

31-
1. Read the seed plan and current suite implementation.
31+
1. Read the scenario pack and current suite implementation.
3232
2. Decide lane:
3333
- mock/dev: `mock-openai`
34-
- real validation: `live-openai`
34+
- real validation: `live-frontier`
3535
3. For live OpenAI, use:
3636

3737
```bash
3838
OPENCLAW_LIVE_OPENAI_KEY="${OPENAI_API_KEY}" \
3939
pnpm openclaw qa suite \
40-
--provider-mode live-openai \
40+
--provider-mode live-frontier \
4141
--model openai/gpt-5.4 \
4242
--alt-model openai/gpt-5.4 \
43-
--output-dir .artifacts/qa-e2e/run-all-live-openai-<tag>
43+
--output-dir .artifacts/qa-e2e/run-all-live-frontier-<tag>
4444
```
4545

4646
4. Watch outputs:
47-
- summary: `.artifacts/qa-e2e/run-all-live-openai-<tag>/qa-suite-summary.json`
48-
- report: `.artifacts/qa-e2e/run-all-live-openai-<tag>/qa-suite-report.md`
47+
- summary: `.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-summary.json`
48+
- report: `.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-report.md`
4949
5. If the user wants to watch the live UI, find the current `openclaw-qa` listen port and report `http://127.0.0.1:<port>`.
5050
6. If a scenario fails, fix the product or harness root cause, then rerun the full lane.
5151

@@ -141,8 +141,8 @@ pnpm openclaw qa manual \
141141

142142
## When adding scenarios
143143

144-
- Add scenario metadata to `qa/seed-scenarios.json`
145-
- Keep kickoff expectations in `qa/QA_KICKOFF_TASK.md` aligned
144+
- Add or update scenario markdown under `qa/scenarios/`
145+
- Keep kickoff expectations in `qa/scenarios/index.md` aligned
146146
- Add executable coverage in `extensions/qa-lab/src/suite.ts`
147147
- Prefer end-to-end assertions over mock-only checks
148148
- Save outputs under `.artifacts/qa-e2e/`

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

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,22 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
8686
- For stable correction releases like `YYYY.M.D-N`, it also verifies the
8787
upgrade path from `YYYY.M.D` to `YYYY.M.D-N` so a correction publish cannot
8888
silently leave existing global installs on the old base stable payload.
89+
- Treat install smoke as a pack-budget gate too. `pnpm test:install:smoke`
90+
now fails the candidate update tarball when npm reports an oversized
91+
`unpackedSize`, so release-time e2e cannot miss pack bloat that would risk
92+
low-memory install/startup failures.
93+
- Keep direct npm global coverage enabled in install smoke. It exercises plain
94+
`npm install -g <candidate>` fresh installs and npm-driven update installs,
95+
because many users install with npm even when docs prefer pnpm.
96+
- Use `pnpm test:live:media video` for bounded video-provider smoke when video
97+
generation is in release scope. The default video smoke skips `fal`, runs one
98+
text-to-video attempt per provider with a one-second lobster prompt, and caps
99+
each provider operation with `OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS`
100+
(`180000` by default).
101+
- Run `pnpm test:live:media video --video-providers fal` only when FAL-specific
102+
proof is required. Its queue latency can dominate release time.
103+
- Set `OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1` only when intentionally
104+
validating the slower image-to-video and video-to-video transform lanes.
89105

90106
## Check all relevant release builds
91107

@@ -97,6 +113,13 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
97113
- `pnpm release:check`
98114
- `OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke`
99115
- Check all release-related build surfaces touched by the release, not only the npm package.
116+
- For beta-style full e2e batteries, hard-cap top-level long lanes instead of letting them run indefinitely. Use host `timeout --foreground`/`gtimeout --foreground` caps such as:
117+
- `45m` for `OPENCLAW_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke`
118+
- `90m` for `pnpm test:docker:all`
119+
- Parallels caps from the `openclaw-parallels-smoke` skill
120+
If a lane hits its cap, stop and inspect/fix the affected lane before continuing; do not continue to wait on the same process.
121+
- Actual npm install/update phases are capped at 5 minutes. If `npm install -g`, installer package install, or `openclaw update` takes longer than 300s in release e2e, stop treating the run as healthy progress and debug the installer/updater or harness.
122+
- Serialize host build/package mutations ahead of VM lanes. Finish `pnpm build`, `pnpm ui:build`, `pnpm release:check`, install smoke, and any Docker/package-prep lanes before starting Parallels `npm pack` lanes; otherwise `dist` can disappear during VM pack prep and produce false failures.
100123
- Include mac release readiness in preflight by running the public validation
101124
workflow in `openclaw/openclaw` and the real mac preflight in
102125
`openclaw/releases-private` for every release.
@@ -120,6 +143,10 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
120143
`.github/workflows/openclaw-npm-release.yml`, but it still needs a valid
121144
`NPM_TOKEN` because `npm dist-tag` management is separate from trusted
122145
publishing.
146+
- Direct stable publishes can also run the same workflow with
147+
`sync_stable_dist_tags=true` to point both `latest` and `beta` at the
148+
already-published stable version. This also needs the `npm-release`
149+
environment approval and `NPM_TOKEN`.
123150
- The publish run must be started manually with `workflow_dispatch`.
124151
- The npm workflow and the private mac publish workflow accept
125152
`preflight_only=true` to run validation/build/package steps without uploading
@@ -178,7 +205,10 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
178205
plan does not yet support required reviewers there, do not assume the
179206
environment alone is the approval boundary; rely on private repo access and
180207
CODEOWNERS until those settings can be enabled.
181-
- Do not use `NPM_TOKEN` or the plugin OTP flow for OpenClaw releases.
208+
- Do not use `NPM_TOKEN` or the plugin OTP flow for the OpenClaw package
209+
publish path; package publishing uses trusted publishing.
210+
- Use `NPM_TOKEN` only for explicit npm dist-tag management modes, because npm
211+
does not support trusted publishing for `npm dist-tag add`.
182212
- `@openclaw/*` plugin publishes use a separate maintainer-only flow.
183213
- Only publish plugins that already exist on npm; bundled disk-tree-only plugins stay unpublished.
184214

@@ -248,19 +278,25 @@ node --import tsx scripts/openclaw-npm-postpublish-verify.ts <published-version>
248278
passes with the same stable tag, `promote_beta_to_latest=true`,
249279
`preflight_only=false`, empty `preflight_run_id`, and `npm_dist_tag=beta`,
250280
then verify `latest` now points at that version.
251-
17. Start
281+
17. If the stable release was published directly to `latest` and `beta` should
282+
follow it, start `.github/workflows/openclaw-npm-release.yml` again with
283+
the same stable tag, `sync_stable_dist_tags=true`,
284+
`promote_beta_to_latest=false`, `preflight_only=false`, empty
285+
`preflight_run_id`, and `npm_dist_tag=latest`, then verify both `latest`
286+
and `beta` point at that version.
287+
18. Start
252288
`openclaw/releases-private/.github/workflows/openclaw-macos-publish.yml`
253289
for the real publish with the successful private mac `preflight_run_id` and
254290
wait for success.
255-
18. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
291+
19. Verify the successful real private mac run uploaded the `.zip`, `.dmg`,
256292
and `.dSYM.zip` artifacts to the existing GitHub release in
257293
`openclaw/openclaw`.
258-
19. For stable releases, download `macos-appcast-<tag>` from the successful
294+
20. For stable releases, download `macos-appcast-<tag>` from the successful
259295
private mac run, update `appcast.xml` on `main`, and verify the feed.
260-
20. For beta releases, publish the mac assets but expect no shared production
296+
21. For beta releases, publish the mac assets but expect no shared production
261297
`appcast.xml` artifact and do not update the shared production feed unless a
262298
separate beta feed exists.
263-
21. After publish, verify npm and the attached release artifacts.
299+
22. After publish, verify npm and the attached release artifacts.
264300

265301
## GHSA advisory work
266302

0 commit comments

Comments
 (0)