-
Notifications
You must be signed in to change notification settings - Fork 2
Attach the tarballs before the Release publishes, because published means frozen #165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
76b54d5
drive(prisma-cli-v8): S7 contract and dispatch plan — release pipelin…
wmadden-electric 757e952
drive(prisma-cli-v8): S7 rev 2/3 — publish under current names, goal …
wmadden-electric 46957bd
drive(prisma-cli-v8): the plan follows the rulings - bin flip instead…
wmadden-electric 17cd440
Merge remote-tracking branch 'bot/main' into claude/s7-release-pipeli…
wmadden-electric b067c42
The ORM commands answer from the prisma CLI
wmadden-electric 69d4301
A release can no longer ship a CLI that has lost a command
wmadden-electric 48ae65b
The package's one bin is the v8 tree
wmadden-electric bba224c
The bin writes every mount path out; the coverage convention sees them
wmadden-electric 6125413
A publish must survive a registry consumer's install before it ships
wmadden-electric 088b342
drive(prisma-cli-v8): STOP-1/5/6/7 resolved; the records follow the p…
wmadden-electric e5d26be
RC releases publish under next; latest waits for the deliberate flip
wmadden-electric 4f0fe67
A rerun tolerates already-published versions; the records agree with …
wmadden-electric 5ae8d4f
Attach the tarballs before the Release publishes, because published m…
wmadden-electric 4bd400a
drive(prisma-cli-v8): record the assetless rc.1 Release and its repai…
wmadden-electric File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s7.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| # S7 parity divergences — mounting the ORM family | ||
|
|
||
| **No user-visible divergence from any shipping CLI is introduced by | ||
| S7.** This file exists because S2 standing ruling 10 requires | ||
| divergences to be enumerated rather than discovered, and because a | ||
| slice that changes the command tree has to say so explicitly when the | ||
| answer is "none". | ||
|
|
||
| Why the answer is none: S7 mounts commands that no binary this repo | ||
| ships could reach before. `prisma migration list`, `prisma db verify`, | ||
| `prisma init` and the rest of the ORM family answer for the first time. | ||
| Adding an invocation that previously did not exist changes nothing a | ||
| user already relied on. | ||
|
|
||
| The divergences between the ORM commands as they run under this shell | ||
| and as they run under `prisma-next` — the engine's shared flags, json | ||
| framing, channel discipline, the `{bin}` substitution in help examples, | ||
| and everything else the port changed — belong to S5, which owns that | ||
| record and keeps it in prisma/prisma alongside the port. S7 mounts the | ||
| family; it does not change what the family does. | ||
|
|
||
| Nothing already shipped changes behaviour: the platform and composer | ||
| commands keep their paths, flags and output, no group brief was | ||
| reworded, and no existing invocation was retired or moved. The ORM | ||
| family's own redirect table (`migration apply`, `migration ref`, and | ||
| four retired `migration status` flags) arrives with the family, so it | ||
| describes invocations of `prisma-next` that were already retired there, | ||
| not invocations this shell used to answer. | ||
|
|
||
| ## One operational fact, not a divergence | ||
|
|
||
| `@prisma/orm-toolchain`'s `./cli` entry statically imports `esbuild` | ||
| and `arktype` (and eight `@prisma/orm-framework` subpaths), so every | ||
| invocation of this bin now pays that import — including `prisma | ||
| --version`, which touches no ORM code. Composer's family avoids this by | ||
| keeping its heavy graph behind dynamic executor imports; the ORM family | ||
| does not do the same yet. | ||
|
|
||
| This costs startup time, not correctness, and no user-visible output | ||
| changes because of it. Fixing it means moving orm-toolchain's handler | ||
| imports behind dynamic imports, which is prisma/prisma's change to | ||
| make, not this repo's. Mirrored in | ||
| [`../../deferred.md`](../../deferred.md) under "Upstream, not ours to | ||
| land". |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| # S7 dispatch plan — Release pipeline + rc1 (revision 3) | ||
|
|
||
| Contract: `../specs/s7-release.md` rev 1. One repo (prisma-cli), branch | ||
| `claude/s7-release-pipeline-rc1-92c89d`, base `main`. Implementers on | ||
| Opus, reviewers on Opus-4.8-mid. Standing process rules as in the S2/S3 | ||
| plans: tests before implementation, no `vi.mock`/`vi.doMock`, pnpm only | ||
| (tarball smoke's sandbox npm install excepted, as ruled in S6), explicit | ||
| staging, bot identity with dual sign-off, push to the bot remote only. | ||
|
|
||
| Rulings applied (2026-08-12): the goal is all available commands in one | ||
| binary; rc1 publishes under the current names (`@prisma/cli`, bin | ||
| `prisma-cli`); the bare-`prisma` cutover and the exception-list | ||
| reconciliation are follow-up work. STOP-2/3/4/8 closed. **All STOPs closed | ||
| 2026-08-12; D1–D6 shipped on PR #164.** | ||
|
|
||
| Ordering: D1 → D2 are independent of the release machinery and can run | ||
| while STOP-5/7/8 settle; D3 → D4 → D5 are strictly ordered (the package | ||
| must exist before the automation covers it, the automation before the | ||
| pipeline verifies it); D6 closes. One PR for the slice. | ||
|
|
||
| ## D1 — Mount the ORM family (packages/cli) | ||
|
|
||
| Tests first: extend `v8-mount-coverage.test.ts` (fails until the mount | ||
| lands — the 21 expected paths, `ormCommandFamily` in | ||
| `MOUNTED_FAMILIES`); a `v8-bin` semantic test running one ORM command | ||
| end to end through `createTestCli` (`migration list` against a fixture | ||
| project directory: envelope, presented rows, exit 0); a redirect test | ||
| (`migration apply` settles as the typed redirect, exit per engine); a | ||
| `--help` test naming the `contract`, `db`, `migration`, `ref` groups. | ||
| Then: the `@prisma/orm-toolchain` dependency at the STOP-7(ii) interim | ||
| exact version; `cli.ts` imports the family from | ||
| `@prisma/orm-toolchain/cli`, spreads its commands, adds the four group | ||
| briefs. Watch for: the family keys are full mount paths already — no | ||
| renaming layer; config-section and redirects ride the family object. | ||
| Divergence file `assets/s2/parity-divergences-s7.md` opened (expected | ||
| content: "none"; plus the deferred.md entry for the static-import cost). | ||
|
|
||
| ## D2 — The completeness check fails the build (repo root + CI) | ||
|
|
||
| Tests first: a fixture-level test proving the check reports (a) a | ||
| family command absent from the tree, (b) a mounted command owned by no | ||
| family and not excepted — both via a constructed family/tree pair, not | ||
| by mutating the real mount. Then: `check:grammar` as a turbo task | ||
| (`dependsOn: ["^build"]`, `cache: false`) running the mount-coverage | ||
| suite file; wired into `pr-quality.yml` and `publish.yml` before the | ||
| first publish step under its `publish == 'true'` condition. The | ||
| exception list gets a doc comment naming STOP-4's ratification and the | ||
| rule that additions require an operator ruling. | ||
| Reshaped by: STOP-4 (if utilities move into the platform family, the | ||
| exception set shrinks to the telemetry trio). | ||
|
|
||
| ## D3 — The shipped bin becomes the v8 tree (packages/cli) | ||
|
|
||
| Per the 2026-08-12 ruling: no `prisma` package. Tests first: a | ||
| packaging test asserting the DECLARED bin (`package.json` `bin` | ||
| entry read, not a hard-coded path) is the v8 entry and that running | ||
| it with `--version` on plain Node in a bare env prints the lockstep | ||
| version at exit 0. Then: flip `bin.prisma-cli` from `./dist/cli.js` | ||
| to `./dist/v8/cli.js`. The legacy entry keeps building and shipping | ||
| in the tarball (S2d owns its deletion). Nothing else changes. | ||
|
|
||
| ## D4 — Committed versions + conformance wiring (manifests + CI) | ||
|
|
||
| RESOLVED 2026-08-12: STOP-5(b) ruled — the inline smoke path below | ||
| shipped; STOP-7 deferred until `8.0.0-rc.1` publishes. The STOP-5(a) | ||
| branch is kept only as the record of the road not taken: | ||
| `packages/cli` pins `@prisma/composer` and `@prisma/orm-toolchain` | ||
| exact (already the style; versions per STOP-7); `pnpm conformance` | ||
| added to `publish.yml` before publish steps; the S6-3c interim | ||
| exception entries (dated triples, one per family) committed if the | ||
| pins have not converged by then. | ||
| If STOP-5(b): D4 instead implements the inline smoke per the contract | ||
| (S6 3b mechanics, ~40 lines, written to S6's spec so absorption is a | ||
| move), and the 3c pin comparison is NOT built here — the pins' exactness | ||
| is still asserted by the existing manifest style plus D5's install | ||
| smoke resolving a single engine copy. | ||
|
|
||
| ## D5 — The pipeline (publish.yml + scripts) | ||
|
|
||
| Blocked by: STOP-1. Written against 1(a): | ||
| Tests first where testable: the override-computation helper (workspace | ||
| package → packed tarball map, recursive) as a pure function with its | ||
| own unit tests in `scripts/`; `determine-version` untouched (nothing | ||
| dynamic added). Then, in `publish.yml`: pack stage (engine + cli | ||
| tarballs via `pnpm pack` — order matters, packing rebuilds dist per | ||
| S6's finding 16, so the grammar check and conformance run before | ||
| packing); out-of-workspace install smoke (npm, `--ignore-scripts`, | ||
| absolute `file:` overrides, every declared bin from every packed | ||
| manifest started with `--version` under a timeout, exit 0 required — | ||
| after D3 the declared bin IS the v8 tree, so the smoke exercises the | ||
| composer and ORM family boundaries); tarball upload as workflow | ||
| artifacts; Release assets attached in the existing Release step. | ||
| Dry-run dispatch path covers pack + smoke + upload, skipping registry | ||
| writes and Release — this is the verification surface for the whole | ||
| slice (never a real publish from this work; a real publish is the | ||
| operator's action). | ||
|
|
||
| ## D6 — Docs, records, close-out prep | ||
|
|
||
| `docs/oss/versioning.md` (the `prisma` package, the artifact stage, the | ||
| guarded publish); `rollout-plan.md` step 4 pointed at the pipeline; | ||
| `plan.md` §S7 updated; `deferred.md`: close the two-copy-install entry | ||
| when STOP-7 convergence lands, add the ORM import-weight entry; PR | ||
| description per the ruled structure (grounding example first, | ||
| alternatives last). Slice review loop (architect + principal-engineer | ||
| personas), findings folded, operator walkthrough. | ||
|
|
||
| Completeness: D1 → the tree; D2 → the check that guards it; D3 → the | ||
| package rc1 ships as; D4 → the pins and their verification; D5 → the | ||
| automated path from release commit to verified artifact; D6 → the | ||
| records. Together: the operator merges one bump PR and rc1's artifacts | ||
| exist, verified, published where the registry allows. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Record the immutable
v8.0.0-rc.1Release exception.Line 126 says tarballs are attached to the Release. The existing
v8.0.0-rc.1Release has no assets and cannot be modified or recreated. State that future Releases attach assets while draft, and record this exception.🤖 Prompt for AI Agents