fix: avoid changed gate lint self-lock

This commit is contained in:
Peter Steinberger
2026-04-25 20:07:21 +01:00
parent 0e1ef93e84
commit 17401e31de
3 changed files with 22 additions and 5 deletions

View File

@@ -50,6 +50,9 @@ Docs: https://docs.openclaw.ai
### Fixes
- Tooling/check:changed: pass parent heavy-check lock markers to lint lanes so
`pnpm check:changed` no longer waits on its own `lint:extensions` child.
Thanks @steipete.
- Plugins/Bonjour: stop the gateway from crash-looping on `CIAO PROBING CANCELLED` when the mDNS watchdog cancels a stuck probe. Restores the rejection-handler wiring dropped during the bonjour plugin migration and shares unhandled-rejection state across module instances so plugin-staged copies of `openclaw/plugin-sdk/runtime` register into the same handler set the host consults. Especially affects Docker on macOS, where mDNS probing reliably hits the watchdog. Thanks @troyhitch.
- Google Meet: report pinned Chrome nodes as offline or missing capabilities in
setup/join diagnostics, keep inaccessible nodes out of auto-selection, and

View File

@@ -68,6 +68,7 @@ export function createChangedCheckPlan(result, options = {}) {
}
};
const addTypecheck = (name, args) => add(name, args, createSparseTsgoSkipEnv(baseEnv));
const addLint = (name, args) => add(name, args, baseEnv);
add("conflict markers", ["check:no-conflict-markers"]);
@@ -109,7 +110,7 @@ export function createChangedCheckPlan(result, options = {}) {
if (runAll) {
addTypecheck("typecheck all", ["tsgo:all"]);
add("lint", ["lint"]);
addLint("lint", ["lint"]);
add("runtime import cycles", ["check:import-cycles"]);
return {
commands,
@@ -135,16 +136,16 @@ export function createChangedCheckPlan(result, options = {}) {
}
if (lanes.core || lanes.coreTests) {
add("lint core", ["lint:core"]);
addLint("lint core", ["lint:core"]);
}
if (lanes.extensions || lanes.extensionTests) {
add("lint extensions", ["lint:extensions"]);
addLint("lint extensions", ["lint:extensions"]);
}
if (lanes.tooling) {
add("lint scripts", ["lint:scripts"]);
addLint("lint scripts", ["lint:scripts"]);
}
if (lanes.apps) {
add("lint apps", ["lint:apps"]);
addLint("lint apps", ["lint:apps"]);
}
if (lanes.core || lanes.extensions) {

View File

@@ -122,6 +122,19 @@ describe("scripts/changed-lanes", () => {
});
});
it("runs changed-check lint lanes under the parent heavy-check lock", () => {
const result = detectChangedLanes(["extensions/discord/src/index.ts"]);
const plan = createChangedCheckPlan(result, { env: { PATH: "/usr/bin" } });
const lintCommand = plan.commands.find((command) => command.args[0] === "lint:extensions");
expect(lintCommand?.env).toMatchObject({
OPENCLAW_OXLINT_SKIP_LOCK: "1",
OPENCLAW_TEST_HEAVY_CHECK_LOCK_HELD: "1",
OPENCLAW_TSGO_HEAVY_CHECK_LOCK_HELD: "1",
PATH: "/usr/bin",
});
});
it("routes core test-only changes to core test lanes only", () => {
const result = detectChangedLanes(["src/shared/string-normalization.test.ts"]);