Skip to content

Fix tools.profile null handling and pnpm test integer comparison for 2026.3.11 upgrade - #10

Closed
vhrahulkumar with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-openclaw-upgrade-tests
Closed

Fix tools.profile null handling and pnpm test integer comparison for 2026.3.11 upgrade#10
vhrahulkumar with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-openclaw-upgrade-tests

Conversation

Copilot AI commented Mar 23, 2026

Copy link
Copy Markdown

Upgrade verification tests failed on two assertions: tools.profile returned null instead of "coding", and the pnpm exclusion check threw an integer comparison error.

Changes

Config init: Handle null values in tools.profile

The //= operator only sets missing keys, not null values. When upgrading from configs with explicit null, the default wasn't applied.

# Before: Only sets if key is missing
jq '.tools.profile //= "coding"'

# After: Sets for both missing and null
jq '.tools.profile = (if .tools.profile == null then "coding" else .tools.profile end)'

Preserves existing non-null user settings while ensuring the "coding" default for fresh or null configs.

Test script: Sanitize grep output before integer comparison

Added character stripping to ensure PNPM_EXCLUDED is a valid integer before comparison:

PNPM_EXCLUDED=${PNPM_EXCLUDED//[^0-9]/}
PNPM_EXCLUDED=${PNPM_EXCLUDED:-0}

Impact

  • Net +2 lines across 2 files
  • Backward compatible: preserves user config when set
  • No breaking changes
Original prompt

This section details on the original issue you should resolve

<issue_title>⚠️ OpenClaw 2026.3.11 upgrade failed automated tests</issue_title>
<issue_description>## Automated Upgrade Failed: 2026.2.9 → 2026.3.11

Failed stage: Docker smoke tests
Workflow run: https://github.com/vhrahulkumar/openclaw-appplatform/actions/runs/23451488641

Test Output

=== OpenClaw Upgrade Verification ===

Waiting for container openclaw-upgrade-test to be ready...
✓ Container is responsive (waiting for init to complete...)
✓ s6 init complete (crond up)
✓ Version: 2026.3.11
✓ Config is valid JSON
FAIL: tools.profile is 'null' (expected 'coding')
✓ Config owned by openclaw
✓ Auth mode: token
✓ Gateway process running
✓ Tailscale binary present
Waiting for gateway HTTP...
✓ Gateway HTTP: 200
✓ Config writable by openclaw user
✓ Channel plugins loaded: discord,signal,telegram,whatsapp
✓ Backup config (backup.yaml) is valid
./tests/minimal/04-upgrade-verify.sh: line 151: [: 0
0: integer expression expected
WARN: pnpm store may not be excluded from backups
SKIP: Telegram channel probe (TELEGRAM_BOT_TOKEN not set)
✓ openclaw doctor completes

=== Upgrade Verification Results ===
  Passed:   11
  Failed:   1
  Warnings: 1

=== UPGRADE VERIFICATION FAILED (1 failures) ===

Known Regressions

  • vhrahulkumar/openclaw-appplatform#44708: [Bug]: Telegram media download broken since 2026.3.11
  • vhrahulkumar/openclaw-appplatform#45287: [Bug]: 2026.3.12 update rolls back during gateway CLI verification: plugins.slots.memory: plugin not found: memory-core
  • vhrahulkumar/openclaw-appplatform#47402: [Bug]: WebSocket device auth regression in 2026.3.13 breaks web dashboard connections
  • vhrahulkumar/openclaw-appplatform#44096: Hot reload sends SIGTERM to gateway on every config evaluation (2026.3.11)
  • vhrahulkumar/openclaw-appplatform#50541: [Bug]: CLI cannot connect to Gateway (missing scope: operator.read) - Downgrade to 2026.3.11 works

Release Notes

openclaw 2026.3.22

Breaking

  • Plugins/install: bare now prefers ClawHub before npm for npm-safe names, and only falls back to npm when ClawHub does not have that package or version. Docs: https://docs.openclaw.ai/tools/clawhub
  • Browser/Chrome MCP: remove the legacy Chrome extension relay path, bundled extension assets, , and . Run to migrate host-local browser config to / ; Docker, headless, sandbox, and remote browser flows still use raw CDP. Docs: https://docs.openclaw.ai/gateway/doctor and https://docs.openclaw.ai/tools/browser (#47893) Thanks @vincentkoc.
  • Tools/image generation: standardize the stock image create/edit path on the core tool. The old docs/examples are gone; if you previously copied that sample-skill config, switch to for built-in image generation or install a separate third-party skill explicitly.
  • Skills/image generation: remove the bundled skill wrapper. Use for the native Nano Banana-style path instead.
  • Plugins/SDK: the new public plugin SDK surface is ; is removed with no compatibility shim. Bundled plugins must use injected runtime for host-side operations (for example ) and any remaining direct imports must come from narrow subpaths instead of the monolithic SDK root. Docs: https://docs.openclaw.ai/plugins/sdk-migration and https://docs.openclaw.ai/plugins/sdk-overview
  • Plugins/message discovery: require for shared tool discovery. The legacy , , and adapter methods are removed. Plugin authors should migrate message discovery to and keep channel-specific action runtime code inside the owning plugin package. Thanks @gumadeiras.
  • Plugins/Matrix: add a new Matrix plugin backed by the official . If you are upgrading from the previous public Matrix plugin, follow the migration guide: https://docs.openclaw.ai/install/migrating-matrix Thanks @gumadeiras.
  • Config/env: remove legacy and compatibility env names across runtime, installers, and test tooling. Use the matching env names instead.
  • Config/state: remove legacy state-dir and auto-detection/migration fallback. If you still keep state under , move it to or set / explicitly. Docs: https://docs.openclaw.ai/install/migrating and https://docs.openclaw.ai/start/getting-started
  • Exec/env sandbox: block build-tool JVM injection (, , , ), glibc tunable exploitation (), and .NET dependency resolution hijack () from the host exec environment, and restrict Gradle init script redirect () as an override-only block so user-configured Gradle homes still propagate. (#49702)
  • Discord/commands: switch native command deployment to Carbon reconcile by default so Discord restarts stop churning slash commands through OpenClaw’s local deploy path. (#46597) Thanks @huntharo and @thewilloftheshadow.
  • Security/exec approvals: treat as a transparent dispatch wrapper during allowlist evaluation and allow-always persistence so approved commands bind the inner executable instead of the wrappe...
  • Fixes vhrahulkumar/openclaw-appplatform#9

📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

Copilot AI changed the title [WIP] Fix OpenClaw 2026.3.11 upgrade failed automated tests Fix tools.profile null handling and pnpm test integer comparison for 2026.3.11 upgrade Mar 23, 2026
Copilot AI requested a review from vhrahulkumar March 23, 2026 17:54
@vhrahulkumar
vhrahulkumar deleted the copilot/fix-openclaw-upgrade-tests branch March 24, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants