Skip to content

Build against Alchemy beta.85 with the programmatic API, and move effect to 4.1 - #404

Merged
wmadden-electric merged 10 commits into
mainfrom
claude/alchemy-api-evaluation-5f1d17
Nov 10, 2026
Merged

wmadden-electric merged 10 commits into
mainfrom
claude/alchemy-api-evaluation-5f1d17

Conversation

@wmadden-electric

@wmadden-electric wmadden-electric commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor
// pnpm-workspace.yaml catalog
"alchemy": "2.0.0-beta.85",
"effect": "4.1.0"

Composer now builds against Alchemy 2.0.0-beta.85. That release adds alchemy/Alchemist, the programmatic API (plan, apply, typed events). The next pull requests use it to run prisma deploy and then prisma dev inside the prisma process, with no generated alchemy.run.ts and no child process. This pull request only moves the dependencies. Alchemy still runs as a child process.

Merge this first, then #405 and #411, which are stacked on it.

What changed

  • alchemy and @alchemy.run/prisma move from beta.84 to beta.85, and @distilled.cloud/prisma to 1.0.0-rc.18. effect and the @effect/platform-* packages move from 4.0.3 to 4.1.0, which beta.85 requires. These, plus @alchemy.run/prisma and @distilled.cloud/prisma, are now pinned once in the pnpm catalog.
  • Alchemy moved its Prisma provider out of alchemy/Prisma into the package @alchemy.run/prisma. Imports changed in about 24 files.
  • alchemy/Test/Core is gone upstream. The small part our provider tests used is now @internal/lowering/scratch-stack.
  • Prisma.CustomDomain now looks up the domain's DNS records before registering it. docs/guides/deploying.md says so, and the custom-domain test stubs DNS.
  • withComposerAdvice rewrites Alchemy's new adoption messages, including the provider's own. A test scans the installed provider source for advice that is not rewritten.
  • @prisma/composer drops @effect/sql-d1, @effect/sql-sqlite-do and @effect/vitest. Alchemy no longer needs them, and @effect/vitest 4.1 would install Vitest into every app.
  • check:npm-effect-resolution also asserts one copy of alchemy, @alchemy.run/prisma and @distilled.cloud/prisma in a plain npm install.
  • check:publish-deps rejects URL, git, file: and link: dependencies, so a preview pin cannot reach a publish.
  • The upgrade-alchemy-effect skill explains how to pin a preview build when a fix is not released yet. ADR-0048 names @alchemy.run/prisma.

Testing

Build, typecheck, lint, package tests, the script checks and the local-dev integration tests pass locally. The e2e deploy workflow runs on this pull request.

Agent: maat-73

🤖 Generated with Claude Code

wmadden-electric and others added 2 commits October 30, 2026 16:33
Every alchemy pin is now https://pkg.alchemy.run/alchemy/972f294ae0c7982a8ebcb551fadd07d29c9c0fca, and effect with every @effect/* companion is 4.1.0, which that build needs as its peer.

The build is 2.0.0-beta.84 plus later commits. What changed for us:

- The Prisma provider moved out of alchemy into @alchemy.run/prisma, pinned at the same commit. Imports of alchemy/Prisma now use it.
- @distilled.cloud/prisma is pinned to the exact tarball @alchemy.run/prisma depends on, so there is one copy.
- alchemy/Test/Core moved to @alchemy.run/test, which is not published. Provider tests use scratchStack and runScratch from the new @internal/lowering/testing entry, a port of the parts we used.
- Prisma.CustomDomain now waits for the CNAME on real nameservers before it registers a domain; the public URL test stubs node:dns/promises.
- Alchemy has a new --adopt message for replacements; withComposerAdvice rewrites it.

check:npm-effect-resolution now also asserts a single alchemy in the npm tree. The upgrade-alchemy-effect skill explains how to pin a preview build.

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>
…slice 1 review

- check:publish-deps fails on a URL, git or file: dependency in a published package, and says to swap a pkg.alchemy.run preview for a release. It runs only in the publish workflow, so PR CI is unaffected.
- alchemy, @alchemy.run/prisma, @distilled.cloud/prisma, effect and the @effect/platform-* packages are pinned once, in the pnpm catalog.
- check:npm-effect-resolution also asserts one @alchemy.run/prisma and one @distilled.cloud/prisma; its comments describe the current peers.
- @prisma/composer drops @effect/sql-d1, @effect/sql-sqlite-do and @effect/vitest, which alchemy no longer needs.
- @internal/lowering/testing is now @internal/lowering/scratch-stack, and the scratch stack no longer takes a state it ignored.
- withComposerAdvice rewrites the Prisma provider's adoption advice too, and a test scans the provider sources for it.
- The DNS stub keeps the rest of node:dns/promises. ADR-0048 and the deploying guide are updated.

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>
@prisma-gizmo

prisma-gizmo Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

✅ Gizmo reviewed 23675dd — posted 0 inline comment(s) this pass.

Open findings: none

Change walkthrough

Change walkthrough

This PR bumps Composer to build against Alchemy 2.0.0-beta.85 and Effect 4.1.0, pinning both — plus @alchemy.run/prisma and @distilled.cloud/prisma — once in the pnpm catalog. It is a dependency-migration step that unblocks the stacked PRs (#405, #411), which will adopt Alchemy's new programmatic API (plan/apply/typed events) to run prisma deploy and prisma dev in-process; this PR keeps Alchemy running as a child process.

Dependency moves. The version bumps live in pnpm-workspace.yaml catalog entries, and the lockfile follows. Effect 4.1 is required by beta.85, so the two bumps travel together. @prisma/composer drops @effect/sql-d1, @effect/sql-sqlite-do, and @effect/vitest, which Alchemy no longer needs and which would otherwise pull Vitest into every consuming app.

Import migration. Alchemy moved its Prisma provider out of alchemy/Prisma into the @alchemy.run/prisma package; imports across ~24 files were updated accordingly. alchemy/Test/Core disappeared upstream, and the sliver the provider tests used now lives in @internal/lowering/scratch-stack.

Behavioral alignment with beta.85. Prisma.CustomDomain now resolves the domain's DNS records before registering, documented in docs/guides/deploying.md with a stubbed-DNS test. withComposerAdvice was extended to rewrite Alchemy's new adoption messages (including the provider's own), with a test that scans the installed provider source for un-rewritten advice.

Guardrail checks. check:npm-effect-resolution now asserts a single copy of alchemy, @alchemy.run/prisma, and @distilled.cloud/prisma under a plain npm install, guarding the one-copy invariant the catalog pinning is meant to provide. check:publish-deps rejects URL, git, file:, and link: specifiers so a preview pin cannot reach a publish; on this pass I reviewed the incremental delta there — a doc-comment update on the GitHub-shorthand rule in scripts/check-publish-deps.mjs:173 (verified accurate against GITHUB_SHORTHAND_RE, whose first segment excludes @ so scoped registry specs never match) and two matching negative cases for @scope/pkg / @scope/pkg@1.2.3 in scripts/check-publish-deps.test.mjs:146, which pass.

Docs. The upgrade-alchemy-effect skill documents how to pin a preview build when a fix isn't released yet, and ADR-0048 records the @alchemy.run/prisma package name.

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: cfbab2e7-8e62-4abc-a0c8-62ab9a76f14f
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

…aluation-5f1d17

Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>

# Conflicts:
#	docs/design/90-decisions/README.md
#	packages/1-prisma-cloud/0-lowering/local-target/src/compute.ts
#	packages/9-public/composer/package.json
#	pnpm-lock.yaml
#	test/integration/package.json
@pkg-pr-new

pkg-pr-new Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

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

commit: 23675dd

@alchemy.run/prisma moves to 2.0.0-beta.85 with it, and @distilled.cloud/prisma to 1.0.0-rc.18, the version it depends on. effect stays at 4.1.0.

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>
@wmadden-electric wmadden-electric changed the title Build against Alchemy's preview build with the programmatic API, and move effect to 4.1 Build against Alchemy beta.85 with the programmatic API, and move effect to 4.1 Nov 3, 2026
wmadden-electric and others added 2 commits November 5, 2026 13:38
…anch

Keep our catalog pins (alchemy and @alchemy.run/prisma 2.0.0-beta.85, @distilled.cloud/prisma 1.0.0-rc.18, effect 4.1.0) and scratch-stack test imports. Take #402's footprint check (no @effect/vitest, vitest or vite; no @alchemy.run/prisma without the Prisma Cloud package), its process-listener check on the provider import, its ADR-0048 amendment and its effect-family pin rule in the upgrade skill.

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>
…aluation-5f1d17

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>

# Conflicts:
#	examples/bucket/package.json
#	examples/cron/package.json
#	examples/storage/package.json
#	examples/store/package.json
#	examples/storefront-auth/package.json
#	packages/0-framework/1-core/core/package.json
#	packages/0-framework/3-tooling/cli/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-prisma-cloud/package.json
#	packages/9-public/composer/package.json
#	website/package.json
@wmadden-electric
wmadden-electric marked this pull request as ready for review November 6, 2026 16:01

@prisma-gizmo prisma-gizmo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New findings: 🟡 2 minor · trace

Comment thread scripts/check-publish-deps.mjs Resolved
wmadden-electric and others added 2 commits November 10, 2026 15:33
…aluation-5f1d17

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>

# Conflicts:
#	examples/bucket/package.json
#	examples/cron/package.json
#	examples/orm-demo/package.json
#	examples/storage/package.json
#	examples/store/package.json
#	examples/storefront-auth/package.json
#	packages/0-framework/1-core/core/package.json
#	packages/0-framework/3-tooling/cli/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-prisma-cloud/package.json
#	pnpm-lock.yaml
#	pnpm-workspace.yaml
#	website/package.json
The adoption-message test now reads the provider source recursively.
check:publish-deps unwraps npm: aliases and flags bare path specs.

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>
@wmadden-electric
wmadden-electric enabled auto-merge (squash) November 10, 2026 04:49

@prisma-gizmo prisma-gizmo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New findings: 🟡 1 minor · trace

Still open from previous reviews: 🟡 2 minor

Comment thread scripts/check-publish-deps.mjs Resolved
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>

@prisma-gizmo prisma-gizmo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New findings: 🟡 3 minor · trace

Comment thread scripts/check-publish-deps.mjs Resolved
Comment thread scripts/check-publish-deps.test.mjs Resolved
Comment thread scripts/check-publish-deps.test.mjs Resolved
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>

@prisma-gizmo prisma-gizmo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New findings: none · trace

@prisma-gizmo prisma-gizmo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No Gizmo finding is open and the head commit has been reviewed. Approving.

@wmadden-electric
wmadden-electric merged commit 3a8006d into main Nov 10, 2026
28 of 29 checks passed
@wmadden-electric
wmadden-electric deleted the claude/alchemy-api-evaluation-5f1d17 branch November 10, 2026 05:17
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.

2 participants