Skip to content

fix(deps): pin effect to 4.0.0-rc.112 and add sql companions - #264

Merged
kristof-siket merged 1 commit into
mainfrom
fix/repin-effect-line-for-alchemy
Aug 26, 2026
Merged

fix(deps): pin effect to 4.0.0-rc.112 and add sql companions#264
kristof-siket merged 1 commit into
mainfrom
fix/repin-effect-line-for-alchemy

Conversation

@kristof-siket

Copy link
Copy Markdown
Contributor

What and why

alchemy@2.0.0-beta.74's companions (@effect/sql-d1, @effect/sql-sqlite-do, @effect/vitest) carry floating lower bounds (>=4.0.0-rc.110) that now resolve to 4.0.0-rc.112. Those packages peer effect@^4.0.0-rc.112, which rejects 4.0.0-rc.111 in pre-release semver (rc.111 < rc.112). npm then hoists a second copy of effect@rc.112 above the pinned rc.111, splitting the effect tree and causing alchemy to resolve the wrong version -- tripping DEPS.EFFECT_VERSION_CONFLICT or ALCHEMY_BIN_MISSING at startup.

What changed

Failing evidence

Validation matrix

Tested against local tarballs of @prisma/composer@0.14.0, @prisma/composer-cli@0.14.0, @prisma/composer-prisma-cloud@0.14.0 (two-package shape: composer + cli):

Check npm@10 pnpm@10 bun
Install exits 0 yes yes yes
Single effect version 4.0.0-rc.112 4.0.0-rc.112 4.0.0-rc.112
node_modules/alchemy at root yes no (content-addressable store) yes
node_modules/.bin/alchemy yes no (pnpm only links direct-dep bins; alchemy is transitive) yes
alchemy resolves effect 4.0.0-rc.112 4.0.0-rc.112 4.0.0-rc.112
Deploy boot exit code CONFIG.FILE_MISSING CONFIG.FILE_MISSING CONFIG.FILE_MISSING

pnpm note: node_modules/.bin/alchemy absence under pnpm is expected and pre-existing behavior -- pnpm only links binaries of direct dependencies. The deploy probe still exits CONFIG.FILE_MISSING because @prisma/composer-cli is a direct dependency and its bin invokes alchemy from the store.

npm three-package shape (@prisma/composer + @prisma/composer-cli + @prisma/composer-prisma-cloud + @prisma/orm-postgres): npm@10.9.8 crashes with "Cannot read properties of null (reading 'edgesOut')" due to a pre-existing arborist bug in npm itself -- also reproducible on main before these changes. Not introduced by this PR.

Precedent

#196 (d30d751) and #203 established exact-pinning @effect/sql-* companions in @prisma/composer dependencies as the correct fix for this class of break.

Recurrence

This will happen again each time alchemy bumps its companion floating deps to a newer rc. A release gate that runs node scripts/check-npm-effect-resolution.mjs against a consumer install on every alchemy version bump (before publishing) would catch it before users hit it.

alchemy@2.0.0-beta.74's companions (@effect/sql-d1, @effect/sql-sqlite-do,
@effect/vitest at >=4.0.0-rc.110) now resolve to 4.0.0-rc.112. Those
packages peer effect@^4.0.0-rc.112, which rejects the previous rc.111 pin
in pre-release semver (rc.111 < rc.112). npm hoists the freshly resolved
rc.112 above the pinned rc.111, splitting the effect tree and causing
alchemy to see the wrong version.

Pin all effect-ecosystem packages to 4.0.0-rc.112 across workspace
packages and examples. Add @effect/sql-d1 and @effect/sql-sqlite-do as
exact-pinned dependencies of @prisma/composer (same approach as #196 and
#203) so future registry releases of those packages do not repeat the
break. Add @effect/sql-sqlite-do to CONSTELLATION_OVERRIDES in the
check-npm-effect-resolution script.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Kristof Siket <siket@prisma.io>
@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0cae0956-a8a2-4ae2-8d3f-da48a3177dbd

📥 Commits

Reviewing files that changed from the base of the PR and between 8e41249 and 9caf892.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (19)
  • docs/guides/getting-started.md
  • examples/auth/package.json
  • examples/bucket/package.json
  • examples/cron/package.json
  • examples/email/package.json
  • examples/env-param/package.json
  • examples/pn-widgets/package.json
  • examples/storage/package.json
  • examples/store/package.json
  • examples/storefront-auth/package.json
  • examples/streams/package.json
  • packages/0-framework/1-core/core/package.json
  • packages/1-prisma-cloud/0-lowering/local-target/package.json
  • packages/1-prisma-cloud/0-lowering/lowering/package.json
  • packages/1-prisma-cloud/1-extensions/target/package.json
  • packages/9-public/composer-cli/package.json
  • packages/9-public/composer-prisma-cloud/package.json
  • packages/9-public/composer/package.json
  • scripts/check-npm-effect-resolution.mjs

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.


Summary by CodeRabbit

  • Updates
    • Updated the Effect ecosystem to release candidate 4.0.0-rc.112 across the Composer packages, examples, and getting-started guide.
    • Added SQLite integration support for D1 and SQLite on Cloudflare.
    • Updated examples and installation guidance to use the latest compatible release.
  • Bug Fixes
    • Improved package version consistency during installation and validation, helping prevent mismatched Effect versions.

Walkthrough

Updated Effect dependencies from 4.0.0-rc.111 to 4.0.0-rc.112 across Composer packages and examples. Added @effect/sql-d1 and @effect/sql-sqlite-do dependencies where required. Added matching @effect/sql-sqlite-do overrides to example configurations and the getting-started guide. Updated the npm resolution check to pin the new package.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main changes: pinning Effect to 4.0.0-rc.112 and adding SQL companion packages.
Description check ✅ Passed The description directly explains the dependency conflict, the Effect version updates, the added SQL companion dependencies, and the validation results.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (18 skipped: 18 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/repin-effect-line-for-alchemy
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch fix/repin-effect-line-for-alchemy

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Aug 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@prisma/composer@264
npm i https://pkg.pr.new/@prisma/composer-cli@264
npm i https://pkg.pr.new/@prisma/composer-prisma-cloud@264

commit: 9caf892

@kristof-siket
kristof-siket merged commit 9b2e35a into main Aug 26, 2026
22 checks passed
@kristof-siket
kristof-siket deleted the fix/repin-effect-line-for-alchemy branch August 26, 2026 06:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant