Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 18 additions & 16 deletions .drive/projects/prisma-cli-v8/deferred.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,24 @@ Nothing here is tracked outside this file.

## After the latest cutover (2026-08-25, PR #230)

- **compute-sdk 0.42.0 asks for a `@prisma/management-api-sdk` this repo
does not install.** Its peer range is `^1.69.0`; all three manifests
here pin `1.55.0`, so `pnpm peers check` reports one unmet peer. Left
that way deliberately: the SDK version is a shared type surface, so
moving it in `packages/cli` and `packages/prisma` alone makes the
engine's `ManagementApiClient` a second, incompatible copy and every
command that hands the engine's client to a CLI function stops
typechecking. Moving all three means `packages/cli-engine` changed,
which needs a new engine version, which both families peer-pin
exactly — the three-repo release sequence. Nothing is broken in the
meantime: the field is declared by compute-sdk's own types and the
server sends it whatever the client was generated from. Two ways out,
operator's call: move the SDK with the next engine version train, or
relax compute-sdk's floor back to `^1.44.0`, which is arguably where
it belongs — the floor protects a build-time concern of compute-sdk's
own that no consumer shares.
- **The engine 0.3.0 transition is in flight; both families still peer
0.2.3.** `@prisma/cli-engine` declared `@prisma/management-api-sdk` as
an ordinary dependency while re-exporting the SDK's client type across
its own public API (`ctx.api`). That is a shared type surface held as
a private copy: when the shell moved to a newer SDK, the engine's
`Client<paths>` and the shell's became unrelated types and every
command taking `ctx.api` into a CLI function stopped typechecking, so
the version could only ever move in all three manifests at once —
which changed the engine, which both families peer-pin exactly. 0.3.0
makes the SDK a peer of the engine (`^1.55.0`) with the two binaries
supplying the copy, so a future SDK bump touches the apps only. The
sequence from here, per `packages/cli/scripts/conformance.ts`: engine
0.3.0 publishes → `@prisma/composer-cli` and `@prisma/orm-toolchain`
republish peering 0.3.0 → a release PR here pins those versions and
deletes the two `exceptions` entries, restoring the empty list. Until
then conformance reports six allowed findings, including two copies of
the engine resolving in the sandbox install — the expected shape of a
transition, not a defect.

- **A stale product `dev` dist-tag can block a release publish.** The
publish run checks the dev channel before the release leg, and the
Expand Down
7 changes: 5 additions & 2 deletions packages/cli-engine/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@prisma/cli-engine",
"version": "0.2.3",
"version": "0.3.0",
"description": "The execution engine of the unified Prisma CLI.",
"type": "module",
"exports": {
Expand Down Expand Up @@ -47,14 +47,17 @@
},
"dependencies": {
"@clack/prompts": "1.5.0",
"@prisma/management-api-sdk": "1.55.0",
"@stricli/core": "1.3.0",
"c12": "3.3.4",
"colorette": "^2.0.20",
"package-manager-detector": "1.8.0",
"string-width": "^8.2.1"
},
"peerDependencies": {
"@prisma/management-api-sdk": "^1.55.0"
},
"devDependencies": {
"@prisma/management-api-sdk": "1.69.0",
"@repo/cli-conformance": "workspace:8.0.0-rc.10",
"@repo/tsconfig": "workspace:8.0.0-rc.10",
"@types/node": "^22.19.19",
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@
},
"dependencies": {
"@manypkg/tools": "^2.1.2",
"@prisma/cli-engine": "workspace:0.2.3",
"@prisma/cli-engine": "workspace:0.3.0",
"@prisma/composer-cli": "0.14.0",
"@prisma/compute-sdk": "0.42.0",
"@prisma/management-api-sdk": "1.55.0",
"@prisma/management-api-sdk": "1.69.0",
"@prisma/orm-toolchain": "8.0.0-rc.7",
"@vercel/detect-agent": "^1.2.3",
"better-result": "^2.9.2",
Expand Down
31 changes: 24 additions & 7 deletions packages/cli/scripts/conformance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,30 @@ async function tarball(): Promise<readonly Finding[]> {
shellPackage: "@prisma/cli",
enginePackage: "@prisma/cli-engine",
familyPackages: ["@prisma/composer-cli", "@prisma/orm-toolchain"],
// No exceptions. Both families declare @prisma/cli-engine as an
// exact peer at the version this repo ships, so one engine
// resolves in an install — what ADR 0004 asks for. An entry here
// exists only while an engine version transition is in flight
// (the engine must publish before a family can peer it), and the
// release PR that pins the families' new versions removes it.
exceptions: [],
// An engine version transition is in flight: the engine must
// publish 0.3.0 before either family can peer it, so both still
// declare 0.2.3. The release PR that pins the families' new
// versions removes these entries and restores the empty list.
exceptions: [
{
familyPackage: "@prisma/composer-cli",
familyPin: "0.2.3",
shellPin: "0.3.0",
reason:
"@prisma/cli-engine 0.3.0 moves @prisma/management-api-sdk to a peer dependency so one copy of the SDK's client type serves the engine and the shell. Breaking for the engine's consumers, so both families must republish against it.",
removeWhen:
"@prisma/composer-cli publishes a version peering @prisma/cli-engine 0.3.0 and this repo pins it.",
},
{
familyPackage: "@prisma/orm-toolchain",
familyPin: "0.2.3",
shellPin: "0.3.0",
reason:
"@prisma/cli-engine 0.3.0 moves @prisma/management-api-sdk to a peer dependency so one copy of the SDK's client type serves the engine and the shell. Breaking for the engine's consumers, so both families must republish against it.",
removeWhen:
"@prisma/orm-toolchain publishes a version peering @prisma/cli-engine 0.3.0 and this repo pins it.",
},
],
channel: CHANNEL,
sandboxDir: join(WORK_DIR, "sandbox"),
},
Expand Down
4 changes: 2 additions & 2 deletions packages/prisma/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@
},
"dependencies": {
"@manypkg/tools": "^2.1.2",
"@prisma/cli-engine": "workspace:0.2.3",
"@prisma/cli-engine": "workspace:0.3.0",
"@prisma/composer-cli": "0.14.0",
"@prisma/compute-sdk": "0.42.0",
"@prisma/management-api-sdk": "1.55.0",
"@prisma/management-api-sdk": "1.69.0",
"@prisma/orm-toolchain": "8.0.0-rc.7",
"@vercel/detect-agent": "^1.2.3",
"better-result": "^2.9.2",
Expand Down
33 changes: 13 additions & 20 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading