






















@@ -216,6 +216,10 @@ dispatch always shards full Matrix coverage into `transport`, `media`,
216216runs the release-critical QA Lab lanes before release approval; its QA parity
217217gate runs the candidate and baseline packs as parallel lane jobs, then downloads
218218both artifacts into a small report job for the final parity comparison.
219+Do not put the PR landing path behind `Parity gate` unless the change actually
220+touches QA runtime, model-pack parity, or a surface the parity workflow owns.
221+For normal channel, config, docs, or unit-test fixes, treat it as an optional
222+signal and follow the scoped CI/check evidence instead.
219223220224The `Duplicate PRs After Merge` workflow is a manual maintainer workflow for
221225post-land duplicate cleanup. It defaults to dry-run and only closes explicitly
@@ -330,6 +334,25 @@ The separate `install-smoke` workflow reuses the same scope script through its o
330334Current release Docker chunks are `core`, `package-update-openai`, `package-update-anthropic`, `package-update-core`, `plugins-runtime-plugins`, `plugins-runtime-services`, `plugins-runtime-install-a`, `plugins-runtime-install-b`, `plugins-runtime-install-c`, `plugins-runtime-install-d`, `bundled-channels-core`, `bundled-channels-update-a`, `bundled-channels-update-b`, and `bundled-channels-contracts`. The aggregate `bundled-channels` chunk remains available for manual one-shot reruns, and `plugins-runtime-core`, `plugins-runtime`, and `plugins-integrations` remain aggregate plugin/runtime aliases, but the release workflow uses the split chunks so channel smokes, update targets, plugin runtime checks, and bundled plugin install/uninstall sweeps can run in parallel. Targeted `docker_lanes` dispatches also split multiple selected lanes into parallel jobs after one shared package/image preparation step, and bundled-channel update lanes retry once for transient npm network failures.
331335332336Local changed-lane logic lives in `scripts/changed-lanes.mjs` and is executed by `scripts/check-changed.mjs`. That local check gate is stricter about architecture boundaries than the broad CI platform scope: core production changes run core prod and core test typecheck plus core lint/guards, core test-only changes run only core test typecheck plus core lint, extension production changes run extension prod and extension test typecheck plus extension lint, and extension test-only changes run extension test typecheck plus extension lint. Public Plugin SDK or plugin-contract changes expand to extension typecheck because extensions depend on those core contracts, but Vitest extension sweeps are explicit test work. Release metadata-only version bumps run targeted version/config/root-dependency checks. Unknown root/config changes fail safe to all check lanes.
337+Local changed-test routing lives in `scripts/test-projects.test-support.mjs` and
338+is intentionally cheaper than `check:changed`: direct test edits run themselves,
339+source edits prefer explicit mappings, then sibling tests and import-graph
340+dependents. Shared group-room delivery config is one of the explicit mappings:
341+changes to the group visible-reply config, source reply delivery mode, or the
342+message-tool system prompt route through the core reply tests plus Discord and
343+Slack delivery regressions so a shared default change fails before the first PR
344+push. Use `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed` only when the change
345+is harness-wide enough that the cheap mapped set is not a trustworthy proxy.
346+347+For Testbox validation, run from the repo root and prefer a fresh warmed box for
348+broad proof. Before spending a slow gate on a box that was reused, expired, or
349+just reported an unexpectedly large sync, run `pnpm testbox:sanity` inside the
350+box first. The sanity check fails fast when required root files such as
351+`pnpm-lock.yaml` disappeared or when `git status --short` shows at least 200
352+tracked deletions. That usually means the remote sync state is not a trustworthy
353+copy of the PR. Stop that box and warm a fresh one instead of debugging the
354+product test failure. For intentional large deletion PRs, set
355+`OPENCLAW_TESTBOX_ALLOW_MASS_DELETIONS=1` for that sanity run.
333356334357Manual CI dispatches run `checks-node-compat-node22` as release-candidate compatibility coverage. Normal pull requests and `main` pushes skip that lane and keep the matrix focused on the Node 24 test/channel lanes.
335358此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。