build(deps): pin wasm runtime packages so dependabot lockfiles stay in sync#114
Conversation
…n sync @emnapi/core, @emnapi/runtime, @emnapi/wasi-threads, @napi-rs/wasm-runtime, and @tybys/wasm-util only entered the lockfile as transitive deps of the optional wasm32-wasi platform bindings (@rolldown/binding-wasm32-wasi, @tailwindcss/oxide-wasm32-wasi). Dependabot's lockfile regeneration drops those entries, so every grouped bump since #105 landed with a lock missing @emnapi/* and `npm ci` failed EUSAGE on PRs #110-#113. Pinning them as direct devDependencies guarantees lock entries survive any regeneration; the $-reference overrides collapse the bindings' exact pins onto the root versions so a single entry satisfies the whole tree. The wasi bindings are never installed on CI runners (linux-x64/darwin-arm64 use native bindings), so the forced versions only affect lock resolution. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PR SummaryLow Risk Overview This keeps Reviewed by Cursor Bugbot for commit 9384ba8. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Problem
CI has been red on every dependabot PR since 2026-06-04 (#110–#113). Both
Desktop buildandContextKit builddie in ~15s atnpm ci --ignore-scripts:Root cause:
@emnapi/*,@napi-rs/wasm-runtime, and@tybys/wasm-utilonly existed in the lockfile as transitive deps of the optional wasm32-wasi platform bindings (@rolldown/binding-wasm32-wasi,@tailwindcss/oxide-wasm32-wasi). Dependabot's lockfile regeneration drops dependencies of optional platform packages (known dependabot-core npm/wasi bug), so every grouped bump it rebased after the #105–#107/#54 merges shipped a desynced lock.mainitself is in sync — only dependabot-regenerated locks break.Fix
devDependencies— direct deps always survive lockfile regeneration.$-referenceoverridesso the bindings' exact pins (rolldown pins@emnapi/coreexactly, and bumps it in lockstep with its own releases) collapse onto the single root version instead of demanding nested copies dependabot would drop again.The wasi bindings are never installed on CI (linux-x64 / darwin-arm64 resolve native bindings), so the override only affects lock resolution, not anything that executes.
Related CI fix (no code change)
The
Bazel RBEsmoke job's only runner (bazel-rbe-dev-buildfarm-kestrel-bazel, labelsevalops-kestrel-rbe) is offline, so jobs queued ~24h and died — this PR's path filter would have re-triggered it. I flipped the workflow's designed kill switchvars.BAZEL_RBE_ENABLED→falseuntil the runner is restored; re-enable withgh api -X PATCH repos/evalops/kestrel/actions/variables/BAZEL_RBE_ENABLED -f name=BAZEL_RBE_ENABLED -f value=true.Test plan
npm ci --ignore-scripts --dry-runpasses on this branch (lock/manifest sync check — the exact check that fails on the dependabot PRs)npm ci --ignore-scripts && npm run buildclean locally (electron-vite production build)Desktop build+ContextKit buildgreen on this PR@dependabot rebaseon build(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.0.2 #110–build(deps): bump the prod-minor-patch group across 1 directory with 17 updates #113 → regenerated locks retain@emnapi/*and CI goes green🤖 Generated with Claude Code