fix: bundle correct hyperd 0.0.26359 in npm packages - #239
Merged
StefanSteiner merged 2 commits intoAug 26, 2026
Conversation
npm-build-publish.yml hardcodes the hyperd version/build_id/sha256s it downloads and bundles into the hyperdb-mcp and hyperdb-api-node npm packages, decoupled from hyperdb-bootstrap/hyperd-version.toml. PR tableau#237 bumped the toml (and thus crates.io) to 0.0.26359 (r07abb490) but left this workflow at 0.0.25080, so npm 0.7.1 shipped the pre-fix engine: the macOS-14 JIT deadlock fix reached crates.io users but not npm users. Bump HYPERD_VERSION, HYPERD_BUILD_ID, and the three built platform sha256s (macos-arm64, linux-x86_64, windows-x86_64) to match the toml so npm bundles the same engine as crates.io.
Add .github/scripts/verify-npm-hyperd-pin.py, which asserts that npm-build-publish.yml's HYPERD_VERSION / HYPERD_BUILD_ID / per-platform matrix sha256s match hyperdb-bootstrap/hyperd-version.toml (the platform slug is the join key), and wire it into verify-hyperd-pin.yml. That workflow now also runs whenever the npm workflow or the guard script changes, and installs python3-yaml. This turns the 0.7.1 stale-engine drift into a hard CI failure instead of a silent wrong-engine npm publish.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The npm packages
hyperdb-mcpandhyperdb-api-nodebundle ahyperdengine binary.
.github/workflows/npm-build-publish.ymldownloads that engineusing its own hardcoded
HYPERD_VERSION/HYPERD_BUILD_ID(env) andper-platform
hyperd-sha256(build matrix) — values that are decoupled fromhyperdb-bootstrap/hyperd-version.toml, the source of truth used bymake download-hyperdand the crates.io publish path.In v0.7.1, #237 bumped the toml to hyperd 0.0.26359 (r07abb490) — so
crates.io shipped the fixed engine (which contains the macOS-14 JIT
registerEHFrames()deadlock fix) — but this workflow was left at the old0.0.25080 (r2bfd835b). As a result npm 0.7.1 silently shipped the
pre-fix engine: the fix reached crates.io users but not npm users. (Verified
from the published
hyperdb-mcp-darwin-arm64@0.7.1tarball.)Changes
fix:— bump the 5 hardcoded values innpm-build-publish.yml(
HYPERD_VERSION,HYPERD_BUILD_ID, and the three built-platformhyperd-sha256s:macos-arm64,linux-x86_64,windows-x86_64) to matchthe toml. The commented-out
darwin-x64entry is untouched.ci:— add.github/scripts/verify-npm-hyperd-pin.py, a guard thatasserts the workflow's pin matches the toml (platform slug is the join key),
and wire it into
verify-hyperd-pin.yml(which now also runs when the npmworkflow or the script changes, and installs
python3-yaml). This turns thedrift into a hard CI failure instead of a silent wrong-engine publish.
Verification done locally
macos-arm64(…java-macos-arm64-release-main.0.0.26359.r07abb490.zip,HTTP 200). Its sha256 == the toml/workflow
macos-arm64pin(
434a5e7f…). Extractedlib/hyper/hyperd;stringsshows0.0.26359and zero
0.0.25080.values) against
main's stale workflow — i.e. it would have caught the0.7.1 drift.
Release impact
Both commits are
fix:/ci:(neverfeat:), so release-please cuts apatch (0.7.2). After merge + the release-please PR merge + tag, the
release: publishedevent re-runsnpm-build-publish.yml, which now bundles0.0.26359 into the npm packages.
Post-release check (the step missing in 0.7.1): extract the fresh
hyperdb-mcp-darwin-arm64@0.7.2tarball and assert the bundledhyperd --version==0.0.26359, not just the MCP binary version.