Skip to content

[release] Exit changeset pre mode for v5, tie core and world-vercel versions together - #3090

Open
VaguelySerious wants to merge 1 commit into
mainfrom
peter/exit-pre-mode-5-ga
Open

[release] Exit changeset pre mode for v5, tie core and world-vercel versions together#3090
VaguelySerious wants to merge 1 commit into
mainfrom
peter/exit-pre-mode-5-ga

Conversation

@VaguelySerious

@VaguelySerious VaguelySerious commented Jul 24, 2026

Copy link
Copy Markdown
Member

Prep for the 5.0.0 GA release. Draft on purpose — merging this arms the GA publish.

  1. Exits changesets pre-release mode (.changeset/pre.json"mode": "exit"). The next Release run on main opens a plain "Version Packages" PR; merging that one publishes 5.0.0 to the latest dist-tag.
  2. Adds @workflow/world-vercel to the fixed group with workflow and @workflow/core. @workflow/world-vercel does not depend on @workflow/core, so nothing kept them aligned before — the Vercel adapter drifted to 5.0.0-beta.32 while core was at 5.0.0-beta.36. From 5.0.0 on, the adapter version is the SDK version.
  3. Derives the GitHub Release flags from the published version, not the branch. main was hardcoded to --prerelease=true --latest=false, which would have marked the 5.0.0 release as a prerelease. Now any version with a prerelease identifier is a prerelease on any branch, and the "Latest" marker follows the GA line on main.
  4. Updates the release-strategy section of AGENTS.md to match.

Verification

Dry-ran the whole thing in a scratch worktree off origin/main (changeset pre exit + changeset version over all 439 pending changesets):

  • All 26 public packages land on exactly 5.0.0 — including @workflow/ai, @workflow/serde, @workflow/utils, and the worlds, which were on trailing beta numbers. The check-release-major.js guard (RELEASE_VERSION: 5) passes.
  • Fixed group works: after that run, a changeset touching only @workflow/core bumps @workflow/core, workflow and @workflow/world-vercel to 5.0.1 together.
  • Release-flag logic checked against workflow@5.0.0 on main (--prerelease=false --latest), workflow@4.2.1 on stable (--prerelease=false --latest=false), and workflow@5.1.0-beta.1 / workflow@6.0.0-rc.2 on main (--prerelease=true --latest=false).

Required companion change on stable

stable is not in pre mode and no package sets publishConfig.tag, so once main leaves pre mode both branches publish to latest — the next 4.x patch would move latest back to 4.x. Companion PR against stable pins ci:publish to changeset publish --tag previous (and mirrors the release-flag change); it needs to land before or alongside this one. The tag is previous rather than v4 because npm rejects tag names that parse as a semver range.

Trade-off worth knowing

The fixed group means a @workflow/world-vercel-only fix now also republishes workflow and @workflow/core (and their dependents), and a core-only fix produces an empty ## X.Y.Z section in the world-vercel changelog. That's the cost of guaranteed alignment.

Take `main` out of changesets pre-release mode so the next "Version
Packages" PR publishes 5.0.0 to the `latest` dist-tag instead of another
`5.0.0-beta.N`.

Also add `@workflow/world-vercel` to the `workflow` / `@workflow/core`
fixed group, so the Vercel adapter carries the same version as the SDK
from 5.0.0 onward, and derive the GitHub Release prerelease/latest flags
from the published version rather than the branch name.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Jul 24, 2026 7:56pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jul 24, 2026 7:56pm
example-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-astro-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-express-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-fastify-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-hono-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-nestjs-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-nitro-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-nuxt-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workbench-vite-workflow Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workflow-swc-playground Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workflow-tarballs Ready Ready Preview, Comment Jul 24, 2026 7:56pm
workflow-web Ready Ready Preview, Comment Jul 24, 2026 7:56pm
@changeset-bot

changeset-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f051d75

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 46 packages
Name Type
@workflow/example-astro Patch
@workflow/example-app Patch
@workflow/example-express Patch
@workflow/example-fastify Patch
@workflow/example-hono Patch
@workflow/example-nest Patch
nextjs-turbopack Patch
nextjs-webpack Patch
@workflow/example-nitro-v2 Patch
@workflow/example-nitro Patch
@workflow/example-nuxt Patch
@workflow/example-sveltekit Patch
workflow-sdk-compiler-playground Patch
@workflow/example-tanstack-start Patch
@workflow/example-vite Patch
@workflow/vitest-workbench Patch
@workflow/ai Patch
@workflow/astro Patch
@workflow/builders Patch
@workflow/cli Patch
@workflow/core Patch
@workflow/docs-typecheck Patch
@workflow/errors Patch
@workflow/nest Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/nuxt Patch
@workflow/rollup Patch
@workflow/serde Patch
@workflow/sveltekit Patch
@workflow/swc-plugin Patch
@workflow/tsconfig Patch
@workflow/typescript-plugin Patch
@workflow/utils Patch
@workflow/vite Patch
@workflow/vitest Patch
@workflow/web-shared Patch
@workflow/web Patch
workflow Patch
@workflow/world-local Patch
@workflow/world-postgres Patch
@workflow/world-testing Patch
@workflow/world-vercel Patch
@workflow/world Patch
docs Patch
tarballs Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

E2E Test Summary

Summary
Passed Failed Skipped Total
✅ ▲ Vercel Production 1455 0 239 1694
✅ 💻 Local Development 1621 0 227 1848
✅ 📦 Local Production 1621 0 227 1848
✅ 🐘 Local Postgres 1621 0 227 1848
✅ 🪟 Windows 154 0 0 154
✅ 📋 Other 1020 0 212 1232
✅ vercel-multi-region 27 0 0 27
Total 7519 0 1132 8651
Details by Category

✅ ▲ Vercel Production

App Passed Failed Skipped
✅ astro 126 0 28
✅ example 126 0 28
✅ express 126 0 28
✅ fastify 126 0 28
✅ hono 126 0 28
✅ nextjs-turbopack 151 0 3
✅ nextjs-webpack 151 0 3
✅ nitro 126 0 28
✅ nuxt 126 0 28
✅ sveltekit 145 0 9
✅ vite 126 0 28

✅ 💻 Local Development

App Passed Failed Skipped
✅ astro-stable 128 0 26
✅ express-stable 128 0 26
✅ fastify-stable 128 0 26
✅ hono-stable 128 0 26
✅ nextjs-turbopack-canary 135 0 19
✅ nextjs-turbopack-stable 154 0 0
✅ nextjs-webpack-canary 135 0 19
✅ nextjs-webpack-stable 154 0 0
✅ nitro-stable 128 0 26
✅ nuxt-stable 128 0 26
✅ sveltekit-stable 147 0 7
✅ vite-stable 128 0 26

✅ 📦 Local Production

App Passed Failed Skipped
✅ astro-stable 128 0 26
✅ express-stable 128 0 26
✅ fastify-stable 128 0 26
✅ hono-stable 128 0 26
✅ nextjs-turbopack-canary 135 0 19
✅ nextjs-turbopack-stable 154 0 0
✅ nextjs-webpack-canary 135 0 19
✅ nextjs-webpack-stable 154 0 0
✅ nitro-stable 128 0 26
✅ nuxt-stable 128 0 26
✅ sveltekit-stable 147 0 7
✅ vite-stable 128 0 26

✅ 🐘 Local Postgres

App Passed Failed Skipped
✅ astro-stable 128 0 26
✅ express-stable 128 0 26
✅ fastify-stable 128 0 26
✅ hono-stable 128 0 26
✅ nextjs-turbopack-canary 135 0 19
✅ nextjs-turbopack-stable 154 0 0
✅ nextjs-webpack-canary 135 0 19
✅ nextjs-webpack-stable 154 0 0
✅ nitro-stable 128 0 26
✅ nuxt-stable 128 0 26
✅ sveltekit-stable 147 0 7
✅ vite-stable 128 0 26

✅ 🪟 Windows

App Passed Failed Skipped
✅ nextjs-turbopack 154 0 0

✅ 📋 Other

App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 128 0 26
✅ e2e-local-dev-tanstack-start- 128 0 26
✅ e2e-local-postgres-nest-stable 128 0 26
✅ e2e-local-postgres-tanstack-start- 128 0 26
✅ e2e-local-prod-nest-stable 128 0 26
✅ e2e-local-prod-tanstack-start- 128 0 26
✅ e2e-vercel-prod-nest 126 0 28
✅ e2e-vercel-prod-tanstack-start 126 0 28

✅ vercel-multi-region

App Passed Failed Skipped
✅ nextjs-turbopack 27 0 0

📋 View full workflow run

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit f051d75 · Fri, 24 Jul 2026 20:19:34 GMT · run logs

Backend: vercel · app: nextjs-turbopack

Metric Scenario Best (ms) P75 (ms) P90 (ms) P99 (ms) Samples
TTFS step 242 (-66%) 💚 1342 🔴 (+28%) 🔻 1401 🔴 (+31%) �� 1466 🔴 (+1.8%) 30
TTFS stream 175 (-82%) 💚 1343 🔴 (+31%) 🔻 1361 🔴 (+31%) 🔻 1594 🔴 (+52%) 🔻 30
TTFS hook + stream 463 (-61%) 💚 1541 🔴 (+17%) 🔻 1610 🔴 (+16%) 🔻 1790 🔴 (+7.1%) 30
STSO 1020 steps (1-20) 189 (+17%) 🔻 299 🔴 (+20%) 🔻 332 🔴 (+10%) 395 🔴 (+30%) 🔻 19
STSO 1020 steps (101-120) 211 (+14%) 309 🔴 (+12%) 610 🔴 (+87%) 🔻 2294 🔴 (+546%) 🔻 19
STSO 1020 steps (1001-1020) 513 (+13%) 603 🔴 (+8.8%) 624 🔴 (+4.3%) 676 🔴 (-18%) 💚 19
WO 1020 steps 416833 (+9.0%) 416833 (+9.0%) 416833 (+9.0%) 416833 (+9.0%) 1
SL stream latency 103 (+37%) 🔻 165 🔴 (+36%) 🔻 191 🔴 (+38%) 🔻 380 🔴 (-55%) 💚 30
SO stream overhead (text) 124 (+28%) 🔻 290 🔴 (+85%) 🔻 413 (+112%) 🔻 563 (+126%) 🔻 30
SO stream overhead (structured) 118 (+20%) 🔻 225 (+31%) 🔻 292 (+18%) 🔻 497 (+78%) 🔻 30
ℹ️ Metric definitions & methodology

Best/P75/P90/P99 deltas compare against the most recent benchmark run on main at the time of this run. 🔻 flags a delta worse than +15%, 💚 one better than −15%.

Metrics — TTFS: time to first step body (in-deployment start() → first step body, deployment clocks) · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (whole-run time outside step bodies, in-deployment anchored) · SL: stream latency (in-deployment write → read propagation, readAt - writtenAt) · SO: stream overhead (end-to-end write+consume time beyond the modelled generation window)

Scenarios — step: one trivial no-op step, no stream; no hooks, so the run stays in turbo mode (in-process fast path) · stream: one streaming step; no hooks, so the run stays in turbo mode (in-process fast path) · hook + stream: registers a hook before one step, which exits turbo mode (dispatch path) · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges, and WO is the whole-run overhead outside step bodies · stream latency: parallel reader/writer steps on a dedicated stream; SL is the in-deployment write->read propagation (readAt - writtenAt) · stream overhead (text): writer streams 300 variable-length text token deltas paced at 100/s for 3s (a haiku-size LLM's token throughput) while a parallel reader drains the whole stream; SO is the end-to-end write+consume time beyond the 3s generation window (overhead/backpressure) · stream overhead (structured): same workload as stream overhead (text), but each delta is an AI-SDK-style structured object ({ type: 'text-delta', id, text }) instead of a raw string, so the SO gap vs the text scenario is the added serialization cost

🔴 marks a percentile over its target (within target is left unmarked). Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · SO 250/500/1000 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

All metrics are measured from deployment-side timestamps only. Runs are triggered by an in-deployment route that stamps the anchor (clientStart) right before start(), so the CI runner’s request and its path through api.vercel.com sit outside every measured window. TTFS = in-deployment start() → first step body (turbo uses the in-process fast path, non-turbo the dispatch path), and includes the VQS dispatch hop plus any /flow cold start. STSO/WO are measured between step bodies on the deployment. SL is measured inside the workflow (parallel reader/writer steps), so it no longer includes the api.vercel.com read path.

Cold starts are kept in the numbers on purpose — they are part of real bursty-workload latency. The workbench deployment cold-starts the /flow invocation for a large fraction of runs, inflating P75+; the Best column shows the fastest (warm-start) sample for comparison.

@VaguelySerious VaguelySerious changed the title [release] Exit changeset pre mode for 5.0.0 GA Jul 24, 2026
@VaguelySerious
VaguelySerious marked this pull request as ready for review July 27, 2026 18:39
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code owners July 27, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant