Upgrade OpenClaw to 2026.5.18#3825
Conversation
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
📝 WalkthroughWalkthroughThis PR updates OpenClaw from ChangesOpenClaw Version Update and Patch Enhancement
🎯 2 (Simple) | ⏱️ ~12 minutes Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-3825.docs.buildwithfern.com/nemoclaw |
There was a problem hiding this comment.
🧹 Nitpick comments (3)
Dockerfile.base (1)
180-180: Run the Dockerfile.base E2E suite for container-layer validation.Since this line changes the sandbox base image OpenClaw pin, run the targeted nightly E2E jobs before merge to validate runtime behavior (
cloud-e2e,sandbox-survival-e2e,hermes-e2e,rebuild-openclaw-e2e).As per coding guidelines: "
Dockerfile.base: This file affects the sandbox container image... E2E test recommendation: cloud-e2e, sandbox-survival-e2e, hermes-e2e, rebuild-openclaw-e2e."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Dockerfile.base` at line 180, This diff updates the OpenClaw base image pin via the ARG OPENCLAW_VERSION declaration; before merging, run the targeted container-layer E2E validation suite to ensure runtime compatibility: execute cloud-e2e, sandbox-survival-e2e, hermes-e2e, and rebuild-openclaw-e2e against the updated ARG OPENCLAW_VERSION to validate the sandbox image and surface any regressions.test/fetch-guard-patch-regression.test.ts (1)
162-221: ⚡ Quick winCover both supported timeout literals in this regression test.
Line 162 currently verifies only the
15e3shape, while the Dockerfile patch explicitly supports both15e3and1e4. Parameterizing this test would lock in the full compatibility contract.♻️ Suggested test hardening
-it("patches the OpenClaw 2026.5.x handshake timeout constant shape", () => { +it.each(["15e3", "1e4"] as const)( + "patches the OpenClaw handshake timeout constant shape: %s", + (originalLiteral) => { const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-handshake-timeout-")); const dist = path.join(tmp, "dist"); fs.mkdirSync(dist, { recursive: true }); const modulePath = path.join(dist, "handshake-timeouts-test.js"); fs.writeFileSync( modulePath, [ - "const DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 15e3;", + `const DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = ${originalLiteral};`, "const MAX_CONNECT_CHALLENGE_TIMEOUT_MS = DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS;", "export { DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS };", "", ].join("\n"), ); @@ expect(patch.status, `${patch.stdout}${patch.stderr}`).toBe(0); const patched = fs.readFileSync(modulePath, "utf-8"); expect(patched).toContain("DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 6e4"); - expect(patched).not.toContain("DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 15e3"); + expect(patched).not.toContain( + `DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = ${originalLiteral}`, + ); } finally { fs.rmSync(tmp, { recursive: true, force: true }); } - }); + }, +);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/fetch-guard-patch-regression.test.ts` around lines 162 - 221, The test "patches the OpenClaw 2026.5.x handshake timeout constant shape" only asserts replacement of the 15e3 literal; update it to cover both supported source literals (15e3 and 1e4) by parameterizing the expectation: run the same patch invocation and assert that DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS is changed to 6e4 for inputs originally containing either "DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 15e3" or "DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 1e4" (e.g., loop over an array of sourceLiteral strings before writing modulePath and making the same assertions against the patched file). Ensure the test still verifies the old literal is removed and the new "6e4" value is present for each case.Dockerfile (1)
205-223: Run the Dockerfile E2E matrix before merge.This layer mutates runtime OpenClaw dist behavior in-image, so please validate with the recommended end-to-end jobs.
As per coding guidelines: "
Dockerfile: This file affects the sandbox container image... E2E test recommendation:cloud-e2e,sandbox-survival-e2e,hermes-e2e,rebuild-openclaw-e2e."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Dockerfile` around lines 205 - 223, This Dockerfile change mutates runtime OpenClaw distribution (the patch that replaces DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS values in the Dockerfile patch block), so before merging run the recommended E2E matrix: execute cloud-e2e, sandbox-survival-e2e, hermes-e2e and rebuild-openclaw-e2e against the built image and verify the OpenClaw behavior (including the patched DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS change) is correct and no regressions occur; only merge once all these end-to-end jobs pass.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@Dockerfile`:
- Around line 205-223: This Dockerfile change mutates runtime OpenClaw
distribution (the patch that replaces DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS
values in the Dockerfile patch block), so before merging run the recommended E2E
matrix: execute cloud-e2e, sandbox-survival-e2e, hermes-e2e and
rebuild-openclaw-e2e against the built image and verify the OpenClaw behavior
(including the patched DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS change) is correct
and no regressions occur; only merge once all these end-to-end jobs pass.
In `@Dockerfile.base`:
- Line 180: This diff updates the OpenClaw base image pin via the ARG
OPENCLAW_VERSION declaration; before merging, run the targeted container-layer
E2E validation suite to ensure runtime compatibility: execute cloud-e2e,
sandbox-survival-e2e, hermes-e2e, and rebuild-openclaw-e2e against the updated
ARG OPENCLAW_VERSION to validate the sandbox image and surface any regressions.
In `@test/fetch-guard-patch-regression.test.ts`:
- Around line 162-221: The test "patches the OpenClaw 2026.5.x handshake timeout
constant shape" only asserts replacement of the 15e3 literal; update it to cover
both supported source literals (15e3 and 1e4) by parameterizing the expectation:
run the same patch invocation and assert that
DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS is changed to 6e4 for inputs originally
containing either "DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 15e3" or
"DEFAULT_PREAUTH_HANDSHAKE_TIMEOUT_MS = 1e4" (e.g., loop over an array of
sourceLiteral strings before writing modulePath and making the same assertions
against the patched file). Ensure the test still verifies the old literal is
removed and the new "6e4" value is present for each case.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 356604a2-7d9b-4a10-adc7-35d38f95bd5f
📒 Files selected for processing (10)
DockerfileDockerfile.baseagents/openclaw/manifest.yamldocs/reference/commands.mddocs/reference/commands.mdxnemoclaw-blueprint/blueprint.yamlnemoclaw/package.jsonnemoclaw/src/package-metadata.test.tssrc/lib/sandbox/version.test.tstest/fetch-guard-patch-regression.test.ts
E2E Advisor RecommendationRequired E2E: Dispatch hint: Auto-dispatched E2E: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
Selective E2E Results — ❌ Some jobs failedRun: 26126693020
|
Selective E2E Results — ❌ Some jobs failedRun: 26126544011
|
Summary
2026.5.18.Local validation
npm ci --ignore-scriptspassed.npm run build:clipassed.npm run validate:configspassed: 22 config files valid.npx vitest run --project plugin nemoclaw/src/package-metadata.test.tspassed: 1 test.npx vitest run --project cli src/lib/sandbox/version.test.ts src/lib/sandbox-base-image.test.ts test/fetch-guard-patch-regression.test.ts test/validate-blueprint.test.tspassed: 83 tests.npm run source-shape:checkpassed: no source-shape tests detected.npm run checkspassed.git diff --checkpassed.Notes
npm view openclaw@2026.5.18 versionreturned2026.5.18.15e3, which required the Dockerfile regex update.E2E / Nightlyworkflow dispatch will follow this PR creation.Summary by CodeRabbit
Chores
Documentation