Skip to content

compat: BrowserPod 2.12.1 guest Node has no node:sqlite binding — blocks preflight independent of the Node-version gate #47

Description

@yhay81

Finding

Two local, owner-authorized capture attempts against the pinned openclaw@2026.5.7 target (engines >=22.14.0, satisfied by the guest's Node 22.15.0 — see #6) both failed at the same preflight_failed gate in browserpod-openclaw-probe.mjs:78. Temporary local debug logging of the preflight probe's own output (never committed) showed the actual guest evidence:

{"node":"22.15.0","platform":"linux","arch":"wasm32","cryptoVerify":true,"sqlite":false,"sqliteError":"No such binding: sqlite"}

cryptoVerify passes. node:sqlite fails to load entirely — this is not a version-range mismatch (the kind #6 documents), it is the guest's Node build lacking the node:sqlite binding at all. The preflight probe (browserpod-preflight.mjs) runs exactly:

const { DatabaseSync } = require("node:sqlite");
const db = new DatabaseSync(":memory:");
db.exec("select 1");
db.close();

which throws before ever touching OpenClaw.

Why this is a separate blocker from #6

#6 tracks the Node version gate (22.15.0 < the artifact's required >=22.x baseline) — a moving target that a vendor Node bump could close. This finding is orthogonal: the check requires preflight.checks.cryptoVerify && preflight.checks.sqlite (browserpod-openclaw-probe.mjs:77-78), and sqlite fails regardless of which OpenClaw/Node-baseline target is selected, because it is about whether the binding was compiled into BrowserPod's Wasm Node build, not which Node version string it reports. Even a future BrowserPod release that satisfies the 22.19+ (or the current stable's compound >=22.22.3 <23 || >=24.15.0 <25 || >=25.9.0) baseline would still fail here unless that release also adds node:sqlite.

Reproduction

Owner-authorized, local (not CI — see #6's separate datacenter-IP finding), targeting the pinned older-baseline report:

$env:BROWSERPOD_API_KEY = "<your key>"
$env:CLAWSEMBLY_EVIDENCE_REPORT = "apps/web/public/data/releases/openclaw-2026.5.7.json"
npm ci --prefix examples/browserpod-evidence-host --ignore-scripts
node examples/browserpod-evidence-host/capture.mjs

Fails with preflight_failed; test-results/browserpod-evidence/capture-status.json records errorCode: "preflight_failed", failedStage: "capture-run", phaseCounts.preflight: {chunks:1, bytes:152} (the redacted evidence path deliberately keeps the raw probe JSON out of committed output, per the project's evidence-safety design; the JSON above was captured only through temporary, non-committed local debug logging for this report).

Suggested next steps

  • File this neutrally with Leaning Tech (same channel as the compat: capture owner-authorized BrowserPod 2.12.1 Gateway evidence #6 vendor report) alongside the existing Node-baseline finding, since a fix likely means compiling node:sqlite into the Wasm Node build, not just bumping the reported version.
  • Until resolved, no further metered capture attempts against any tracked or pinned report are expected to get past preflight — worth noting in the owner runbook so future attempts aren't spent rediscovering this.
  • Open question for maintainer judgment (not decided here): whether node:sqlite is a hard OpenClaw runtime requirement worth keeping as a preflight gate as-is, or whether it should be downgraded to a recorded capability limitation if OpenClaw's actual 2026.5.7-era usage of it turns out to be optional — out of scope for this issue to decide.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    compatibilityOpenClaw or browser-runtime compatibility findingperformanceMeasured runtime, installation, or footprint improvement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions