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 start-hook admission for @workflow/world-vercel.

  • Advertises experimentalStartHookAdmission: { 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 6, 2026 8:17pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jul 6, 2026 8:17pm
example-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-astro-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-express-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-fastify-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-hono-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-nitro-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-nuxt-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workbench-vite-workflow Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Jul 6, 2026 8:17pm
workflow-swc-playground Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workflow-tarballs Ready Ready Preview, Comment Jul 6, 2026 8:17pm
workflow-web Ready Ready Preview, Comment Jul 6, 2026 8:17pm

@changeset-bot

changeset-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b4a2047

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
✅ 💻 Local Development 1617 0 219 1836
✅ 📦 Local Production 1617 0 219 1836
✅ 🐘 Local Postgres 1617 0 219 1836
✅ 🪟 Windows 153 0 0 153
✅ 📋 Other 768 0 150 918
Total 5772 0 807 6579

Details by Category

✅ 💻 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

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: failure
  • Local Dev: success
  • Local Prod: success
  • Local Postgres: success
  • Windows: success

Check the workflow run for details.

@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
Declares 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