Skip to content

feat(world-vercel): queue-first start-hook admission#2765

Draft
NathanColosimo wants to merge 1 commit into
nathan/start-hooks-03-world-postgresfrom
nathan/start-hooks-04-world-vercel
Draft

feat(world-vercel): queue-first start-hook admission#2765
NathanColosimo wants to merge 1 commit into
nathan/start-hooks-03-world-postgresfrom
nathan/start-hooks-04-world-vercel

Conversation

@NathanColosimo

@NathanColosimo NathanColosimo commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Stack 4/4 · #2762#2763#2764 → this PR · Server counterpart: vercel/workflow-server#561

Enables queue-first start-hook admission for @workflow/world-vercel.

  • Advertises experimentalStartHookAdmission: { mode: 'queue-first', maxTtlSeconds: 30d, maxTokenBytes: 255 }start() (PR 1) enforces the caps client-side before queueing.
  • Classifies 409 + code: 'hook_conflict' responses as HookConflictError (token + conflictingRunId) inside the shared errorForResponse, so the v3 (makeRequest) and v4 request paths map it identically.
  • The atomic admission itself — run + run_created + token claim + idempotency guard in one transaction, same-run retry short-circuit, stale-claim reclaim, retention — is server-side. A queued run that loses its claim is acknowledged without running user code (runtime handling from PR 1, gated by the experimentalStartHookLoserAck capability).

@vercel

vercel Bot commented Jul 2, 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 3, 2026 3:36am
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jul 3, 2026 3:36am
example-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-astro-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-express-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-fastify-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-hono-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-nitro-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-nuxt-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-sveltekit-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workbench-vite-workflow Ready Ready Preview, Comment Jul 3, 2026 3:36am
workflow-swc-playground Ready Ready Preview, Comment Jul 3, 2026 3:36am
workflow-tarballs Ready Ready Preview, Comment Jul 3, 2026 3:36am
workflow-web Ready Ready Preview, Comment Jul 3, 2026 3:36am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
workflow-docs Skipped Skipped Jul 3, 2026 3:36am

@changeset-bot

changeset-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0216f7f

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

This PR includes changesets to release 17 packages
Name Type
@workflow/world-vercel Minor
@workflow/cli Patch
@workflow/core Patch
@workflow/web Patch
workflow Patch
@workflow/world-testing Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/vitest Patch
@workflow/web-shared Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/nuxt 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 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1442 0 241 1683
✅ 💻 Local Development 1617 0 219 1836
✅ 📦 Local Production 1617 0 219 1836
✅ 🐘 Local Postgres 1617 0 219 1836
✅ 🪟 Windows 153 0 0 153
✅ 📋 Other 893 0 178 1071
Total 7339 0 1076 8415

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 125 0 28
✅ example 125 0 28
✅ express 125 0 28
✅ fastify 125 0 28
✅ hono 125 0 28
✅ nextjs-turbopack 149 0 4
✅ nextjs-webpack 149 0 4
✅ nitro 125 0 28
✅ nuxt 125 0 28
✅ sveltekit 144 0 9
✅ vite 125 0 28
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 128 0 25
✅ express-stable 128 0 25
✅ fastify-stable 128 0 25
✅ hono-stable 128 0 25
✅ nextjs-turbopack-canary 134 0 19
✅ nextjs-turbopack-stable 153 0 0
✅ nextjs-webpack-canary 134 0 19
✅ nextjs-webpack-stable 153 0 0
✅ nitro-stable 128 0 25
✅ nuxt-stable 128 0 25
✅ sveltekit-stable 147 0 6
✅ vite-stable 128 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 128 0 25
✅ express-stable 128 0 25
✅ fastify-stable 128 0 25
✅ hono-stable 128 0 25
✅ nextjs-turbopack-canary 134 0 19
✅ nextjs-turbopack-stable 153 0 0
✅ nextjs-webpack-canary 134 0 19
✅ nextjs-webpack-stable 153 0 0
✅ nitro-stable 128 0 25
✅ nuxt-stable 128 0 25
✅ sveltekit-stable 147 0 6
✅ vite-stable 128 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 128 0 25
✅ express-stable 128 0 25
✅ fastify-stable 128 0 25
✅ hono-stable 128 0 25
✅ nextjs-turbopack-canary 134 0 19
✅ nextjs-turbopack-stable 153 0 0
✅ nextjs-webpack-canary 134 0 19
✅ nextjs-webpack-stable 153 0 0
✅ nitro-stable 128 0 25
✅ nuxt-stable 128 0 25
✅ sveltekit-stable 147 0 6
✅ vite-stable 128 0 25
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 153 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 128 0 25
✅ e2e-local-dev-tanstack-start- 128 0 25
✅ e2e-local-postgres-nest-stable 128 0 25
✅ e2e-local-postgres-tanstack-start- 128 0 25
✅ e2e-local-prod-nest-stable 128 0 25
✅ e2e-local-prod-tanstack-start- 128 0 25
✅ e2e-vercel-prod-tanstack-start 125 0 28

📋 View full workflow run

@NathanColosimo NathanColosimo force-pushed the nathan/start-hooks-04-world-vercel branch from 7e74614 to 4d6e0e8 Compare July 2, 2026 23:45
@NathanColosimo NathanColosimo force-pushed the nathan/start-hooks-03-world-postgres branch from d5b2a73 to 17d3b9c Compare July 2, 2026 23:45
@NathanColosimo NathanColosimo force-pushed the nathan/start-hooks-03-world-postgres branch from 84e800b to 306be29 Compare July 3, 2026 00:06
@NathanColosimo NathanColosimo force-pushed the nathan/start-hooks-04-world-vercel branch from f85a345 to 85f81d2 Compare July 3, 2026 00:06
Advertises queue-first experimentalStartHookAdmission (TTL capped at 30
days, tokens at 255 bytes) and classifies 409 hook_conflict responses
as HookConflictError in the shared errorForResponse, so the v3 and v4
request paths map it identically. Atomic admission itself is
implemented server-side (workflow-server).
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.

1 participant