You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(release): keep rewritten workspace deps in registry metadata
Background
----------
Installing @razroo/parallel-mcp-postgres@0.1.0-beta.0 from npm could hang
npm's dependency resolver. The registry's package-metadata document listed
"@razroo/parallel-mcp": "file:../.." as the runtime dependency, even though
the published tarball had the correct "^0.4.0" range. When combined with
`pg`'s own transitive deps, npm's `placeDep` loop never terminated
(repeating `silly timing Tried to end timer that doesn't exist: idealTree:#root`
forever). @razroo/parallel-mcp-memory had the same bug in its metadata but
installed fine in isolation (single dep, no cycle to confuse the resolver);
it was still broken as a user-facing signal.
Root cause
----------
The adapter, testkit, and server publish lifecycle used `prepack` +
`postpack`:
prepack rewrite "@razroo/parallel-mcp": "file:.." -> "^0.4.x"
pack create tarball with the rewritten package.json
postpack restore the workspace-path version on disk
publish upload the tarball AND read the on-disk package.json for
the registry metadata document
The tarball was correct (verified: `tar -xOf … package/package.json`),
but `postpack` ran BEFORE the metadata-upload step, so npm sent the
restored `file:..` entry to the registry. Most consumers never noticed
because npm 10 falls back to the tarball for install resolution — but
that fallback couldn't save postgres once `pg`'s transitive graph was in
the mix.
Fix
---
Move the restore from `postpack` to `postpublish` across all four
workspace packages (memory, postgres, testkit, server). `prepack` still
rewrites, the tarball is still correct, and now the on-disk package.json
stays rewritten through the full `npm publish` call — including the
registry-metadata upload. `postpublish` restores the workspace-path
version immediately after publish for local dev.
`pack:check` now manually invokes the postpack script at the end because
`npm pack --dry-run` alone does not trigger `postpublish`.
Version bumps
-------------
- @razroo/parallel-mcp-memory 0.1.0 -> 0.1.1
- @razroo/parallel-mcp-postgres 0.1.0-beta.0 -> 0.1.0-beta.1
npm does not allow republishing over an existing version, even to fix a
corrupt registry document, so these are fresh patch/beta bumps. No
behavior or API changes inside the adapters.
The same fix is applied to @razroo/parallel-mcp-testkit and
@razroo/parallel-mcp-server; their 0.4.0 documents still carry the stale
`file:..` but are not user-visibly broken (install works via tarball
fallback). They will pick up the corrected metadata on the next release
that bumps their versions.
release.yml
-----------
- Publish steps for core, server, and testkit now also skip if the
version is already on npm, matching the adapter publish steps. Needed
because this commit re-runs the v0.4.0 release with the same
core/server/testkit versions but new adapter versions.
- The GitHub-release step now upserts (`gh release upload --clobber`
when the release already exists, `gh release create` otherwise) so
re-tagging v0.4.0 does not fail with "release already exists".
CHANGELOG
---------
New "Adapter patch releases" section at the top of CHANGELOG.md
documents the fix, the user-visible symptom, and the two version bumps.
Made-with: Cursor
0 commit comments