Repository navigation
Upgrade alchemy to beta.81 and use effect ^4.0.0, dropping the @effect/vitest runtime dependency - #348
Conversation
alchemy beta.81 accepts effect ^4.0.0 and makes @effect/vitest an optional peer, so the exact pins that only steered npm away from floating ranges are gone: @effect/vitest, @effect/sql-d1, @effect/sql-sqlite-do, @effect/platform-bun and @effect/platform-node-shared. effect and @effect/platform-node, which we import, now use alchemy's range. effect 4.0 moved effect/unstable/http to effect/http. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
The npm resolution check now asserts one effect in the tree that alchemy resolves, instead of an exact version. The deploy guide, the core-concepts skill and the upgrade skill tell users and maintainers to use effect 4.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
alchemy loads @effect/platform-bun at runtime when it runs on Bun, which its CLI does when started from Bun. It is a real runtime dependency, not only an npm pin, so it stays, with alchemy's ^4.0.0 range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…runtime-dep-19ccb8 # Conflicts: # docs/guides/deploying.md # skills/prisma-composer-core-concepts/SKILL.md
|
✅ Gizmo reviewed 20dd776 — posted 0 inline comment(s) this pass. Open findings: none Change walkthroughThe incremental delta updates skills/prisma-composer-core-concepts/SKILL.md:358, the core-concepts skill's description of the deploy engine. The prose "exactly-pinned npm dependency of The new version string matches the actual pin in packages/9-public/composer/package.json:37, where |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Comment |
commit: |
There was a problem hiding this comment.
New findings: 🟡 1 minor · trace
Findings outside the diff
- 🟡 Minor · consistency skills/prisma-composer-core-concepts/SKILL.md — Core-concepts skill still cites alchemy 2.0.0-beta.78
The PR updates every other alchemy version citation in the repo (glossary, deploy guide, both skills) to2.0.0-beta.81, but the engine-overview paragraph in the core-concepts skill still reads "an ordinary, exactly-pinned npm dependency of@prisma/composer(2.0.0-beta.78 at this library version)". A reader cross-checking this line against the manifests sees a version that no longer matches. The "exactly-pinned" claim itself is still accurate; only the version in parentheses is stale. The stale sentence sits on line 358, outside this PR's diffed hunks in the file, so it is recorded here without a line anchor.
Recommended fix: Update the parenthetical to(2.0.0-beta.81 at this library version).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
Re-runs pnpm bump-minor on top of main to resolve the version conflicts with #348. Signed-off-by: Kristof Siket <siket@prisma.io>
…rc.15; release v0.29.1 (#349) * fix(deps): go back to alchemy 2.0.0-beta.78 so npm stops nesting prisma@8.0.0-rc.15 alchemy 2.0.0-beta.80 and later declare optional peers on exactly prisma@8.0.0-rc.15 and @prisma/orm-postgres@8.0.0-rc.11. Any other prisma version fails the peer, so npm installs a full nested prisma@8.0.0-rc.15 (with @prisma/cli-engine 0.4.0) under @prisma/composer and @prisma/composer-cli. The prisma CLI's conformance check then fails on that nested engine. This reverts the dependency part of #348 and restores the pins it removed: alchemy 2.0.0-beta.78, effect 4.0.0-rc.115 and the exact @effect/* pins. beta.79 also lacks the peers, but its alchemy/Prisma entry fails to load without @alchemy.run/frontend-frameworks, and Composer imports alchemy/Prisma. beta.78 and beta.79 only work on effect rc.115, which still needs the @effect/vitest pin to keep npm on one effect copy. ORM 8.0.0-rc.17 and cli-engine 0.7.0 from #345 stay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> * chore(release): v0.29.1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> * docs(deps): one effect override placeholder, and name both pin sites in the dedupe check's timeout message Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> --------- Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@prisma/composerno longer lists@effect/vitest, a test library, as a runtime dependency:"dependencies": { - "@effect/sql-d1": "4.0.0-rc.115", - "@effect/sql-sqlite-do": "4.0.0-rc.115", - "@effect/vitest": "4.0.0-rc.115", - "alchemy": "2.0.0-beta.78", + "alchemy": "2.0.0-beta.81", - "effect": "4.0.0-rc.115", + "effect": "^4.0.0",Decision: upgrade alchemy to its latest release (
2.0.0-beta.81) and declareeffectwith alchemy's own range,^4.0.0. Drop every@effect/*pin that only existed to steer npm.Why the pins existed
Until now, alchemy listed
effectand several@effect/*packages as dependencies with open-ended ranges.@effect/vitestwas one of them. We were oneffectrelease candidates (4.0.0-rc.115). A caret range like^4.0.0doesn't match release candidates. So the only way to keep npm on a singleeffectwas to pineffectand every companion package exactly. Composer never imported@effect/vitest,@effect/sql-d1or@effect/sql-sqlite-do. They were listed only so a consumer's npm would pick our versions.What changed upstream
effect4.0.0 is out (latest is 4.0.2). From2.0.0-beta.80, alchemy declareseffectas a^4.0.0peer, depends on@effect/sql-*with^4.0.0, and makes@effect/vitestan optional peer, so npm no longer installs it. With a stableeffect, normal semver ranges work and the exact pins aren't needed.What this PR does
alchemyfrom2.0.0-beta.78to2.0.0-beta.81everywhere. It stays exact because it's a beta and its API moves.effectfrom4.0.0-rc.115to^4.0.0everywhere.@effect/vitest,@effect/sql-d1,@effect/sql-sqlite-doand@effect/platform-node-shared.@effect/platform-node(lowering imports it) and@effect/platform-bun, both now^4.0.0. alchemy loads the platform package for its runtime, and its CLI re-runs itself under Bun when started from Bun. Removing@effect/platform-bunmade alchemy exit underbun test, so it's a real runtime dependency.@distilled.cloud/prismato1.0.0-rc.13, the exact version alchemy beta.81 depends on, so npm installs one copy.effect4.0 movedeffect/unstable/http/*toeffect/http/*. Six imports changed. No other API breakage.scripts/check-npm-effect-resolution.mjsno longer requireseffectto be an exact version. It still checks that a bare npm install resolves exactly oneeffectand that alchemy resolves that same copy, and that the adversarial tree still fails.upgrade-alchemy-effectskill now describeeffect4.x instead of an exact pin.Verification
pnpm typecheck,pnpm lint, andpnpm test(66/66 tasks) pass.pnpm check:npm-effect-resolution: all three healthy npm installs (including npm 10) resolve a singleeffect@4.0.2, and the adversarial tree fails to import alchemy as expected.check:family-static-graph,check:cli-engine-pin,check:publish-deps,check:skill-packagingandtest:scriptspass.alchemy,alchemy/Output,/Provider,/Stackand/Prismaload, and a bareimport('alchemy')registers no signal listeners.Alternatives considered
@effect/vitestline and stay on alchemy beta.78. Rejected: beta.78 still depends on@effect/vitestwith an open range. npm would pick@effect/vitest@4.0.2, which needseffect ^4.0.2, which conflicts with the rc.115 pin. That's the second-effectand npm-backtracking failure the pin was added to prevent (2026-09-11).effecta peer dependency instead of a dependency. Not done: Composer importseffectdirectly, and a regular dependency with alchemy's range dedupes to one copy just as well, as the npm check shows.Agent: penelope-12
🤖 Generated with Claude Code