TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line) - #29899
Conversation
|
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe release process now supports ChangesRC release flow
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant PublishWorkflow
participant DetermineVersion
participant CheckReleaseNotes
participant GitHubRelease
PublishWorkflow->>DetermineVersion: resolve RC or stable version
DetermineVersion-->>PublishWorkflow: return version and latest tag
PublishWorkflow->>CheckReleaseNotes: validate release notes
CheckReleaseNotes-->>PublishWorkflow: return validation result
PublishWorkflow->>GitHubRelease: create release with prerelease flag for RC
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
b6ab8a6 to
7128beb
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/publish.yml:
- Around line 169-180: Move the Check release notes step before both
package-publication steps in the workflow, preserving its existing blessed-tag
and dry-run conditions and command. In .github/workflows/publish.yml lines
169-180, reorder the steps so the gate runs before publishing; in
docs/oss/versioning.md lines 70-73, retain the existing guarantee with no direct
change required.
In `@skills-contrib/publish-npm-version/SKILL.md`:
- Around line 47-56: Update the release-note guidance to consistently use the
previous blessed tag for RC releases: revise the remaining previous-stable-tag
references in skills-contrib/publish-npm-version/SKILL.md lines 41 and 93, and
change the graceful-degradation wording in
skills-contrib/draft-release-notes/SKILL.md lines 232-233 to reference the
previous blessed tag; keep the related instructions and links current.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: 9fa24af7-6891-493c-9cb6-e6f0914305d9
📒 Files selected for processing (14)
.github/workflows/publish.ymldocs/oss/versioning.mdpackage.jsonscripts/bump-version.tsscripts/check-release-notes.mjsscripts/check-upgrade-coverage.mjsscripts/determine-version-utils.test.tsscripts/determine-version-utils.tsscripts/determine-version.tsscripts/lint-throws.test.mjsskills-contrib/draft-release-notes/SKILL.mdskills-contrib/publish-npm-version/SKILL.mdskills-contrib/record-upgrade-instructions/SKILL.mdskills/extension-author/prisma-8-extension-upgrade/SKILL.md
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
size-limit report 📦
|
prisma-next
@prisma/orm-extension-arktype-json
@prisma/orm-extension-middleware-cache
@prisma/orm-extension-paradedb
@prisma/orm-extension-pgvector
@prisma/orm-extension-postgis
@prisma/orm-extension-supabase
@prisma/orm-family-mongo
@prisma/orm-family-sql
@prisma/orm-framework
@prisma/orm-mongo
@prisma/orm-postgres
@prisma/orm-sqlite
@prisma/orm-target-mongo
@prisma/orm-target-postgres
@prisma/orm-target-sqlite
@prisma/orm-toolchain
commit: |
7128beb to
38e1d59
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@skills-contrib/publish-npm-version/SKILL.md`:
- Around line 47-56: Update the “Fetch and determine the target version”
instructions so computeNextReleaseVersion is loaded from the fetched origin/main
revision rather than the potentially dirty current worktree. Ensure the
branch/PR NEXT value and the authoritative pnpm bump-version calculation use the
same origin/main helper and produce an identical version.
- Line 114: Correct the idempotency statement in the skill documentation:
clarify that only pnpm bump-version is idempotent, while rerunning the full
skill fails when the release branch or sibling worktree created by git worktree
add already exists. Document how to reuse or remove the existing worktree, or
update Step 2 to reuse it before describing rerun behavior.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: d501530a-3980-44e7-8504-3aad818b074e
📒 Files selected for processing (14)
.github/workflows/publish.ymldocs/oss/versioning.mdpackage.jsonscripts/bump-version.tsscripts/check-release-notes.mjsscripts/check-upgrade-coverage.mjsscripts/determine-version-utils.test.tsscripts/determine-version-utils.tsscripts/determine-version.tsscripts/lint-throws.test.mjsskills-contrib/draft-release-notes/SKILL.mdskills-contrib/publish-npm-version/SKILL.mdskills-contrib/record-upgrade-instructions/SKILL.mdskills/prisma-8-extension-upgrade/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (9)
- scripts/lint-throws.test.mjs
- scripts/check-release-notes.mjs
- package.json
- skills-contrib/draft-release-notes/SKILL.md
- scripts/determine-version-utils.test.ts
- .github/workflows/publish.yml
- skills-contrib/record-upgrade-instructions/SKILL.md
- scripts/check-upgrade-coverage.mjs
- scripts/determine-version.ts
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/determine-version-utils.ts`:
- Around line 7-8: Restrict RC_BASE_PATTERN to match only the supported 8.0.0 RC
line with rc numbers starting at 1, and ensure assertCanonicalBase() rejects
other RC bases such as 0.17.0-rc.0, 8.0.1-rc.1, and 9.2.3-rc.1. Add negative
tests covering non-8.0.0 RC bases and rc.0 while preserving valid RC behavior.
In `@scripts/determine-version.ts`:
- Around line 131-134: Route RC release results to next and stable release
results to latest in scripts/determine-version.ts (131-134). Update
.github/workflows/publish.yml (10-16, 145-155, 169-180, 182-216) to document
both channels, exclude both release tags from lightweight tags, gate release
notes for both, and create the appropriate RC or stable GitHub Release. Update
scripts/check-release-notes.mjs (4-7, 34-35, 182) so checks apply to every
release and error text names next and latest. Update docs/oss/versioning.md
(34-45, 69-85) to document next for RCs, stable latest, and both workflow/manual
procedures.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: bc007d36-4d43-4134-8204-085b10d12663
📒 Files selected for processing (14)
.github/workflows/publish.ymldocs/oss/versioning.mdpackage.jsonscripts/bump-version.tsscripts/check-release-notes.mjsscripts/check-upgrade-coverage.mjsscripts/determine-version-utils.test.tsscripts/determine-version-utils.tsscripts/determine-version.tsscripts/lint-throws.test.mjsskills-contrib/draft-release-notes/SKILL.mdskills-contrib/publish-npm-version/SKILL.mdskills-contrib/record-upgrade-instructions/SKILL.mdskills/prisma-8-extension-upgrade/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (9)
- package.json
- skills-contrib/record-upgrade-instructions/SKILL.md
- scripts/lint-throws.test.mjs
- scripts/check-upgrade-coverage.mjs
- skills-contrib/draft-release-notes/SKILL.md
- skills/prisma-8-extension-upgrade/SKILL.md
- scripts/determine-version-utils.test.ts
- scripts/bump-version.ts
- skills-contrib/publish-npm-version/SKILL.md
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
docs/oss/versioning.md (2)
71-71: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winQualify the
latestclaim forprisma.The
prismapackage publishes RC versions undernextuntil8.0.0final. This sentence says that the release publishes the new version underlatestwithout stating the exception. Clarify thatlatestapplies to the other packages andnextapplies toprisma.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/oss/versioning.md` at line 71, Update the versioning documentation sentence describing the publish dist-tag so it qualifies the claim: use `next` for RC versions of the `prisma` package until `8.0.0` final, while `latest` applies to the other packages. Preserve the existing release-trigger and pre-release behavior details.
7-8: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winUpdate the remaining 0.x release examples.
The new note changes the release line to
8.0.0-rc.N, but this section still describes regular0.xminors, including0.8.1patch releases and “each minor.” Rewrite these examples for RC respins, or clearly label the0.xtext as historical transition guidance.As per coding guidelines, documentation must remain current.
Proposed documentation update
-## Pre-1.0: deliberately unstable +## Early access: deliberately unstable -**Breaking changes ship in regular minor bumps.** +**Breaking changes may ship in any RC respin before `8.0.0` final.** -**Releases are frequent.** The cadence is "ship a minor whenever the next batch of work is cohesive enough to warrant one" +**Releases are frequent.** The cadence is "ship the next RC whenever the next batch of work is cohesive enough to warrant one" -**There are no patch releases of older minors.** +**On the RC line, fixes ship as the next `rc.N`, not as patch releases.**🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/oss/versioning.md` around lines 7 - 8, Update the release examples in the versioning guidance to use the current 8.0.0-rc.N RC respin model instead of presenting 0.x minors and 0.8.1 patches as current behavior. If retaining the 0.x examples, explicitly label them as historical transition guidance and preserve the updated v8 RC policy.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/publish-packages-utils.mjs`:
- Around line 64-71: Update the release-tag documentation to match
planPackagePublish: in scripts/publish-packages-utils.mjs lines 64-71, state
that Prisma 7 retains latest while Prisma 8 releases use next; apply the same
policy in scripts/publish-packages.mjs lines 16-20; and revise
packages/9-public/prisma/README.md lines 3-5 to remove the 8.0.0-final
transition promise and document the supported Prisma 8 installation channel.
---
Outside diff comments:
In `@docs/oss/versioning.md`:
- Line 71: Update the versioning documentation sentence describing the publish
dist-tag so it qualifies the claim: use `next` for RC versions of the `prisma`
package until `8.0.0` final, while `latest` applies to the other packages.
Preserve the existing release-trigger and pre-release behavior details.
- Around line 7-8: Update the release examples in the versioning guidance to use
the current 8.0.0-rc.N RC respin model instead of presenting 0.x minors and
0.8.1 patches as current behavior. If retaining the 0.x examples, explicitly
label them as historical transition guidance and preserve the updated v8 RC
policy.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: 90dedd14-7a97-4877-9f4b-9ad093200bf2
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (9)
docs/oss/versioning.mdpackages/9-public/prisma/README.mdpackages/9-public/prisma/bin/prisma-next.mjspackages/9-public/prisma/package.jsonpackages/9-public/prisma/scripts/lint-sync.mjsscripts/determine-version.tsscripts/publish-packages-utils.mjsscripts/publish-packages-utils.test.mjsscripts/publish-packages.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
- scripts/determine-version.ts
9413481 to
9285e4a
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/oss/versioning.md`:
- Line 34: Update the package and dist-tag policy in the versioning
documentation to explicitly state that the bare prisma package is published
under next before v8, while published packages otherwise use latest. Remove or
revise adjacent statements claiming this repository does not publish prisma or
that v8 publishing belongs exclusively to prisma/prisma-cli, keeping the post-v8
contract accurate.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: 081b9149-5b4d-4666-b145-84e646727f5f
📒 Files selected for processing (14)
.github/workflows/publish.ymldocs/oss/versioning.mdpackage.jsonscripts/bump-version.tsscripts/check-release-notes.mjsscripts/check-upgrade-coverage.mjsscripts/determine-version-utils.test.tsscripts/determine-version-utils.tsscripts/determine-version.tsscripts/lint-throws.test.mjsskills-contrib/draft-release-notes/SKILL.mdskills-contrib/publish-npm-version/SKILL.mdskills-contrib/record-upgrade-instructions/SKILL.mdskills/prisma-8-extension-upgrade/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (12)
- skills-contrib/record-upgrade-instructions/SKILL.md
- package.json
- scripts/lint-throws.test.mjs
- .github/workflows/publish.yml
- scripts/determine-version.ts
- scripts/check-upgrade-coverage.mjs
- skills-contrib/publish-npm-version/SKILL.md
- scripts/determine-version-utils.test.ts
- scripts/check-release-notes.mjs
- skills-contrib/draft-release-notes/SKILL.md
- scripts/bump-version.ts
- skills/prisma-8-extension-upgrade/SKILL.md
Releases now version as 8.0.0-rc.N; latest tracks the newest release, RC or stable, for every package this repo publishes (these names have no pre-v8 stable audience to protect — the frozen-latest concern belongs to the bare prisma package, published elsewhere). GitHub Releases for RC versions are marked pre-release. pnpm bump-minor becomes bump-version (rc base -> next rc; pre-8 stable -> 8.0.0-rc.1; stable >=8 -> next minor). Dev builds continue as <base>-dev.N. Upgrade-coverage and release-notes baselines treat rc tags as shipped releases. The root version stays 0.17.0 — cutting 8.0.0-rc.1 is a follow-up release PR via the publish-npm-version skill. Refs: TML-3170 Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Run the release-notes presence check before packages reach the registry, not between publish and Release creation. - Restrict the canonical RC shape to the one supported line (8.0.0-rc.N, N >= 1); a base like 9.2.3-rc.1 or 8.0.0-rc.0 now fails the publish guard. - publish-npm-version skill: correct the idempotency claim (the worktree-add step is not rerunnable) and add a verify step catching a stale local helper computing a different $NEXT than the bump. Refs: TML-3170 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
67b1ef7 to
76bf451
Compare
Linked issue
Refs TML-3170.
Follow-up (not in this PR): the release PR that bumps the root version
0.17.0→8.0.0-rc.1via thepublish-npm-versionskill, which is what actually starts the RC line.At a glance
Before this PR, a release was always the next
0.xminor. After it, the same merge-the-release-PR flow ships8.0.0-rc.1,8.0.0-rc.2, … — still under dist-taglatest, with the GitHub Release marked pre-release.Decision
This PR moves the publish pipeline onto the v8 release-candidate line:
8.0.0-rc.N— the counter advances on every release publish. "The v8 RC" is the product name; the number iterates freely underneath, so respins are cheap and there is no promise the final RC is literallyrc.1.latestkeeps tracking the newest release, RC included. The package names this repo publishes (@prisma/orm-*, the platform packages, theprisma-nextshim) have no pre-v8 stable audience to protect — a bare install is an early-access install. The frozen-latestconcern belongs to the bareprismapackage, which this repo does not publish — its v8 bin shim lives in prisma/prisma-cli, which publishes undernextwhile v7 keepslatest.pnpm bump-minorbecomespnpm bump-version, encoding the release policy: RC base → next RC; pre-8 stable base →8.0.0-rc.1(the one-time line transition); stable ≥ 8 → next minor.--prereleasewhenever the version is on the RC line.The root version deliberately stays
0.17.0in this PR. Until the transition release PR lands, the pipeline behaves exactly as before (verified by running the publish paths locally — see Testing performed).Notes for the reviewer
latestsemantics are unchanged (newest release); lockfiles pin resolved versions, and existing^0.xranges can never resolve to8.0.0-rc.N(pre-releases don't satisfy stable ranges), sonpm updatenever moves anyone onto the RC line — only fresh installs get RCs once the transition PR lands.X.Y.Zonly" to "cleanX.Y.ZorX.Y.Z-rc.N" (assertCanonicalBase); anything else is still refused onmain.check-upgrade-coverage's publish baseline changed from "last stable tag" to "last release tag" (v*-rc.Nnow counts; only-dev.*/-beta.*are excluded). Without this, every RC publish would diff againstv0.17.0forever and the coverage diff would grow without bound. TheparseVersion/transitionLabelmachinery needed no changes — it already discards pre-release suffixes, so RC respins land in PR-mode steady-state semantics (in-flight directory8.0-to-8.1).composeDevVersionmoved out ofdetermine-version.tsinto the pure utils module so the dev-counter logic (including the new RC-base handling and counter reset across base changes) is unit-tested rather than only exercised in CI. Dev builds on the RC line are8.0.0-rc.X-dev.N.publish-npm-version,draft-release-notes,record-upgrade-instructions, extension-upgrade skill,docs/oss/versioning.md) renamesbump-minor→bump-versionand updates the release procedures for the RC line.draft-release-notes' range lower bound now explicitly treats-rc.Ntags as releases, so an RC respin's notes cover exactly what changed since the previous RC.How it fits together
assertCanonicalBaseadmits the two release shapes;computeNextReleaseVersionandcomposeDevVersionare pure helpers over them.<base>underlatest, routine pushes compose<base>-dev.Nvia the shared helper.pnpm bump-version): same idempotent read-from-HEAD design as before, now advancing to the next release version rather than the next minor.--prereleasewhen the published version matches*-rc.*; everything else (notes check, lightweight dev tags) keeps itslatest-scoped conditions.latesttracks RCs for these packages, where the bare-prismanext-channel policy lives, and the one-time transition; the procedures are updated to match.Behavior changes & evidence
8.0.0-rc.Npublishes underlatestwith a pre-release GitHub Release; a stable bump behaves exactly as today. Implementation: scripts/determine-version.ts, .github/workflows/publish.yml. Evidence:computeNextReleaseVersionandassertCanonicalBasesuites in scripts/determine-version-utils.test.ts.8.0.0-rc.X-dev.N, with the counter resetting whenever the base moves (new RC counter, stable→RC transition). Implementation:composeDevVersionin scripts/determine-version-utils.ts. Evidence: thecomposeDevVersionsuite in scripts/determine-version-utils.test.ts.pnpm bump-versionfrom0.17.0produces8.0.0-rc.1; from8.0.0-rc.1produces8.0.0-rc.2; from a stable ≥ 8 produces the next minor. Implementation: scripts/bump-version.ts. Evidence: thecomputeNextReleaseVersionsuite in scripts/determine-version-utils.test.ts.v*-rc.N. Implementation: scripts/check-upgrade-coverage.mjs.Summary
Enables shipping the v8 RC early and iterating on it with frequent releases, using the exact publish flow that exists today — only the version shape and the pre-release marking change.
Testing performed
pnpm test:scripts— 365 tests, 0 failures (includes the suites covering the new/changed version helpers).pnpm lint(full repo),pnpm lint:workflows,node scripts/validate-skills.mjs— all green.determine-version.tsagainst the real registry: dispatch resolves0.17.0→latest; push with unchanged version resolves0.17.0-dev.N→dev(continuing from the registry's actual counter)..github/workflows/publish.ymlparsed with the workspaceyamlpackage to confirm validity after the edits.Skill update
Updated in this PR:
skills-contrib/publish-npm-version(RC-aware bump flow),skills-contrib/draft-release-notes(release-tag range bounds),skills-contrib/record-upgrade-instructionsandskills/extension-author/prisma-8-extension-upgrade(bump-versionrename). No end-user-facing CLI/API surface changes — the pipeline changes are maintainer-facing.Alternatives considered
nextdist-tag and freezinglatestat0.17.0— rejected for these packages. Freezinglatestprotects a stable audience these package names don't have, npm publishes exactly one tag per publish so a second tag would neednpm dist-tag add(which can't authenticate under OIDC trusted publishing — no long-lived token exists in this repo by design), and semver ranges already prevent any existing install from being moved onto an RC. Thenextchannel remains the right design for the bareprismapackage, whoselatestgenuinely must stay on v7; its v8 shim ships from prisma/prisma-cli.8.0.0-rc.1.1) for respins of a named RC — rejected. Semver orders them correctly but no major ecosystem package does this (Drizzle, React, and TypeScript all use a flat counter), and the flatrc.Ncounter makes ordering and automation trivial.bump-minorand adding a separate RC bump script — rejected; there is exactly one "advance to the next release version" operation and its meaning depends only on the current base's shape, so one script encoding the policy beats two scripts and a decision the maintainer must make each time.8.0.0-rc.1in this same PR — rejected to preserve the one-PR-per-release convention: merging a release bump is the publish trigger, and that merge should be its own reviewable event with its own release notes.Checklist
git commit -s) per the DCO. The DCO status check will block merge if any commit is missing aSigned-off-by:trailer.n/aif the change is doc-only / refactor with no behavioural delta).TML-NNNN: <sentence-case title>form (Linear ticket prefix + concise title naming the concrete deliverable). See.claude/skills/create-pr/SKILL.mdfor the full convention.n/a — internal only).Summary by CodeRabbit
New Features
latestchannel and generate pre-release GitHub Releases.Documentation
pnpm bump-versioncommand.