Skip to content

TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line) - #29899

Merged
wmadden merged 2 commits into
mainfrom
tml-3170-rc-line-versioning
Aug 6, 2026
Merged

TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line)#29899
wmadden merged 2 commits into
mainfrom
tml-3170-rc-line-versioning

Conversation

@wmadden-electric

@wmadden-electric wmadden-electric commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Linked issue

Refs TML-3170.

Follow-up (not in this PR): the release PR that bumps the root version 0.17.08.0.0-rc.1 via the publish-npm-version skill, which is what actually starts the RC line.

At a glance

// scripts/determine-version-utils.ts
export function computeNextReleaseVersion(current: string): string {
  assertCanonicalBase(current);
  const rcMatch = current.match(RC_BASE_PATTERN);
  if (rcMatch) {
    const [, major, minor, patch, rc] = rcMatch;
    return `${major}.${minor}.${patch}-rc.${Number(rc) + 1}`;
  }
  if (parseVersion(current).major < 8) {
    return '8.0.0-rc.1';
  }
  return computeNextMinor(current);
}

Before this PR, a release was always the next 0.x minor. After it, the same merge-the-release-PR flow ships 8.0.0-rc.1, 8.0.0-rc.2, … — still under dist-tag latest, with the GitHub Release marked pre-release.

Decision

This PR moves the publish pipeline onto the v8 release-candidate line:

  1. Releases version as 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 literally rc.1.
  2. latest keeps tracking the newest release, RC included. The package names this repo publishes (@prisma/orm-*, the platform packages, the prisma-next shim) have no pre-v8 stable audience to protect — a bare install is an early-access install. The frozen-latest concern belongs to the bare prisma package, which this repo does not publish — its v8 bin shim lives in prisma/prisma-cli, which publishes under next while v7 keeps latest.
  3. pnpm bump-minor becomes pnpm 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.
  4. RC releases keep the full release ceremony: committed release notes are required, and the GitHub Release is created with --prerelease whenever the version is on the RC line.

The root version deliberately stays 0.17.0 in 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

  • No existing user is affected. latest semantics are unchanged (newest release); lockfiles pin resolved versions, and existing ^0.x ranges can never resolve to 8.0.0-rc.N (pre-releases don't satisfy stable ranges), so npm update never moves anyone onto the RC line — only fresh installs get RCs once the transition PR lands.
  • The canonical root-version shape widens from "clean X.Y.Z only" to "clean X.Y.Z or X.Y.Z-rc.N" (assertCanonicalBase); anything else is still refused on main.
  • check-upgrade-coverage's publish baseline changed from "last stable tag" to "last release tag" (v*-rc.N now counts; only -dev.*/-beta.* are excluded). Without this, every RC publish would diff against v0.17.0 forever and the coverage diff would grow without bound. The parseVersion/transitionLabel machinery needed no changes — it already discards pre-release suffixes, so RC respins land in PR-mode steady-state semantics (in-flight directory 8.0-to-8.1).
  • composeDevVersion moved out of determine-version.ts into 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 are 8.0.0-rc.X-dev.N.
  • The skill/docs sweep (publish-npm-version, draft-release-notes, record-upgrade-instructions, extension-upgrade skill, docs/oss/versioning.md) renames bump-minorbump-version and updates the release procedures for the RC line. draft-release-notes' range lower bound now explicitly treats -rc.N tags as releases, so an RC respin's notes cover exactly what changed since the previous RC.

How it fits together

  1. The version-shape vocabulary (scripts/determine-version-utils.ts): assertCanonicalBase admits the two release shapes; computeNextReleaseVersion and composeDevVersion are pure helpers over them.
  2. The publish decision (scripts/determine-version.ts): unchanged trigger model — a release bump publishes <base> under latest, routine pushes compose <base>-dev.N via the shared helper.
  3. The maintainer entry point (scripts/bump-version.ts, pnpm bump-version): same idempotent read-from-HEAD design as before, now advancing to the next release version rather than the next minor.
  4. The workflow ceremony (.github/workflows/publish.yml): the GitHub Release step adds --prerelease when the published version matches *-rc.*; everything else (notes check, lightweight dev tags) keeps its latest-scoped conditions.
  5. The release-cycle baselines (scripts/check-upgrade-coverage.mjs, skills-contrib/draft-release-notes/SKILL.md): "previous release" means the previous release tag — stable or RC — so upgrade-coverage diffs and release notes span exactly one release cycle on the RC line too.
  6. The policy documentation (docs/oss/versioning.md): a new "The v8 RC line" section states the scheme, why latest tracks RCs for these packages, where the bare-prisma next-channel policy lives, and the one-time transition; the procedures are updated to match.

Behavior changes & evidence

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.
  • Local smoke-test of determine-version.ts against the real registry: dispatch resolves 0.17.0latest; push with unchanged version resolves 0.17.0-dev.Ndev (continuing from the registry's actual counter).
  • .github/workflows/publish.yml parsed with the workspace yaml package 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-instructions and skills/extension-author/prisma-8-extension-upgrade (bump-version rename). No end-user-facing CLI/API surface changes — the pipeline changes are maintainer-facing.

Alternatives considered

  • Publishing RCs under a next dist-tag and freezing latest at 0.17.0 — rejected for these packages. Freezing latest protects a stable audience these package names don't have, npm publishes exactly one tag per publish so a second tag would need npm 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. The next channel remains the right design for the bare prisma package, whose latest genuinely must stay on v7; its v8 shim ships from prisma/prisma-cli.
  • Nested pre-release identifiers (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 flat rc.N counter makes ordering and automation trivial.
  • Keeping bump-minor and 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.
  • Bumping to 8.0.0-rc.1 in 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

  • All commits are signed off (git commit -s) per the DCO. The DCO status check will block merge if any commit is missing a Signed-off-by: trailer.
  • I read CONTRIBUTING.md and the change is scoped to one logical concern.
  • Tests are updated (or n/a if the change is doc-only / refactor with no behavioural delta).
  • The PR title is in TML-NNNN: <sentence-case title> form (Linear ticket prefix + concise title naming the concrete deliverable). See .claude/skills/create-pr/SKILL.md for the full convention.
  • The Skill update section above is filled in (or stated n/a — internal only).

Summary by CodeRabbit

  • New Features

    • Added support for incremental release-candidate versions, including progression to the 8.0.0 release line.
    • Added development-version handling with consistent counter continuation and resets.
    • RC releases now use the latest channel and generate pre-release GitHub Releases.
  • Documentation

    • Updated versioning, publishing, release-note, and upgrade guidance for RC and stable releases.
    • Replaced the minor-bump workflow with the pnpm bump-version command.
    • Clarified tag, channel, and release-note requirements across publishing workflows.

@wmadden-electric
wmadden-electric requested a review from a team as a code owner August 5, 2026 16:11
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The release process now supports 8.0.0-rc.N progression, shared development-version composition, RC publishing under latest, pre-release GitHub Releases, RC-aware validation, and updated versioning guidance. The bump-minor command is replaced by pnpm bump-version.

Changes

RC release flow

Layer / File(s) Summary
Version progression and validation
scripts/determine-version-utils.ts, scripts/determine-version-utils.test.ts
Release utilities now advance RC versions, transition pre-8 versions to 8.0.0-rc.1, advance stable 8.x minors, compose development versions, and validate RC bases.
Version resolution and bump command
package.json, scripts/bump-version.ts, scripts/determine-version.ts, scripts/lint-throws.test.mjs
The package script and version-resolution paths now use pnpm bump-version, computeNextReleaseVersion, and shared development-version composition.
RC publish and release validation
.github/workflows/publish.yml, scripts/check-release-notes.mjs, scripts/check-upgrade-coverage.mjs
RC versions publish under latest, create pre-release GitHub Releases, and remain eligible for release-tag coverage and release-note checks.
Release policy and contributor guidance
docs/oss/versioning.md, skills-contrib/*, skills/prisma-8-extension-upgrade/SKILL.md
Documentation and skills describe the v8 RC cadence, RC release notes, latest behavior, and the pnpm bump-version procedure.

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
Loading

Possibly related PRs

  • prisma/prisma#29883: Both PRs modify development-version resolution in scripts/determine-version.ts.

Suggested reviewers: aqrln

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 57.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: publishing 8.0.0 release candidates with the latest dist-tag tracking the RC line.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tml-3170-rc-line-versioning

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@wmadden-electric
wmadden-electric force-pushed the tml-3170-rc-line-versioning branch from b6ab8a6 to 7128beb Compare August 5, 2026 16:21
@wmadden-electric wmadden-electric changed the title TML-3170: publish blessed releases as 8.0.0-rc.N under dist-tag next TML-3170: publish releases as 8.0.0-rc.N under dist-tag next Aug 5, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6cc73aa and b6ab8a6.

📒 Files selected for processing (14)
  • .github/workflows/publish.yml
  • docs/oss/versioning.md
  • package.json
  • scripts/bump-version.ts
  • scripts/check-release-notes.mjs
  • scripts/check-upgrade-coverage.mjs
  • scripts/determine-version-utils.test.ts
  • scripts/determine-version-utils.ts
  • scripts/determine-version.ts
  • scripts/lint-throws.test.mjs
  • skills-contrib/draft-release-notes/SKILL.md
  • skills-contrib/publish-npm-version/SKILL.md
  • skills-contrib/record-upgrade-instructions/SKILL.md
  • skills/extension-author/prisma-8-extension-upgrade/SKILL.md

Comment thread .github/workflows/publish.yml Outdated
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

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.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size
postgres / no-emit 166.75 KB (0%)
postgres / emit 145.52 KB (0%)
mongo / no-emit 100.4 KB (0%)
mongo / emit 90.24 KB (0%)
cf-worker / no-emit 191.31 KB (0%)
cf-worker / emit 167.79 KB (0%)

@pkg-pr-new

pkg-pr-new Bot commented Aug 5, 2026

Copy link
Copy Markdown

Open in StackBlitz

prisma-next

npm i https://pkg.pr.new/prisma-next@29899

@prisma/orm-extension-arktype-json

npm i https://pkg.pr.new/@prisma/orm-extension-arktype-json@29899

@prisma/orm-extension-middleware-cache

npm i https://pkg.pr.new/@prisma/orm-extension-middleware-cache@29899

@prisma/orm-extension-paradedb

npm i https://pkg.pr.new/@prisma/orm-extension-paradedb@29899

@prisma/orm-extension-pgvector

npm i https://pkg.pr.new/@prisma/orm-extension-pgvector@29899

@prisma/orm-extension-postgis

npm i https://pkg.pr.new/@prisma/orm-extension-postgis@29899

@prisma/orm-extension-supabase

npm i https://pkg.pr.new/@prisma/orm-extension-supabase@29899

@prisma/orm-family-mongo

npm i https://pkg.pr.new/@prisma/orm-family-mongo@29899

@prisma/orm-family-sql

npm i https://pkg.pr.new/@prisma/orm-family-sql@29899

@prisma/orm-framework

npm i https://pkg.pr.new/@prisma/orm-framework@29899

@prisma/orm-mongo

npm i https://pkg.pr.new/@prisma/orm-mongo@29899

@prisma/orm-postgres

npm i https://pkg.pr.new/@prisma/orm-postgres@29899

@prisma/orm-sqlite

npm i https://pkg.pr.new/@prisma/orm-sqlite@29899

@prisma/orm-target-mongo

npm i https://pkg.pr.new/@prisma/orm-target-mongo@29899

@prisma/orm-target-postgres

npm i https://pkg.pr.new/@prisma/orm-target-postgres@29899

@prisma/orm-target-sqlite

npm i https://pkg.pr.new/@prisma/orm-target-sqlite@29899

@prisma/orm-toolchain

npm i https://pkg.pr.new/@prisma/orm-toolchain@29899

commit: 9285e4a

@wmadden-electric
wmadden-electric force-pushed the tml-3170-rc-line-versioning branch from 7128beb to 38e1d59 Compare August 5, 2026 16:31

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6cc73aa and 7128beb.

📒 Files selected for processing (14)
  • .github/workflows/publish.yml
  • docs/oss/versioning.md
  • package.json
  • scripts/bump-version.ts
  • scripts/check-release-notes.mjs
  • scripts/check-upgrade-coverage.mjs
  • scripts/determine-version-utils.test.ts
  • scripts/determine-version-utils.ts
  • scripts/determine-version.ts
  • scripts/lint-throws.test.mjs
  • skills-contrib/draft-release-notes/SKILL.md
  • skills-contrib/publish-npm-version/SKILL.md
  • skills-contrib/record-upgrade-instructions/SKILL.md
  • skills/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

Comment thread skills-contrib/publish-npm-version/SKILL.md Outdated
Comment thread skills-contrib/publish-npm-version/SKILL.md Outdated
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

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.

@wmadden-electric wmadden-electric changed the title TML-3170: publish releases as 8.0.0-rc.N under dist-tag next TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line) Aug 5, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6cc73aa and 38e1d59.

📒 Files selected for processing (14)
  • .github/workflows/publish.yml
  • docs/oss/versioning.md
  • package.json
  • scripts/bump-version.ts
  • scripts/check-release-notes.mjs
  • scripts/check-upgrade-coverage.mjs
  • scripts/determine-version-utils.test.ts
  • scripts/determine-version-utils.ts
  • scripts/determine-version.ts
  • scripts/lint-throws.test.mjs
  • skills-contrib/draft-release-notes/SKILL.md
  • skills-contrib/publish-npm-version/SKILL.md
  • skills-contrib/record-upgrade-instructions/SKILL.md
  • skills/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

Comment thread scripts/determine-version-utils.ts Outdated
Comment thread scripts/determine-version.ts
@wmadden-electric wmadden-electric changed the title TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line) TML-3170: v8 RC versioning + publish prisma@next from this repo Aug 6, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 win

Qualify the latest claim for prisma.

The prisma package publishes RC versions under next until 8.0.0 final. This sentence says that the release publishes the new version under latest without stating the exception. Clarify that latest applies to the other packages and next applies to prisma.

🤖 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 win

Update the remaining 0.x release examples.

The new note changes the release line to 8.0.0-rc.N, but this section still describes regular 0.x minors, including 0.8.1 patch releases and “each minor.” Rewrite these examples for RC respins, or clearly label the 0.x text 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

📥 Commits

Reviewing files that changed from the base of the PR and between 38e1d59 and 9413481.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (9)
  • docs/oss/versioning.md
  • packages/9-public/prisma/README.md
  • packages/9-public/prisma/bin/prisma-next.mjs
  • packages/9-public/prisma/package.json
  • packages/9-public/prisma/scripts/lint-sync.mjs
  • scripts/determine-version.ts
  • scripts/publish-packages-utils.mjs
  • scripts/publish-packages-utils.test.mjs
  • scripts/publish-packages.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
  • scripts/determine-version.ts

Comment thread scripts/publish-packages-utils.mjs Outdated
@wmadden-electric
wmadden-electric force-pushed the tml-3170-rc-line-versioning branch from 9413481 to 9285e4a Compare August 6, 2026 14:40
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

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.

@wmadden-electric wmadden-electric changed the title TML-3170: v8 RC versioning + publish prisma@next from this repo TML-3170: publish releases as 8.0.0-rc.N (latest tracks the RC line) Aug 6, 2026
@wmadden
wmadden enabled auto-merge August 6, 2026 14:45

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 0146c58 and 9285e4a.

📒 Files selected for processing (14)
  • .github/workflows/publish.yml
  • docs/oss/versioning.md
  • package.json
  • scripts/bump-version.ts
  • scripts/check-release-notes.mjs
  • scripts/check-upgrade-coverage.mjs
  • scripts/determine-version-utils.test.ts
  • scripts/determine-version-utils.ts
  • scripts/determine-version.ts
  • scripts/lint-throws.test.mjs
  • skills-contrib/draft-release-notes/SKILL.md
  • skills-contrib/publish-npm-version/SKILL.md
  • skills-contrib/record-upgrade-instructions/SKILL.md
  • skills/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

Comment thread docs/oss/versioning.md
wmadden-electric and others added 2 commits August 6, 2026 23:13
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>
@wmadden-electric
wmadden-electric force-pushed the tml-3170-rc-line-versioning branch from 67b1ef7 to 76bf451 Compare August 6, 2026 21:13
@wmadden
wmadden added this pull request to the merge queue Aug 6, 2026
Merged via the queue into main with commit 06ea3dc Aug 6, 2026
1 check passed
@wmadden
wmadden deleted the tml-3170-rc-line-versioning branch August 6, 2026 21:14
@wmadden-electric wmadden-electric mentioned this pull request Aug 7, 2026
5 tasks
anayonkars pushed a commit to anayonkars/prisma that referenced this pull request Aug 7, 2026
## Linked issue

Refs [TML-3170](https://linear.app/prisma-company/issue/TML-3170) — this
is the release that starts the v8 RC line the pipeline work in
[prisma#29899](prisma#29899) prepared.

## Summary

`0.17.0` → `8.0.0-rc.1`. This is the one-time transition onto the v8
release-candidate line: there are no further `0.x` minors, and
subsequent releases advance the counter (`8.0.0-rc.2`, `rc.3`, …).
Policy: [`docs/oss/versioning.md`](docs/oss/versioning.md).

**Merging this PR ships the release.** The push to `main` carries the
bumped root `version`, the [`Publish to
npm`](.github/workflows/publish.yml) workflow detects the change and
publishes `8.0.0-rc.1` under dist-tag `latest`, and a matching GitHub
Release — marked **pre-release**, because the version is on the RC line
— is created with
[`docs/releases/v8.0.0-rc.1.md`](docs/releases/v8.0.0-rc.1.md) as its
body verbatim. No separate dispatch step.

## Review surface

[`docs/releases/v8.0.0-rc.1.md`](docs/releases/v8.0.0-rc.1.md) is the
human-review surface — it becomes the public Release body. It covers the
RC-line transition (including that `npm update` moves nobody onto the
RC, since `^0.x` ranges can't match a pre-release), two breaking
changes, one feature, and four fixes drawn from the 14 PRs merged since
`v0.17.0`.

## What each commit does

| Commit | What it does |
| --- | --- |
| `chore(release): bump to 8.0.0-rc.1` | `pnpm bump-version` across 113
manifests plus the lockfile. Version fields and internal
`workspace:<version>` specifiers only. |
| `docs(release): add release notes for v8.0.0-rc.1` | The notes file
and the mirrored `CHANGELOG.md` entry. |
| `chore(release): relabel the in-flight upgrade recipes 0.17-to-8.0` |
See below. |
| `docs(release): ground the aggregate example in the real ORM surface`
| Corrects a before/after snippet that used a non-existent accessor. |

## Notes for the reviewer

- **The in-flight upgrade recipes were relabelled `0.17-to-0.18` →
`0.17-to-8.0`.** They were authored when the next release was expected
to be `0.18.0`; the step users actually take is now `0.17` → `8.0`,
which is also what `check:upgrade-coverage` requires once the bump
crosses a major. The recipe contents are unchanged apart from the `to:`
frontmatter, and the links in the notes and changelog were repointed to
match. Both upgrade skills build their chain by one-minor arithmetic,
which can't express this step, so each gained a line saying the
directories present are the source of truth.
- **Verify the two breaking-change entries against your own read of the
PRs.** The driver-SPI split
([prisma#29907](prisma#29907)) is listed as
breaking on the grounds that `SqlQueryable` is exported and anyone
implementing or wrapping a SQL driver must change; the ticket describes
it as substrate-only with no ORM-visible behavior change, and the entry
says so explicitly. If the custom-driver audience isn't considered real
yet, that entry can be demoted to Features.
- **Six PRs were deliberately omitted** from the notes as not
user-facing: roadmap/project-shaping docs
([prisma#29916](prisma#29916),
[prisma#29891](prisma#29891),
[prisma#29909](prisma#29909)), test-only
([prisma#29912](prisma#29912),
[prisma#29908](prisma#29908)), and JSDoc-only
([prisma#29893](prisma#29893)). The last of
those corrects `update()`/`delete()` docs that read as if they batch —
no behavior changed, but say the word and it can be added as a
documentation line under Fixes.

## Testing performed

- `pnpm check:release-notes --mode pr`, `pnpm check:upgrade-coverage
--mode pr`, `pnpm check:publish-deps` — all pass.
- `pnpm test:scripts` — 368 tests, 0 failures.
- Bump diff audited: every changed file is a `package.json` or
`pnpm-lock.yaml`; the lockfile diff is `specifier: workspace:<old> →
workspace:<new>` lines only, with no external-resolution churn.
- The two code snippets in the notes were checked against the source:
the `SqlQueryable` before/after matches `driver-types.ts` at `v0.17.0`
and at HEAD, and the include-reducer result shape matches the assertions
in `test/integration/test/sql-orm-client/include.test.ts`.

## Skill update

n/a — internal only. No user-facing CLI/API surface changes in the bump
itself; the two upgrade skills' chain-construction note is a docs
correction that follows from the relabel.

## Checklist

- [x] All commits are signed off (`git commit -s`) per the
[DCO](CONTRIBUTING.md#developer-certificate-of-origin-dco).
- [x] I read [CONTRIBUTING.md](CONTRIBUTING.md) and the change is scoped
to one logical concern.
- [x] Tests are updated (`n/a` — release bump plus release notes; no
behavioural delta).
- [x] The PR title follows the release convention from
[`docs/oss/versioning.md`](docs/oss/versioning.md).
- [x] The **Skill update** section above is filled in.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced the Prisma 8.0.0 release candidate with updated aggregate
results, including bigint and exact decimal values.
* Added clearer upgrade paths for stable releases and release
candidates.
  * Consolidated Prisma 8 skill installation and guidance.

* **Bug Fixes**
* Fixed generated TypeScript keys and literals, nested relation aliases,
many-to-many aggregates, and prepared-statement retry errors.

* **Documentation**
* Added release notes and upgrade guidance for Prisma 8.0.0-rc.1,
including breaking changes and contract regeneration requirements.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---

## Update: the transition machinery is now RC-aware

Review of the first pass caught that the upgrade-instructions machinery
was keyed on `major.minor`, and the whole RC line lives inside one
minor. Every RC transition collapsed to the same wrong label:

| prev → head | before | after |
| --- | --- | --- |
| `0.17.0 → 8.0.0-rc.1` | `0.17-to-8.0` | `0.17-to-8.0.0-rc.1` |
| `8.0.0-rc.1 → 8.0.0-rc.2` | `8.0-to-8.1` | `8.0.0-rc.1-to-8.0.0-rc.2`
|
| `8.0.0-rc.1 → 8.0.0-rc.7` | `8.0-to-8.1` | `8.0.0-rc.1-to-8.0.0-rc.7`
|
| `8.0.0-rc.7 → 8.0.0` final | `8.0-to-8.1` | `8.0.0-rc.7-to-8.0` |

This was not cosmetic. A version bump rewrites every `examples/**` and
`packages/3-extensions/**` manifest, so the coverage rule fires on every
release — meaning **every future RC release PR would have failed** the
same way this one first did, and the only way to satisfy it would have
been to create a directory named for a minor bump that never happens.
Users upgrading `rc.1 → rc.5` would also have found no recipes, which is
exactly when they need them, since RC releases may carry breaking
changes.

A version's transition segment is now `major.minor` for a stable release
and the full `major.minor.patch-rc.N` on the RC line. The in-flight
directory while `main` sits on `rc.N` is `8.0.0-rc.N-to-8.0.0-rc.N+1`,
which is precisely the coverage directory the `rc.N → rc.N+1` release PR
then requires — the same self-consistent relationship minors already
had. Stable-to-stable behavior is byte-identical, asserted against the
historical labels. A reversed RC range now throws, matching the stable
path.

The in-flight recipes on this branch were relabelled to
`0.17-to-8.0.0-rc.1` to match, and both upgrade skills' chain guidance
now states the real rule (steps come from the directories present; on
the RC line a step is one RC, not one minor).

### Verification after the change

- `pnpm test:scripts` — 385 tests, 0 failures.
- `pnpm check:upgrade-coverage --mode pr` — pass.
- `node scripts/check-upgrade-coverage.mjs --mode publish --prev v0.17.0
--head release/8.0.0-rc.1` — pass (this is the check that runs on `main`
after merge).
- `pnpm check:release-notes --mode pr`, `node
scripts/validate-skills.mjs` — pass.

### One more for the reviewer

The recipe bodies still carried the pre-v8 numbering in their headings
and prose ("0.17 → 0.18", references to 0.18 as the release introducing
the aggregate change — a version that was never published). Those were
rewritten to `8.0.0-rc.1`, since the recipes are consumer-facing and the
directory was being renamed around them.

---------

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

3 participants