Skip to content

[Bug]: 2026.6.1 — plugin install index + task registry/flow sidecar migrations fail with "statement.columns is not a function" after upgrade from 2026.5.7 #90007

Description

@TreyLawrence

Description

After upgrading from 2026.5.7 to 2026.6.1 via openclaw update --yes, the
post-update openclaw doctor step fails. The npm install + global swap succeed;
the doctor verification fails; the gateway is restarted but plugin/task state
stores are broken. The same TypeError: statement.columns is not a function
appears across three independent state migrations.

Environment

  • OS: macOS 25.3.0 (Darwin, arm64)
  • Node: v23.9.0
  • Install method: npm global
  • Previous version: 2026.5.7
  • Target version: 2026.6.1 (latest tag — just promoted from beta)

Steps to reproduce

  1. Have [email protected] installed globally with state in ~/.openclaw/
  2. Run openclaw backup create
  3. Run openclaw update --dry-run (planned actions look normal)
  4. Run openclaw update --yes

Actual

Update Result: ERROR
  Before: 2026.5.7
  After:  2026.6.1
  Steps:
    ✓ global update (7.09s)
    ✓ global install swap (1.95s)
    ✗ openclaw doctor (2.24s)
        PluginStateStoreError: Failed to open the plugin state database.

openclaw plugins doctor shows the underlying cause:

- Failed migrating plugin install index /Users/<user>/.openclaw/plugins/installs.json:
  TypeError: statement.columns is not a function
- Failed migrating task registry sidecar /Users/<user>/.openclaw/tasks/runs.sqlite:
  TypeError: statement.columns is not a function
- Failed migrating task flow sidecar /Users/<user>/.openclaw/flows/registry.sqlite:
  TypeError: statement.columns is not a function

Workaround

Downgrade to 2026.5.28 — migrations from 2026.5.7 → 2026.5.28 succeed cleanly.

npm install -g [email protected]

Possible cause

statement.columns() is a method on node:sqlite prepared statements
(Node 22.16+/23.x). Node 23.9.0 should have it, so either:

  1. The 2026.6.1 migration code is calling .columns() against a non-node:sqlite
    library (e.g. better-sqlite3 with a different API shape), or
  2. The migration code in 2026.6.1 has a regression vs. 2026.5.28.

Happy to provide more logs or test a patch.

Metadata

Metadata

Assignees

Labels

P1High-priority user-facing bug, regression, or broken workflow.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions