Skip to content

[test] workflow-server PR #841 - #3750

Draft
vercel-gh-bot-4[bot] wants to merge 1 commit into
mainfrom
test/server-pr-841
Draft

[test] workflow-server PR #841#3750
vercel-gh-bot-4[bot] wants to merge 1 commit into
mainfrom
test/server-pr-841

Conversation

@vercel-gh-bot-4

Copy link
Copy Markdown

This PR was automatically created to test a workflow-server preview deployment.


This PR will be automatically closed after 24 hours.

@changeset-bot

changeset-bot Bot commented Aug 22, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ed63d25

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@vercel

vercel Bot commented Aug 22, 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, v0 Aug 22, 2026 5:27pm
example-nextjs-workflow-webpack Ready Ready Preview, v0 Aug 22, 2026 5:27pm
example-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-astro-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-express-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-fastify-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-hono-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-nestjs-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-nitro-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-nuxt-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-python-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-sveltekit-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-tanstack-start-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workbench-vite-workflow Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workflow-docs Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workflow-swc-playground Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workflow-tarballs Ready Ready Preview, v0 Aug 22, 2026 5:27pm
workflow-web Ready Ready Preview, v0 Aug 22, 2026 5:27pm

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (188 failed)

astro-node (8 failed):

  • parallelSleepWorkflow | wrun_41M0N8646Y0GRNAP54J1AD1P8X | 🔍 observability
  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works

astro-quickjs (7 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0 | 🔍 observability
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()

example-node (6 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch

example-quickjs (5 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0 | 🔍 observability

express-node (9 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

express-quickjs (6 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries

fastify-node (6 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • AbortController abortParallelWorkflow: abort cancels all parallel steps

fastify-quickjs (8 failed):

  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

hono-node (9 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

hono-quickjs (11 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

nest-node (7 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_41M0N8HM390GGSQX5F6FJ63B0G | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0 | 🔍 observability
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works

nest-quickjs (13 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_41M0N8ECAN0GJ91H4E4ZE2NHWJ | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0N8DB450GMD0EFXPCSS7S2C | 🔍 observability
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_41M0N8HM390GGSQX5F6FJ63B0G | 🔍 observability
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • setAttributes start: initial attributes are seeded on run creation

nextjs-turbopack-node (5 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability

nextjs-turbopack-quickjs (13 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • error handling retry behavior regular Error retries until success
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nextjs-webpack-node (2 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries

nextjs-webpack-quickjs (3 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes

nitro-node (8 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV | 🔍 observability
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries

nitro-quickjs (9 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

nuxt-node (2 failed):

  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream

nuxt-quickjs (7 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0N8DB450GMD0EFXPCSS7S2C | 🔍 observability

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0N845DS0GKTWNFF83952283 | 🔍 observability
  • sleepingWorkflow | wrun_41M0N887T70GWD6TQAZGDP6DXH | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0N8646Y0GRNAP54J1AD1P8X | 🔍 observability
  • nullByteWorkflow | wrun_41M0N868AE0GJ2T80D9VNQRBRY | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0N8M7JX0GV53Y8F33FK47YD | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0N8MC3W0GVCRWC1HWFWY3H1 | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0N8N2Q10GKBASJBHRN8MFDB | 🔍 observability

sveltekit-node (7 failed):

  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • error handling retry behavior regular Error retries until success
  • distributedAbortController - TTL expiration triggers signal | wrun_41M0N8N9VD0GY61Y5HJY1MCFZT | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

sveltekit-quickjs (4 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook

tanstack-start-node (6 failed):

  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_41M0N8HM390GGSQX5F6FJ63B0G | 🔍 observability
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes

tanstack-start-quickjs (3 failed):

  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability

vite-node (4 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_41M0N8HM390GGSQX5F6FJ63B0G | 🔍 observability

vite-quickjs (12 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87 | 🔍 observability
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD | 🔍 observability
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
vercel-http-transport (36 failed)

example (3 failed):

  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X

express (8 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • distributedAbortController - TTL expiration triggers signal | wrun_41M0N8N9VD0GY61Y5HJY1MCFZT

hono (3 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow negative startIndex (reads from end)
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works

nextjs-turbopack (6 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_41M0N87GVM0GRMC2YSAWVNHN87
  • error handling retry behavior regular Error retries until success
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD

nitro (9 failed):

  • error handling retry behavior regular Error retries until success
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0N8AMGX0GRYVCCFW1668REV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

vite (7 failed):

  • sleepingWorkflow | wrun_41M0N887T70GWD6TQAZGDP6DXH
  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
vercel-ws-transport (20 failed)

example (3 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD

express (6 failed):

  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • utf8StreamWorkflow | wrun_41M0N87XTW0GV7BACGE9M35GRC
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0N8EFRK0GZ1RH1G5VHPQMJD
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()

nextjs-turbopack (6 failed):

  • sleepWinsRaceWorkflow | wrun_41M0N866BF0GX1K49HK8BG0H12
  • outputStreamWorkflow no startIndex (reads all chunks)
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns correct index after stream completes
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0N8D6ZR0GXQ0X5YMB93GC0X
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

vite (5 failed):

  • outputStreamWorkflow positive startIndex (skips first chunk)
  • outputStreamWorkflow negative startIndex (reads from end)
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_41M0N8HM390GGSQX5F6FJ63B0G
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0N8MFQZ0GMJ4VVCJKY87JN0
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook

⚠️ Flaky E2E Tests (passed on retry)

These tests failed at least once and passed on a retry. A recurring entry here is a real race worth investigating.

81 flaky tests
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution (nitro)
  • abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals (nextjs-webpack)
  • abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step (nuxt)
  • abortFetchInFlightWorkflow: aborting cancels an in-flight fetch (nest)
  • abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook (nuxt)
  • abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort() (vite)
  • abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook (nextjs-webpack)
  • abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort() (nest)
  • abortParallelWorkflow: abort cancels all parallel steps (nextjs-webpack)
  • abortParallelWorkflow: abort cancels all parallel steps (nuxt)
  • abortReasonWorkflow: abort reason preserved across boundaries (hono)
  • abortReasonWorkflow: abort reason preserved across boundaries (tanstack-start)
  • abortSurvivesReplayWorkflow: controller state consistent across replay (example)
  • abortSurvivesReplayWorkflow: controller state consistent across replay (hono)
  • abortSurvivesReplayWorkflow: controller state consistent across replay (vite)
  • abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries (astro)
  • abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries (nest)
  • abortTimeoutWorkflow: timeout cancels long-running step (hono)
  • abortTimeoutWorkflow: timeout cancels long-running step (nitro)
  • abortTimeoutWorkflow: timeout cancels long-running step (nuxt)
  • abortTimeoutWorkflow: timeout cancels long-running step (tanstack-start)
  • abortTimeoutWorkflow: timeout cancels long-running step (vite)
  • abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works (tanstack-start)
  • basic step error preserves message and stack trace (sveltekit)
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack)
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nuxt)
  • cross-file step error preserves message and function names in stack (sveltekit)
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context (vite)
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE (vite)
  • distributedAbortController - TTL expiration triggers signal (fastify)
  • FatalError fails immediately without retries (astro)
  • FatalError fails immediately without retries (fastify)
  • fire-and-forget: void setAttributes lands without awaiting (nest)
  • getChunks returns same content as reading the stream (example)
  • getChunks returns same content as reading the stream (hono)
  • getTailIndex returns correct index after stream completes (example)
  • getTailIndex returns correct index after stream completes (hono)
  • getTailIndex returns correct index after stream completes (tanstack-start)
  • hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack)
  • hookCleanupTestWorkflow - hook token reuse after workflow completion (sveltekit)
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running (nextjs-webpack)
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running (nitro)
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running (nuxt)
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running (tanstack-start)
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload (nitro)
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered (nextjs-webpack)
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered (vite)
  • instanceMethodStepWorkflow - instance methods with "use step" directive (vite)
  • maxRetries=0 disables retries (fastify)
  • negative startIndex (reads from end) (example)
  • negative startIndex (reads from end) (sveltekit)
  • no startIndex (reads all chunks) (tanstack-start)
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions (nest)
  • parallelSleepWorkflow (fastify)
  • positive startIndex (skips first chunk) (hono)
  • promiseRaceStressTestWorkflow (astro)
  • promiseRaceStressTestWorkflow (fastify)
  • regular Error retries until success (example)
  • regular Error retries until success (nextjs-webpack)
  • regular Error retries until success (tanstack-start)
  • regular Error retries until success (vite)
  • retainedInterleavingWorkflow (hono)
  • retainedInterleavingWorkflow (nest)
  • retainedInterleavingWorkflow (nitro)
  • retainedInterleavingWorkflow (tanstack-start)
  • RetryableError respects custom retryAfter delay (astro)
  • RetryableError respects custom retryAfter delay (fastify)
  • RetryableError respects custom retryAfter delay (sveltekit)
  • RetryableError respects custom retryAfter delay (tanstack-start)
  • setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly (nest)
  • sleepingWorkflow (fastify)
  • sleepingWorkflow (hono)
  • sleepingWorkflow (nest)
  • sleepingWorkflow (sveltekit)
  • sleepingWorkflow (vite)
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (astro)
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (nuxt)
  • sleepWinsRaceWorkflow (astro)
  • sleepWinsRaceWorkflow (hono)
  • sleepWinsRaceWorkflow (nuxt)
  • utf8StreamWorkflow (nest)

🛠 Infra Events (absorbed by the harness)

Platform anomalies the e2e harness detected and worked around (e.g. a run the queue never picked up, replaced by a fresh run). Clustered timestamps indicate a backend blip; a steady drip indicates a platform issue worth escalating.

14 infra events
  • cold-start-warmup · suite warmup (python) · at 17:27:58Z · abandoned wrun_41M0N841460GRKFMVBCAXAH3JA · (+7 more)
  • run-pickup-stall · promiseAllWorkflow (python) · at 17:28:15Z · abandoned wrun_41M0N87P330GPFFVGA5CFART26
  • run-pickup-stall · nullByteWorkflow (python) · at 17:28:15Z · abandoned wrun_41M0N87P3D0GYQQ9YV2WSVS8HY
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 17:28:15Z · abandoned wrun_41M0N87PFR0GNYKNXJ3RFR5TMM
  • run-pickup-stall · sleepingWorkflow (python) · at 17:28:15Z · abandoned wrun_41M0N87P390GNFCRR4VCT3ARA0
  • run-pickup-stall · parallelSleepWorkflow (python) · at 17:28:15Z · abandoned wrun_41M0N87P3A0GTANRBSZP9HSWNB
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 17:28:48Z · abandoned wrun_41M0N88P5F0GX23V2BVWFXTJN6
  • run-pickup-stall · sleepingWorkflow (python) · at 17:29:16Z · abandoned wrun_41M0N89HKT0GQRN215A55G05QD
  • run-pickup-stall · promiseAllWorkflow (python) · at 17:29:16Z · abandoned wrun_41M0N89HJY0GMNQPTMQZKHGEGE
  • run-pickup-stall · nullByteWorkflow (python) · at 17:29:16Z · abandoned wrun_41M0N89HMV0GXRQQBVHT6C9N0N
  • run-pickup-stall · parallelSleepWorkflow (python) · at 17:29:16Z · abandoned wrun_41M0N89HRK0GSSBZDY5YTHWV6F
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 17:30:06Z · abandoned wrun_41M0N89P4H0GRNKK0M39HPQKAJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 17:31:48Z · abandoned wrun_41M0N8CE110GZYA68QZRABMB59
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 17:32:28Z · abandoned wrun_41M0N8C9FH0GGRYGYEC7YD8PQY

E2E Test Summary

Summary
Passed Failed Skipped Total
❌ ▲ Vercel Production 3390 188 742 4320
❌ vercel-http-transport 781 36 143 960
✅ vercel-multi-region 27 0 0 27
❌ vercel-ws-transport 533 20 87 640
Total 4731 244 972 5947
Details by Category

❌ ▲ Vercel Production

App Passed Failed Skipped
❌ astro-node 124 8 28
❌ astro-quickjs 125 7 28
❌ example-node 126 6 28
❌ example-quickjs 127 5 28
❌ express-node 123 9 28
❌ express-quickjs 126 6 28
❌ fastify-node 126 6 28
❌ fastify-quickjs 124 8 28
❌ hono-node 123 9 28
❌ hono-quickjs 121 11 28
❌ nest-node 125 7 28
❌ nest-quickjs 119 13 28
❌ nextjs-turbopack-node 152 5 3
❌ nextjs-turbopack-quickjs 144 13 3
❌ nextjs-webpack-node 155 2 3
❌ nextjs-webpack-quickjs 154 3 3
❌ nitro-node 124 8 28
❌ nitro-quickjs 123 9 28
❌ nuxt-node 130 2 28
❌ nuxt-quickjs 125 7 28
❌ python-node 0 8 152
❌ sveltekit-node 144 7 9
❌ sveltekit-quickjs 147 4 9
❌ tanstack-start-node 126 6 28
❌ tanstack-start-quickjs 129 3 28
❌ vite-node 128 4 28
❌ vite-quickjs 120 12 28

❌ vercel-http-transport

App Passed Failed Skipped
❌ example 129 3 28
❌ express 124 8 28
❌ hono 129 3 28
❌ nextjs-turbopack 151 6 3
❌ nitro 123 9 28
❌ vite 125 7 28

✅ vercel-multi-region

App Passed Failed Skipped
✅ nextjs-turbopack 27 0 0

❌ vercel-ws-transport

App Passed Failed Skipped
❌ example 129 3 28
❌ express 126 6 28
❌ nextjs-turbopack 151 6 3
❌ vite 127 5 28

📋 View full workflow run

@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

🟠 world-sim scenario book — 1 fail of 41 total

fence=per-spec

scenario outcome events virt replay violations
smoke-no-steps completed 3 0ms ok 0
smoke-one-step completed 6 0ms ok 0
hook-at-step-started completed 12 0ms ok 0
hook-at-step-completed completed 12 0ms ok 0
hook-at-hook-created completed 12 0ms ok 0
deadline-hook-wins completed 7 1.0h ok 0
deadline-expires completed 7 1.0h ok 0
long-sleep completed 11 30.0d ok 0
hook-never-arrives stalled 3 0ms skipped 0
step-retries-twice completed 10 2.0s ok 0
parallel-steps completed 9 0ms ok 0
hook-on-execution-state completed 12 0ms ok 0
peek-hook-before-branch completed 12 0ms ok 0
peek-hook-after-branch completed 12 0ms ok 0
peek-hook-at-registration completed 12 0ms ok 0
race-hook-before-probe completed 12 0ms ok 0
race-hook-after-probe completed 12 0ms ok 0
race-duplicate-delivery completed 13 0ms ok 0
attr-hook-before-step completed 11 0ms ok 0
attr-hook-after-step completed 11 0ms ok 0
attr-from-step-body completed 13 0ms ok 0
fork-hook-after-timeout completed 14 1.0m ok 0
fork-hook-before-timeout completed 14 1.0m ok 0
count-hook-after-timeout completed 17 1.0m ok 0
count-hook-before-timeout completed 20 1.0m ok 0
stale-read-step-count-fork completed 20 1.0m ok 0
stale-read-equal-step-counts completed 14 1.0m ok 0
step-vs-step-fork completed 12 0ms ok 0
step-vs-step-fork-fenced completed 12 0ms ok 0
fence-catches-benign-direction completed 12 5ms ok 0
in-flight-before-decision completed 17 1.0m ok 0
in-flight-before-decision-counted completed 17 1.0m ok 0
in-flight-after-decision completed 19 2.0m ok 0
stale-read-step-count-fork-fenced completed 20 1.0m ok 0
fork-hook-wins completed 13 1.0m ok 0
fork-timeout-wins completed 13 1.0m ok 0
unclaimed-payload-under-fork completed 17 1.0m ok 0
claimed-payload-under-fork completed 17 1.0m ok 0
writers-independent-step-bodies completed 12 0ms ok 0
writers-scripted-tempo completed 12 0ms ok 0
cancel-mid-step cancelled 7 0ms skipped 0

Full trace: world-sim.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants