Skip to content

Statically inject workflow world target#2752

Draft
ijjk wants to merge 6 commits into
mainfrom
ijjk/static-world-target
Draft

Statically inject workflow world target#2752
ijjk wants to merge 6 commits into
mainfrom
ijjk/static-world-target

Conversation

@ijjk

@ijjk ijjk commented Jul 2, 2026

Copy link
Copy Markdown
Member

Summary:

  • Statically aliases the configured workflow world package into host bundles.
  • Removes runtime dynamic world resolution from core initialization.
  • Wires the shared alias through builders and framework integrations.

Tests:

  • Focused vitest suite passed.

@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 2, 2026 6:10am
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jul 2, 2026 6:10am
example-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-astro-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-express-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-fastify-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-hono-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-nitro-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-nuxt-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-sveltekit-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workbench-vite-workflow Ready Ready Preview, Comment Jul 2, 2026 6:10am
workflow-docs Ready Ready Preview, Comment, Open in v0 Jul 2, 2026 6:10am
workflow-swc-playground Ready Ready Preview, Comment Jul 2, 2026 6:10am
workflow-tarballs Ready Ready Preview, Comment Jul 2, 2026 6:10am
workflow-web Ready Ready Preview, Comment Jul 2, 2026 6:10am

@changeset-bot

changeset-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6d13826

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

This PR includes changesets to release 21 packages
Name Type
@workflow/astro Patch
@workflow/builders Patch
@workflow/core Patch
@workflow/next Patch
@workflow/nest Patch
@workflow/nitro Patch
@workflow/nuxt Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/utils Patch
@workflow/world-local Patch
@workflow/world-vercel Patch
workflow Patch
@workflow/cli Patch
@workflow/vite Patch
@workflow/vitest Patch
@workflow/web-shared Patch
@workflow/web Patch
@workflow/world-testing Patch
@workflow/errors Patch
@workflow/world-postgres 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

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 0.049s (-14.5% 🟢) 1.006s (-1.3%) 0.956s 10 1.00x
💻 Local Express 0.050s (+3.3%) 1.007s (~) 0.957s 10 1.00x
💻 Local Next.js (Turbopack) 0.055s (-2.2%) 1.005s (~) 0.951s 10 1.11x
🐘 Postgres Nitro 0.074s (+9.4% 🔺) 1.013s (~) 0.940s 10 1.49x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 0.196s (+8.4% 🔺) 1.809s (+11.2% 🔺) 1.614s 10 1.00x
▲ Vercel Express 0.244s (+8.9% 🔺) 1.996s (+11.9% 🔺) 1.752s 10 1.25x
▲ Vercel Next.js (Turbopack) 0.381s (-48.9% 🟢) 2.234s (-9.4% 🟢) 1.852s 10 1.95x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.085s (~) 2.007s (~) 0.922s 10 1.00x
💻 Local Express 1.091s (+1.3%) 2.006s (~) 0.915s 10 1.01x
💻 Local Next.js (Turbopack) 1.092s (~) 2.006s (~) 0.914s 10 1.01x
🐘 Postgres Nitro 1.113s (+1.7%) 2.010s (~) 0.897s 10 1.03x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.354s (-8.5% 🟢) 2.733s (-18.2% 🟢) 1.379s 10 1.00x
▲ Vercel Nitro 1.403s (+1.9%) 2.987s (-9.7% 🟢) 1.583s 10 1.04x
▲ Vercel Next.js (Turbopack) 2.015s (-2.1%) 3.807s (+4.7%) 1.792s 10 1.49x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 10.468s (~) 11.023s (~) 0.555s 3 1.00x
💻 Local Express 10.482s (~) 11.022s (~) 0.540s 3 1.00x
💻 Local Next.js (Turbopack) 10.518s (~) 11.021s (~) 0.503s 3 1.00x
🐘 Postgres Nitro 10.558s (+0.5%) 11.020s (~) 0.462s 3 1.01x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 11.587s (-0.7%) 14.009s (+6.0% 🔺) 2.422s 3 1.00x
▲ Vercel Nitro 11.727s (+1.3%) 13.190s (+3.2%) 1.463s 3 1.01x
▲ Vercel Next.js (Turbopack) 12.988s (+10.4% 🔺) 15.307s (+10.5% 🔺) 2.320s 2 1.12x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 13.637s (-0.9%) 14.026s (~) 0.389s 5 1.00x
💻 Local Express 13.683s (+0.5%) 14.026s (~) 0.344s 5 1.00x
💻 Local Nitro 13.711s (~) 14.028s (~) 0.317s 5 1.01x
🐘 Postgres Nitro 13.906s (+2.1%) 14.225s (+1.5%) 0.318s 5 1.02x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 16.380s (-2.3%) 18.775s (+1.5%) 2.395s 4 1.00x
▲ Vercel Nitro 16.710s (+1.5%) 18.293s (+1.7%) 1.583s 4 1.02x
▲ Vercel Next.js (Turbopack) 17.888s (+2.8%) 19.944s (+3.4%) 2.056s 4 1.09x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 12.263s (~) 13.026s (~) 0.763s 7 1.00x
💻 Local Express 12.266s (+1.4%) 13.025s (~) 0.760s 7 1.00x
💻 Local Next.js (Turbopack) 12.440s (~) 13.169s (+1.1%) 0.729s 7 1.01x
🐘 Postgres Nitro 12.527s (+1.6%) 13.020s (~) 0.493s 7 1.02x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 18.226s (+3.8%) 20.448s (+8.6% 🔺) 2.222s 5 1.00x
▲ Vercel Nitro 18.838s (+1.6%) 20.205s (+0.8%) 1.367s 5 1.03x
▲ Vercel Next.js (Turbopack) 20.439s (+5.0% 🔺) 22.326s (+3.4%) 1.887s 5 1.12x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.212s (+1.8%) 2.010s (~) 0.798s 15 1.00x
💻 Local Nitro 1.374s (-2.1%) 2.006s (~) 0.633s 15 1.13x
💻 Local Express 1.441s (+4.5%) 2.006s (~) 0.565s 15 1.19x
💻 Local Next.js (Turbopack) 1.457s (+1.7%) 2.005s (~) 0.549s 15 1.20x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.055s (-8.5% 🟢) 3.557s (-2.9%) 1.503s 9 1.00x
▲ Vercel Express 2.085s (-1.3%) 4.004s (+12.8% 🔺) 1.919s 8 1.01x
▲ Vercel Next.js (Turbopack) 3.211s (+1.6%) 5.043s (-3.3%) 1.832s 7 1.56x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.446s (+6.9% 🔺) 2.395s (-3.1%) 0.948s 13 1.00x
💻 Local Nitro 2.330s (-3.5%) 3.009s (~) 0.679s 10 1.61x
💻 Local Next.js (Turbopack) 2.392s (~) 3.009s (~) 0.617s 10 1.65x
💻 Local Express 2.494s (+0.6%) 3.109s (~) 0.615s 10 1.72x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.229s (-7.9% 🟢) 3.506s (-6.6% 🟢) 1.277s 9 1.00x
▲ Vercel Express 2.362s (-2.7%) 3.903s (-2.0%) 1.541s 8 1.06x
▲ Vercel Next.js (Turbopack) 4.088s (+19.2% 🔺) 5.890s (+12.1% 🔺) 1.802s 6 1.83x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.649s (+2.7%) 4.015s (-6.7% 🟢) 2.366s 8 1.00x
💻 Local Express 4.407s (+24.6% 🔺) 5.013s (+6.0% 🔺) 0.606s 6 2.67x
💻 Local Next.js (Turbopack) 4.705s (+24.3% 🔺) 5.011s (+2.9%) 0.306s 6 2.85x
💻 Local Nitro 4.805s (+25.2% 🔺) 5.347s (+16.6% 🔺) 0.542s 6 2.91x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.640s (-11.3% 🟢) 4.360s (-2.8%) 1.720s 7 1.00x
▲ Vercel Nitro 2.787s (-10.1% 🟢) 4.729s (~) 1.942s 7 1.06x
▲ Vercel Next.js (Turbopack) 5.385s (+19.6% 🔺) 7.454s (+17.4% 🔺) 2.069s 5 2.04x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.209s (+1.4%) 2.008s (~) 0.799s 15 1.00x
💻 Local Nitro 1.440s (+0.6%) 2.007s (~) 0.566s 15 1.19x
💻 Local Express 1.449s (+1.3%) 2.007s (~) 0.558s 15 1.20x
💻 Local Next.js (Turbopack) 1.457s (~) 2.006s (~) 0.549s 15 1.21x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.973s (-7.0% 🟢) 4.023s (+12.2% 🔺) 2.050s 8 1.00x
▲ Vercel Nitro 2.036s (-17.9% 🟢) 3.545s (-7.9% 🟢) 1.509s 9 1.03x
▲ Vercel Next.js (Turbopack) 3.331s (-1.5%) 5.368s (+1.1%) 2.037s 6 1.69x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.336s (+1.4%) 2.736s (+14.3% 🔺) 1.400s 11 1.00x
💻 Local Next.js (Turbopack) 2.443s (-7.3% 🟢) 3.009s (~) 0.565s 10 1.83x
💻 Local Express 2.507s (+2.1%) 3.008s (~) 0.501s 10 1.88x
💻 Local Nitro 2.776s (+12.0% 🔺) 3.210s (+6.7% 🔺) 0.434s 10 2.08x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.223s (-1.6%) 4.002s (+11.9% 🔺) 1.778s 8 1.00x
▲ Vercel Nitro 2.236s (-4.9%) 3.578s (-5.2% 🟢) 1.342s 9 1.01x
▲ Vercel Next.js (Turbopack) 3.597s (+6.0% 🔺) 5.391s (+1.1%) 1.794s 6 1.62x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.676s (+4.1%) 4.592s (+11.0% 🔺) 2.916s 7 1.00x
💻 Local Next.js (Turbopack) 3.776s (-32.6% 🟢) 5.519s (-8.3% 🟢) 1.743s 6 2.25x
💻 Local Nitro 3.993s (-29.1% 🟢) 5.681s (-5.5% 🟢) 1.688s 6 2.38x
💻 Local Express 5.949s (+8.2% 🔺) 6.614s (+10.0% 🔺) 0.665s 5 3.55x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.616s (-2.1%) 4.291s (~) 1.675s 7 1.00x
▲ Vercel Nitro 2.640s (-8.0% 🟢) 4.471s (+1.4%) 1.831s 7 1.01x
▲ Vercel Next.js (Turbopack) 4.551s (-9.4% 🟢) 6.829s (~) 2.278s 5 1.74x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 0.606s (+1.0%) 1.005s (~) 0.399s 60 1.00x
🐘 Postgres Nitro 0.608s (+4.1%) 1.024s (-1.6%) 0.416s 59 1.00x
💻 Local Express 0.613s (+8.0% 🔺) 1.005s (~) 0.392s 60 1.01x
💻 Local Next.js (Turbopack) 0.659s (+4.5%) 1.022s (+1.6%) 0.363s 59 1.09x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.511s (-2.7%) 4.029s (-1.1%) 1.518s 15 1.00x
▲ Vercel Express 2.537s (-2.2%) 4.120s (+8.9% 🔺) 1.583s 15 1.01x
▲ Vercel Next.js (Turbopack) 3.412s (~) 5.662s (+8.8% 🔺) 2.250s 11 1.36x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.507s (+11.3% 🔺) 2.054s (+2.3%) 0.547s 44 1.00x
💻 Local Nitro 1.543s (+1.4%) 2.029s (+1.1%) 0.485s 45 1.02x
💻 Local Express 1.559s (+5.3% 🔺) 2.007s (-1.1%) 0.447s 45 1.03x
💻 Local Next.js (Turbopack) 1.615s (-2.5%) 2.029s (~) 0.414s 45 1.07x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.979s (~) 7.500s (-0.9%) 1.521s 13 1.00x
▲ Vercel Express 6.016s (-2.9%) 7.894s (+3.9%) 1.877s 12 1.01x
▲ Vercel Next.js (Turbopack) 8.431s (-6.5% 🟢) 10.253s (-7.6% 🟢) 1.822s 9 1.41x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.214s (+18.8% 🔺) 3.825s (+24.0% 🔺) 0.611s 32 1.00x
💻 Local Nitro 3.267s (+0.6%) 4.009s (~) 0.742s 30 1.02x
💻 Local Next.js (Turbopack) 3.416s (-4.8%) 4.010s (-1.6%) 0.593s 30 1.06x
💻 Local Express 3.432s (+8.4% 🔺) 4.009s (+3.3%) 0.577s 30 1.07x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 11.714s (-6.7% 🟢) 13.725s (-2.5%) 2.011s 9 1.00x
▲ Vercel Nitro 11.954s (~) 13.481s (+1.0%) 1.527s 9 1.02x
▲ Vercel Next.js (Turbopack) 16.626s (-5.0% 🟢) 18.775s (-5.3% 🟢) 2.149s 7 1.42x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.251s (+12.9% 🔺) 1.008s (~) 0.757s 60 1.00x
💻 Local Express 0.515s (+5.4% 🔺) 1.005s (~) 0.490s 60 2.05x
💻 Local Nitro 0.523s (+4.9%) 1.022s (+1.7%) 0.499s 59 2.09x
💻 Local Next.js (Turbopack) 0.625s (-4.2%) 1.022s (~) 0.396s 59 2.50x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 1.068s (+8.6% 🔺) 2.468s (+11.4% 🔺) 1.400s 25 1.00x
▲ Vercel Express 1.169s (+10.6% 🔺) 2.911s (+27.8% 🔺) 1.741s 21 1.09x
▲ Vercel Next.js (Turbopack) 2.331s (+16.8% 🔺) 4.037s (+4.6%) 1.706s 15 2.18x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.373s (+11.4% 🔺) 1.030s (+2.4%) 0.657s 88 1.00x
💻 Local Express 2.503s (+1.2%) 3.010s (~) 0.507s 30 6.71x
💻 Local Nitro 2.540s (~) 3.043s (+1.1%) 0.503s 30 6.81x
💻 Local Next.js (Turbopack) 2.566s (-3.7%) 3.009s (~) 0.443s 30 6.88x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.415s (+6.6% 🔺) 3.178s (+28.5% 🔺) 1.764s 29 1.00x
▲ Vercel Nitro 1.489s (+7.5% 🔺) 3.060s (+11.4% 🔺) 1.571s 30 1.05x
▲ Vercel Next.js (Turbopack) 2.946s (+15.3% 🔺) 4.912s (+15.7% 🔺) 1.966s 19 2.08x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.626s (+23.9% 🔺) 1.119s (+8.5% 🔺) 0.493s 108 1.00x
💻 Local Nitro 5.567s (+3.8%) 8.425s (+0.8%) 2.858s 15 8.89x
💻 Local Next.js (Turbopack) 6.020s (~) 8.811s (-1.6%) 2.792s 14 9.61x
💻 Local Express 6.174s (+6.1% 🔺) 8.812s (-0.8%) 2.638s 14 9.86x
🐘 Postgres Express ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.733s (-5.3% 🟢) 3.814s (+4.3%) 2.081s 32 1.00x
▲ Vercel Nitro 1.980s (+9.3% 🔺) 3.752s (+10.5% 🔺) 1.772s 32 1.14x
▲ Vercel Next.js (Turbopack) 4.133s (~) 5.961s (~) 1.828s 21 2.38x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.163s (+1.0%) 2.005s (~) 0.012s (+16.3% 🔺) 2.020s (~) 0.856s 10 1.00x
💻 Local Next.js (Turbopack) 1.166s (+1.5%) 1.958s (~) 0.012s (-8.5% 🟢) 2.019s (~) 0.853s 10 1.00x
💻 Local Nitro 1.175s (+1.4%) 2.005s (~) 0.013s (+8.3% 🔺) 2.021s (~) 0.846s 10 1.01x
🐘 Postgres Nitro 1.175s (+1.6%) 1.997s (~) 0.002s (+38.5% 🔺) 2.012s (~) 0.837s 10 1.01x
🐘 Postgres Express ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.212s (+1.8%) 3.639s (+6.4% 🔺) 2.220s (+18.6% 🔺) 6.391s (+11.9% 🔺) 4.179s 10 1.00x
▲ Vercel Nitro 2.257s (+6.6% 🔺) 3.264s (+2.5%) 2.676s (+44.6% 🔺) 6.393s (+16.7% 🔺) 4.137s 10 1.02x
▲ Vercel Next.js (Turbopack) 3.925s (+15.9% 🔺) 4.689s (+7.4% 🔺) 1.005s (+6.2% 🔺) 6.934s (+5.4% 🔺) 3.009s 10 1.77x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.571s (~) 2.010s (~) 0.014s (+5.2% 🔺) 2.027s (~) 0.456s 30 1.00x
💻 Local Express 1.591s (+0.6%) 2.012s (~) 0.014s (+8.4% 🔺) 2.029s (~) 0.438s 30 1.01x
💻 Local Next.js (Turbopack) 1.607s (~) 1.968s (~) 0.013s (-5.4% 🟢) 2.025s (~) 0.418s 30 1.02x
🐘 Postgres Nitro 1.681s (+7.3% 🔺) 2.006s (~) 0.005s (+11.6% 🔺) 2.031s (~) 0.350s 30 1.07x
🐘 Postgres Express ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.446s (+1.4%) 7.373s (+10.9% 🔺) 0.385s (+70.8% 🔺) 8.308s (+13.0% 🔺) 2.862s 8 1.00x
▲ Vercel Nitro 5.582s (+2.5%) 6.845s (+4.4%) 0.249s (+30.4% 🔺) 7.510s (+4.5%) 1.928s 8 1.02x
▲ Vercel Next.js (Turbopack) 9.992s (+10.0% 🔺) 11.193s (+6.3% 🔺) 0.402s (+46.6% 🔺) 12.391s (+5.4% 🔺) 2.399s 5 1.83x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.957s (+22.7% 🔺) 1.298s (+22.0% 🔺) 0.000s (+107.4% 🔺) 1.336s (+22.8% 🔺) 0.379s 45 1.00x
💻 Local Nitro 1.268s (-7.8% 🟢) 1.831s (-7.6% 🟢) 0.000s (-40.2% 🟢) 1.833s (-7.6% 🟢) 0.566s 33 1.33x
💻 Local Next.js (Turbopack) 1.336s (~) 1.977s (~) 0.000s (+11.1% 🔺) 2.016s (~) 0.680s 30 1.40x
💻 Local Express 1.424s (+3.1%) 1.981s (+1.6%) 0.000s (+12.5% 🔺) 1.984s (+1.6%) 0.561s 31 1.49x
🐘 Postgres Express ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.849s (-1.5%) 4.300s (+5.7% 🔺) 0.000s (-100.0% 🟢) 4.822s (+8.4% 🔺) 1.973s 13 1.00x
▲ Vercel Nitro 3.294s (+8.3% 🔺) 4.510s (+8.1% 🔺) 0.000s (+Infinity% 🔺) 4.965s (+7.7% 🔺) 1.671s 13 1.16x
▲ Vercel Next.js (Turbopack) 5.036s (+3.3%) 5.998s (+4.4%) 0.000s (-100.0% 🟢) 7.063s (+3.0%) 2.027s 9 1.77x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.857s (+1.0%) 2.497s (+4.9%) 0.000s (+Infinity% 🔺) 2.525s (+5.3% 🔺) 0.668s 24 1.00x
💻 Local Nitro 3.314s (+4.3%) 3.839s (+4.5%) 0.001s (+67.0% 🔺) 3.842s (+4.5%) 0.529s 16 1.78x
💻 Local Next.js (Turbopack) 3.358s (-3.4%) 3.992s (~) 0.001s (+71.4% 🔺) 4.033s (~) 0.675s 15 1.81x
💻 Local Express 3.417s (-0.8%) 3.902s (-3.1%) 0.000s (+40.6% 🔺) 3.905s (-3.1%) 0.488s 16 1.84x
🐘 Postgres Express ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 4.586s (+7.9% 🔺) 6.067s (+15.4% 🔺) 0.001s (+Infinity% 🔺) 6.627s (+17.4% 🔺) 2.041s 10 1.00x
▲ Vercel Nitro 4.905s (+18.2% 🔺) 6.106s (+14.9% 🔺) 0.000s (-100.0% 🟢) 6.549s (+14.4% 🔺) 1.644s 10 1.07x
▲ Vercel Next.js (Turbopack) 7.327s (+2.5%) 8.250s (+2.4%) 0.000s (-100.0% 🟢) 9.475s (+4.0%) 2.148s 7 1.60x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 14/21
🐘 Postgres Nitro 21/21
▲ Vercel Express 15/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 💻 Local 15/21
Next.js (Turbopack) 💻 Local 20/21
Nitro 🐘 Postgres 13/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)
  • 🌐 Platformatic: Community world (local development)

📋 View full workflow run

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1442 0 230 1672
❌ 💻 Local Development 837 508 175 1520
✅ 📦 Local Production 1605 0 219 1824
✅ 🐘 Local Postgres 1593 0 231 1824
✅ 🪟 Windows 152 0 0 152
❌ 📋 Other 755 130 179 1064
Total 6384 638 1034 8056

❌ Failed Tests

💻 Local Development (508 failed)

express-stable (127 failed):

  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • deploymentId: 'latest' is a no-op in non-Vercel worlds
  • promiseAllWorkflow | wrun_01KWGQ1A42E3R131ZPDFYPZGV5
  • promiseRaceWorkflow | wrun_01KWGQ1ERHGCDSR4RP64TCM4HY
  • promiseAnyWorkflow | wrun_01KWGQ24RYJF7ST8X9G85SB6RW
  • readableStreamWorkflow | wrun_01KWGQ2CQZJ8D7WQGS1S8AVW7H
  • hookWorkflow | wrun_01KWGQ2P5T7H43QWG0YEP3B3RS
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • parallelStepsThenWebhookWorkflow - no hook_conflict from same-tick replay race | wrun_01KWGQ37AE1042S51EWY8502MQ
  • webhook route with invalid token
  • sleepingWorkflow | wrun_01KWGQ3X1ZDNGM4M4FGC1KMQ83
  • parallelSleepWorkflow | wrun_01KWGQ48HGHS7C33BD32A2PPWH
  • sleepWinsRaceWorkflow | wrun_01KWGQ4BRF8TXJ07730H35W3BB
  • stepWinsRaceWorkflow | wrun_01KWGQ4F7MJNHK142G3KD3GFK2
  • nullByteWorkflow | wrun_01KWGQ4JMNARVGMEDKXN3N1WG2
  • workflowAndStepMetadataWorkflow | wrun_01KWGQ4MR4N847EQ8F0N2AJ04D
  • 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
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns -1 before any chunks are written
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_01KWGQ6K95TMNXPDVZJWRMHP9S
  • utf8StreamWorkflow | wrun_01KWGQ6Y2SE4YF45YT79FKVA2A
  • writableForwardedFromWorkflowWorkflow | wrun_01KWGQ71N60KS5D8TB2CES6WTG
  • writableForwardedFromStepWorkflow | wrun_01KWGQ74V6W48R1M06YDMXBJNP
  • fetchWorkflow | wrun_01KWGQ76QV9HZX8X5TGD4JEBH2
  • promiseRaceStressTestWorkflow | wrun_01KWGQ78RH90RD2W57P4C6MKNG
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling catchability step throw round-trips FatalError with cause chain to workflow catch
  • error handling catchability workflow throw round-trips FatalError + cause through run_failed event
  • error handling catchability workflow throw of a non-Error value round-trips verbatim as cause
  • error handling catchability step throw of a non-Error value preserves it as cause on the wrapping FatalError
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KWGQB10K4PJ896TV0CS0XWHW
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KWGQBC5T55SJDQAJW66Z7A9M
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload | wrun_01KWGQBQC1DAVK06WTSXSN6F82
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution | wrun_01KWGQBSNV0Y7CJ2Q4CRDR03ZB
  • 'hookGetConflictWithParallelStepWorkfl…' - hook.getConflict() does not block step execution | wrun_01KWGQBVWW5SBYRQ4T8954FKEK
  • hookGetConflictThenStepParallelWorkflow - hook.getConflict() continuation step runs alongside other steps | wrun_01KWGQBY3HWYGK78X0K8E1A1TV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_01KWGQCAZ74W2YY1QP53Q424V5
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_01KWGQD3G45XH04MW58K3996N9
  • hookAdoptOwnerResultWorkflow - duplicate adopts the owner result via conflict.returnValue | wrun_01KWGQD72ES73QW737SBH565M2
  • hookSignalOwnerWorkflow - duplicate forwards its payload to the owner via resumeHook | wrun_01KWGQDCFA76S95SZ4RQR8R5X4
  • hookSupersedeOwnerWorkflow - duplicate cancels the owner and claims the released token | wrun_01KWGQDFYBZGC0TFE424WKGG8C
  • resume-or-start route pattern - resumeHook retried after start() reaches the new run | wrun_01KWGQDQFT5DRYN79N23EERGKD
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KWGQDXXRAPF8KFR0PYPMM0A2
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KWGQECMYV8QWPMQWYEN8MEN5
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KWGQER67Z8DCV7T2WCY5H08K
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KWGQEX7PNWT99H3AVER9T9GD
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KWGQEZEJAGVPNKHVZVDDV6C9
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KWGQF8QFAC0ARH5ET0XQH10W
  • startFromWorkflow - calling start() directly inside a workflow function with hook communication | wrun_01KWGQFHSFQNETFB0TZ0YC74BM
  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KWGQFKWAYAF9R8QH4C0YTQR7
  • health check endpoint (HTTP) - workflow endpoint responds to __health query parameter
  • health check (queue-based) - workflow endpoint responds to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KWGQG0E2TDN8TPC9P0G9ASX6
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KWGQG5F60HTY9RSAJ8A0JB9A
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KWGQGAR1REHDRAHTJXSJDTFR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KWGQGG2Q40S1THR4B854869Z
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KWGQGN68NKCN3JAJR4NVXKWW
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KWGQGTKT2SVS7Q7QXKAWSQ48
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KWGQGZNV0ACRWKSQ9REC5NKC
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KWGQH98GM3Z88MNDZG74VGJP
  • errorSubclassRoundTripWorkflow - first-class Error subclasses survive every serialization boundary | wrun_01KWGQHFH4Q3HWKTZ7JB8HRAYE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KWGQHHY6XZRR4BT6CP13S89K
  • cancelRun - cancelling a running workflow | wrun_01KWGQHQ927MN5541SPR8XY2WG
  • cancelRun via CLI - cancelling a running workflow | wrun_01KWGQHVYJK0YRR0EB7CGJMHC7
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KWGQJ38HVDF0B04HBD10WWFR
  • hookWithSleepFinalStepWorkflow - step only on final payload | wrun_01KWGQJEMXTD72SXPJPEXQE8CG
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KWGQJPP908GME8TAWJE5NQSV
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KWGQJZZHQ9E07CX6N7AD9X38
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortFromStepWorkflow: step abort cancels an in-flight sibling step
  • AbortController abortAlreadyAbortedWorkflow: pre-aborted signal seen by step
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • AbortController abortAfterCompletionWorkflow: abort after step completes is a no-op
  • AbortController abortViaHookWorkflow: external hook triggers abort on in-flight step
  • AbortController abortExternalSignalWorkflow: signal passed as workflow input
  • AbortController abortExternalSignalInFlightWorkflow: external abort fires mid-flight, propagates to nested steps
  • AbortController abortAnyInWorkflowWorkflow: AbortSignal.any composes signals inside the workflow VM
  • AbortController abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortReasonTypesWorkflow: various abort reason types propagate correctly
  • AbortController abortFetchUncaughtWorkflow: uncaught fetch AbortError is FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • AbortController abortDeterministicBranchWorkflow: if-check takes same path on first-run and replay
  • AbortController abortListenerWorkflow: signal.addEventListener fires on the deserialized step signal
  • AbortController abortThrowIfAbortedMidFlightWorkflow: throwIfAborted in a polling loop bails when abort fires
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KWGQQ2GZEJJ4G4Z6JHBSQBQ2
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KWGQQ4NF45VY7MMQW3ERVCYG
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KWGQQ6PQRP6W8EVMNJPJ1PAM
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KWGQQ8SRZKY6FH5TW5CE9ATK
  • distributedAbortController - manual abort triggers signal | wrun_01KWGQQE4EJFAWVHQD3HFV0Y32
  • distributedAbortController - TTL expiration triggers signal | wrun_01KWGQQGV0D7ZWK5KWXK4PK1T3
  • distributedAbortController - reconnect to existing controller | wrun_01KWGQQNENFJ1CC74BGPFT45CR
  • experimental_setAttributes start: initial attributes are seeded on run creation
  • experimental_setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • experimental_setAttributes experimentalSetAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • experimental_setAttributes experimentalSetAttributesInsideStepWorkflow: step-body calls append attributed native events
  • experimental_setAttributes fire-and-forget: void experimental_setAttributes lands without awaiting
  • experimental_setAttributes Promise.all of disjoint-key writes: every key lands
  • experimental_setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • experimental_setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
  • experimental_setAttributes start: invalid initial attributes are rejected before a run is created

fastify-stable (127 failed):

  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • deploymentId: 'latest' is a no-op in non-Vercel worlds
  • promiseAllWorkflow | wrun_01KWGQ1A42E3R131ZPDFYPZGV5
  • promiseRaceWorkflow | wrun_01KWGQ1ERHGCDSR4RP64TCM4HY
  • promiseAnyWorkflow | wrun_01KWGQ24RYJF7ST8X9G85SB6RW
  • readableStreamWorkflow | wrun_01KWGQ2CQZJ8D7WQGS1S8AVW7H
  • hookWorkflow | wrun_01KWGQ2P5T7H43QWG0YEP3B3RS
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • parallelStepsThenWebhookWorkflow - no hook_conflict from same-tick replay race | wrun_01KWGQ37AE1042S51EWY8502MQ
  • webhook route with invalid token
  • sleepingWorkflow | wrun_01KWGQ3X1ZDNGM4M4FGC1KMQ83
  • parallelSleepWorkflow | wrun_01KWGQ48HGHS7C33BD32A2PPWH
  • sleepWinsRaceWorkflow | wrun_01KWGQ4BRF8TXJ07730H35W3BB
  • stepWinsRaceWorkflow | wrun_01KWGQ4F7MJNHK142G3KD3GFK2
  • nullByteWorkflow | wrun_01KWGQ4JMNARVGMEDKXN3N1WG2
  • workflowAndStepMetadataWorkflow | wrun_01KWGQ4MR4N847EQ8F0N2AJ04D
  • 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
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns -1 before any chunks are written
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_01KWGQ6K95TMNXPDVZJWRMHP9S
  • utf8StreamWorkflow | wrun_01KWGQ6Y2SE4YF45YT79FKVA2A
  • writableForwardedFromWorkflowWorkflow | wrun_01KWGQ71N60KS5D8TB2CES6WTG
  • writableForwardedFromStepWorkflow | wrun_01KWGQ74V6W48R1M06YDMXBJNP
  • fetchWorkflow | wrun_01KWGQ76QV9HZX8X5TGD4JEBH2
  • promiseRaceStressTestWorkflow | wrun_01KWGQ78RH90RD2W57P4C6MKNG
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling catchability step throw round-trips FatalError with cause chain to workflow catch
  • error handling catchability workflow throw round-trips FatalError + cause through run_failed event
  • error handling catchability workflow throw of a non-Error value round-trips verbatim as cause
  • error handling catchability step throw of a non-Error value preserves it as cause on the wrapping FatalError
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KWGQB10K4PJ896TV0CS0XWHW
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KWGQBC5T55SJDQAJW66Z7A9M
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload | wrun_01KWGQBQC1DAVK06WTSXSN6F82
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution | wrun_01KWGQBSNV0Y7CJ2Q4CRDR03ZB
  • 'hookGetConflictWithParallelStepWorkfl…' - hook.getConflict() does not block step execution | wrun_01KWGQBVWW5SBYRQ4T8954FKEK
  • hookGetConflictThenStepParallelWorkflow - hook.getConflict() continuation step runs alongside other steps | wrun_01KWGQBY3HWYGK78X0K8E1A1TV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_01KWGQCAZ74W2YY1QP53Q424V5
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_01KWGQD3G45XH04MW58K3996N9
  • hookAdoptOwnerResultWorkflow - duplicate adopts the owner result via conflict.returnValue | wrun_01KWGQD72ES73QW737SBH565M2
  • hookSignalOwnerWorkflow - duplicate forwards its payload to the owner via resumeHook | wrun_01KWGQDCFA76S95SZ4RQR8R5X4
  • hookSupersedeOwnerWorkflow - duplicate cancels the owner and claims the released token | wrun_01KWGQDFYBZGC0TFE424WKGG8C
  • resume-or-start route pattern - resumeHook retried after start() reaches the new run | wrun_01KWGQDQFT5DRYN79N23EERGKD
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KWGQDXXRAPF8KFR0PYPMM0A2
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KWGQECMYV8QWPMQWYEN8MEN5
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KWGQER67Z8DCV7T2WCY5H08K
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KWGQEX7PNWT99H3AVER9T9GD
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KWGQEZEJAGVPNKHVZVDDV6C9
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KWGQF8QFAC0ARH5ET0XQH10W
  • startFromWorkflow - calling start() directly inside a workflow function with hook communication | wrun_01KWGQFHSFQNETFB0TZ0YC74BM
  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KWGQFKWAYAF9R8QH4C0YTQR7
  • health check endpoint (HTTP) - workflow endpoint responds to __health query parameter
  • health check (queue-based) - workflow endpoint responds to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KWGQG0E2TDN8TPC9P0G9ASX6
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KWGQG5F60HTY9RSAJ8A0JB9A
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KWGQGAR1REHDRAHTJXSJDTFR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KWGQGG2Q40S1THR4B854869Z
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KWGQGN68NKCN3JAJR4NVXKWW
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KWGQGTKT2SVS7Q7QXKAWSQ48
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KWGQGZNV0ACRWKSQ9REC5NKC
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KWGQH98GM3Z88MNDZG74VGJP
  • errorSubclassRoundTripWorkflow - first-class Error subclasses survive every serialization boundary | wrun_01KWGQHFH4Q3HWKTZ7JB8HRAYE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KWGQHHY6XZRR4BT6CP13S89K
  • cancelRun - cancelling a running workflow | wrun_01KWGQHQ927MN5541SPR8XY2WG
  • cancelRun via CLI - cancelling a running workflow | wrun_01KWGQHVYJK0YRR0EB7CGJMHC7
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KWGQJ38HVDF0B04HBD10WWFR
  • hookWithSleepFinalStepWorkflow - step only on final payload | wrun_01KWGQJEMXTD72SXPJPEXQE8CG
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KWGQJPP908GME8TAWJE5NQSV
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KWGQJZZHQ9E07CX6N7AD9X38
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortFromStepWorkflow: step abort cancels an in-flight sibling step
  • AbortController abortAlreadyAbortedWorkflow: pre-aborted signal seen by step
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • AbortController abortAfterCompletionWorkflow: abort after step completes is a no-op
  • AbortController abortViaHookWorkflow: external hook triggers abort on in-flight step
  • AbortController abortExternalSignalWorkflow: signal passed as workflow input
  • AbortController abortExternalSignalInFlightWorkflow: external abort fires mid-flight, propagates to nested steps
  • AbortController abortAnyInWorkflowWorkflow: AbortSignal.any composes signals inside the workflow VM
  • AbortController abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortReasonTypesWorkflow: various abort reason types propagate correctly
  • AbortController abortFetchUncaughtWorkflow: uncaught fetch AbortError is FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • AbortController abortDeterministicBranchWorkflow: if-check takes same path on first-run and replay
  • AbortController abortListenerWorkflow: signal.addEventListener fires on the deserialized step signal
  • AbortController abortThrowIfAbortedMidFlightWorkflow: throwIfAborted in a polling loop bails when abort fires
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KWGQQ2GZEJJ4G4Z6JHBSQBQ2
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KWGQQ4NF45VY7MMQW3ERVCYG
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KWGQQ6PQRP6W8EVMNJPJ1PAM
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KWGQQ8SRZKY6FH5TW5CE9ATK
  • distributedAbortController - manual abort triggers signal | wrun_01KWGQQE4EJFAWVHQD3HFV0Y32
  • distributedAbortController - TTL expiration triggers signal | wrun_01KWGQQGV0D7ZWK5KWXK4PK1T3
  • distributedAbortController - reconnect to existing controller | wrun_01KWGQQNENFJ1CC74BGPFT45CR
  • experimental_setAttributes start: initial attributes are seeded on run creation
  • experimental_setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • experimental_setAttributes experimentalSetAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • experimental_setAttributes experimentalSetAttributesInsideStepWorkflow: step-body calls append attributed native events
  • experimental_setAttributes fire-and-forget: void experimental_setAttributes lands without awaiting
  • experimental_setAttributes Promise.all of disjoint-key writes: every key lands
  • experimental_setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • experimental_setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
  • experimental_setAttributes start: invalid initial attributes are rejected before a run is created

hono-stable (127 failed):

  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • deploymentId: 'latest' is a no-op in non-Vercel worlds
  • promiseAllWorkflow | wrun_01KWGQ1A42E3R131ZPDFYPZGV5
  • promiseRaceWorkflow | wrun_01KWGQ1ERHGCDSR4RP64TCM4HY
  • promiseAnyWorkflow | wrun_01KWGQ24RYJF7ST8X9G85SB6RW
  • readableStreamWorkflow | wrun_01KWGQ2CQZJ8D7WQGS1S8AVW7H
  • hookWorkflow | wrun_01KWGQ2P5T7H43QWG0YEP3B3RS
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • parallelStepsThenWebhookWorkflow - no hook_conflict from same-tick replay race | wrun_01KWGQ37AE1042S51EWY8502MQ
  • webhook route with invalid token
  • sleepingWorkflow | wrun_01KWGQ3X1ZDNGM4M4FGC1KMQ83
  • parallelSleepWorkflow | wrun_01KWGQ48HGHS7C33BD32A2PPWH
  • sleepWinsRaceWorkflow | wrun_01KWGQ4BRF8TXJ07730H35W3BB
  • stepWinsRaceWorkflow | wrun_01KWGQ4F7MJNHK142G3KD3GFK2
  • nullByteWorkflow | wrun_01KWGQ4JMNARVGMEDKXN3N1WG2
  • workflowAndStepMetadataWorkflow | wrun_01KWGQ4MR4N847EQ8F0N2AJ04D
  • 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
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns -1 before any chunks are written
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_01KWGQ6K95TMNXPDVZJWRMHP9S
  • utf8StreamWorkflow | wrun_01KWGQ6Y2SE4YF45YT79FKVA2A
  • writableForwardedFromWorkflowWorkflow | wrun_01KWGQ71N60KS5D8TB2CES6WTG
  • writableForwardedFromStepWorkflow | wrun_01KWGQ74V6W48R1M06YDMXBJNP
  • fetchWorkflow | wrun_01KWGQ76QV9HZX8X5TGD4JEBH2
  • promiseRaceStressTestWorkflow | wrun_01KWGQ78RH90RD2W57P4C6MKNG
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling catchability step throw round-trips FatalError with cause chain to workflow catch
  • error handling catchability workflow throw round-trips FatalError + cause through run_failed event
  • error handling catchability workflow throw of a non-Error value round-trips verbatim as cause
  • error handling catchability step throw of a non-Error value preserves it as cause on the wrapping FatalError
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KWGQB10K4PJ896TV0CS0XWHW
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KWGQBC5T55SJDQAJW66Z7A9M
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload | wrun_01KWGQBQC1DAVK06WTSXSN6F82
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution | wrun_01KWGQBSNV0Y7CJ2Q4CRDR03ZB
  • 'hookGetConflictWithParallelStepWorkfl…' - hook.getConflict() does not block step execution | wrun_01KWGQBVWW5SBYRQ4T8954FKEK
  • hookGetConflictThenStepParallelWorkflow - hook.getConflict() continuation step runs alongside other steps | wrun_01KWGQBY3HWYGK78X0K8E1A1TV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_01KWGQCAZ74W2YY1QP53Q424V5
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_01KWGQD3G45XH04MW58K3996N9
  • hookAdoptOwnerResultWorkflow - duplicate adopts the owner result via conflict.returnValue | wrun_01KWGQD72ES73QW737SBH565M2
  • hookSignalOwnerWorkflow - duplicate forwards its payload to the owner via resumeHook | wrun_01KWGQDCFA76S95SZ4RQR8R5X4
  • hookSupersedeOwnerWorkflow - duplicate cancels the owner and claims the released token | wrun_01KWGQDFYBZGC0TFE424WKGG8C
  • resume-or-start route pattern - resumeHook retried after start() reaches the new run | wrun_01KWGQDQFT5DRYN79N23EERGKD
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KWGQDXXRAPF8KFR0PYPMM0A2
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KWGQECMYV8QWPMQWYEN8MEN5
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KWGQER67Z8DCV7T2WCY5H08K
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KWGQEX7PNWT99H3AVER9T9GD
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KWGQEZEJAGVPNKHVZVDDV6C9
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KWGQF8QFAC0ARH5ET0XQH10W
  • startFromWorkflow - calling start() directly inside a workflow function with hook communication | wrun_01KWGQFHSFQNETFB0TZ0YC74BM
  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KWGQFKWAYAF9R8QH4C0YTQR7
  • health check endpoint (HTTP) - workflow endpoint responds to __health query parameter
  • health check (queue-based) - workflow endpoint responds to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KWGQG0E2TDN8TPC9P0G9ASX6
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KWGQG5F60HTY9RSAJ8A0JB9A
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KWGQGAR1REHDRAHTJXSJDTFR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KWGQGG2Q40S1THR4B854869Z
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KWGQGN68NKCN3JAJR4NVXKWW
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KWGQGTKT2SVS7Q7QXKAWSQ48
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KWGQGZNV0ACRWKSQ9REC5NKC
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KWGQH98GM3Z88MNDZG74VGJP
  • errorSubclassRoundTripWorkflow - first-class Error subclasses survive every serialization boundary | wrun_01KWGQHFH4Q3HWKTZ7JB8HRAYE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KWGQHHY6XZRR4BT6CP13S89K
  • cancelRun - cancelling a running workflow | wrun_01KWGQHQ927MN5541SPR8XY2WG
  • cancelRun via CLI - cancelling a running workflow | wrun_01KWGQHVYJK0YRR0EB7CGJMHC7
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KWGQJ38HVDF0B04HBD10WWFR
  • hookWithSleepFinalStepWorkflow - step only on final payload | wrun_01KWGQJEMXTD72SXPJPEXQE8CG
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KWGQJPP908GME8TAWJE5NQSV
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KWGQJZZHQ9E07CX6N7AD9X38
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortFromStepWorkflow: step abort cancels an in-flight sibling step
  • AbortController abortAlreadyAbortedWorkflow: pre-aborted signal seen by step
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • AbortController abortAfterCompletionWorkflow: abort after step completes is a no-op
  • AbortController abortViaHookWorkflow: external hook triggers abort on in-flight step
  • AbortController abortExternalSignalWorkflow: signal passed as workflow input
  • AbortController abortExternalSignalInFlightWorkflow: external abort fires mid-flight, propagates to nested steps
  • AbortController abortAnyInWorkflowWorkflow: AbortSignal.any composes signals inside the workflow VM
  • AbortController abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortReasonTypesWorkflow: various abort reason types propagate correctly
  • AbortController abortFetchUncaughtWorkflow: uncaught fetch AbortError is FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • AbortController abortDeterministicBranchWorkflow: if-check takes same path on first-run and replay
  • AbortController abortListenerWorkflow: signal.addEventListener fires on the deserialized step signal
  • AbortController abortThrowIfAbortedMidFlightWorkflow: throwIfAborted in a polling loop bails when abort fires
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KWGQQ2GZEJJ4G4Z6JHBSQBQ2
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KWGQQ4NF45VY7MMQW3ERVCYG
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KWGQQ6PQRP6W8EVMNJPJ1PAM
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KWGQQ8SRZKY6FH5TW5CE9ATK
  • distributedAbortController - manual abort triggers signal | wrun_01KWGQQE4EJFAWVHQD3HFV0Y32
  • distributedAbortController - TTL expiration triggers signal | wrun_01KWGQQGV0D7ZWK5KWXK4PK1T3
  • distributedAbortController - reconnect to existing controller | wrun_01KWGQQNENFJ1CC74BGPFT45CR
  • experimental_setAttributes start: initial attributes are seeded on run creation
  • experimental_setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • experimental_setAttributes experimentalSetAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • experimental_setAttributes experimentalSetAttributesInsideStepWorkflow: step-body calls append attributed native events
  • experimental_setAttributes fire-and-forget: void experimental_setAttributes lands without awaiting
  • experimental_setAttributes Promise.all of disjoint-key writes: every key lands
  • experimental_setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • experimental_setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
  • experimental_setAttributes start: invalid initial attributes are rejected before a run is created

nitro-stable (127 failed):

  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • deploymentId: 'latest' is a no-op in non-Vercel worlds
  • promiseAllWorkflow | wrun_01KWGQ1A42E3R131ZPDFYPZGV5
  • promiseRaceWorkflow | wrun_01KWGQ1ERHGCDSR4RP64TCM4HY
  • promiseAnyWorkflow | wrun_01KWGQ24RYJF7ST8X9G85SB6RW
  • readableStreamWorkflow | wrun_01KWGQ2CQZJ8D7WQGS1S8AVW7H
  • hookWorkflow | wrun_01KWGQ2P5T7H43QWG0YEP3B3RS
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • parallelStepsThenWebhookWorkflow - no hook_conflict from same-tick replay race | wrun_01KWGQ37AE1042S51EWY8502MQ
  • webhook route with invalid token
  • sleepingWorkflow | wrun_01KWGQ3X1ZDNGM4M4FGC1KMQ83
  • parallelSleepWorkflow | wrun_01KWGQ48HGHS7C33BD32A2PPWH
  • sleepWinsRaceWorkflow | wrun_01KWGQ4BRF8TXJ07730H35W3BB
  • stepWinsRaceWorkflow | wrun_01KWGQ4F7MJNHK142G3KD3GFK2
  • nullByteWorkflow | wrun_01KWGQ4JMNARVGMEDKXN3N1WG2
  • workflowAndStepMetadataWorkflow | wrun_01KWGQ4MR4N847EQ8F0N2AJ04D
  • 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
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns -1 before any chunks are written
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_01KWGQ6K95TMNXPDVZJWRMHP9S
  • utf8StreamWorkflow | wrun_01KWGQ6Y2SE4YF45YT79FKVA2A
  • writableForwardedFromWorkflowWorkflow | wrun_01KWGQ71N60KS5D8TB2CES6WTG
  • writableForwardedFromStepWorkflow | wrun_01KWGQ74V6W48R1M06YDMXBJNP
  • fetchWorkflow | wrun_01KWGQ76QV9HZX8X5TGD4JEBH2
  • promiseRaceStressTestWorkflow | wrun_01KWGQ78RH90RD2W57P4C6MKNG
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling catchability step throw round-trips FatalError with cause chain to workflow catch
  • error handling catchability workflow throw round-trips FatalError + cause through run_failed event
  • error handling catchability workflow throw of a non-Error value round-trips verbatim as cause
  • error handling catchability step throw of a non-Error value preserves it as cause on the wrapping FatalError
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KWGQB10K4PJ896TV0CS0XWHW
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KWGQBC5T55SJDQAJW66Z7A9M
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload | wrun_01KWGQBQC1DAVK06WTSXSN6F82
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution | wrun_01KWGQBSNV0Y7CJ2Q4CRDR03ZB
  • 'hookGetConflictWithParallelStepWorkfl…' - hook.getConflict() does not block step execution | wrun_01KWGQBVWW5SBYRQ4T8954FKEK
  • hookGetConflictThenStepParallelWorkflow - hook.getConflict() continuation step runs alongside other steps | wrun_01KWGQBY3HWYGK78X0K8E1A1TV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_01KWGQCAZ74W2YY1QP53Q424V5
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_01KWGQD3G45XH04MW58K3996N9
  • hookAdoptOwnerResultWorkflow - duplicate adopts the owner result via conflict.returnValue | wrun_01KWGQD72ES73QW737SBH565M2
  • hookSignalOwnerWorkflow - duplicate forwards its payload to the owner via resumeHook | wrun_01KWGQDCFA76S95SZ4RQR8R5X4
  • hookSupersedeOwnerWorkflow - duplicate cancels the owner and claims the released token | wrun_01KWGQDFYBZGC0TFE424WKGG8C
  • resume-or-start route pattern - resumeHook retried after start() reaches the new run | wrun_01KWGQDQFT5DRYN79N23EERGKD
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KWGQDXXRAPF8KFR0PYPMM0A2
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KWGQECMYV8QWPMQWYEN8MEN5
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KWGQER67Z8DCV7T2WCY5H08K
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KWGQEX7PNWT99H3AVER9T9GD
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KWGQEZEJAGVPNKHVZVDDV6C9
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KWGQF8QFAC0ARH5ET0XQH10W
  • startFromWorkflow - calling start() directly inside a workflow function with hook communication | wrun_01KWGQFHSFQNETFB0TZ0YC74BM
  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KWGQFKWAYAF9R8QH4C0YTQR7
  • health check endpoint (HTTP) - workflow endpoint responds to __health query parameter
  • health check (queue-based) - workflow endpoint responds to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KWGQG0E2TDN8TPC9P0G9ASX6
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KWGQG5F60HTY9RSAJ8A0JB9A
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KWGQGAR1REHDRAHTJXSJDTFR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KWGQGG2Q40S1THR4B854869Z
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KWGQGN68NKCN3JAJR4NVXKWW
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KWGQGTKT2SVS7Q7QXKAWSQ48
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KWGQGZNV0ACRWKSQ9REC5NKC
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KWGQH98GM3Z88MNDZG74VGJP
  • errorSubclassRoundTripWorkflow - first-class Error subclasses survive every serialization boundary | wrun_01KWGQHFH4Q3HWKTZ7JB8HRAYE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KWGQHHY6XZRR4BT6CP13S89K
  • cancelRun - cancelling a running workflow | wrun_01KWGQHQ927MN5541SPR8XY2WG
  • cancelRun via CLI - cancelling a running workflow | wrun_01KWGQHVYJK0YRR0EB7CGJMHC7
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KWGQJ38HVDF0B04HBD10WWFR
  • hookWithSleepFinalStepWorkflow - step only on final payload | wrun_01KWGQJEMXTD72SXPJPEXQE8CG
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KWGQJPP908GME8TAWJE5NQSV
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KWGQJZZHQ9E07CX6N7AD9X38
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortFromStepWorkflow: step abort cancels an in-flight sibling step
  • AbortController abortAlreadyAbortedWorkflow: pre-aborted signal seen by step
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • AbortController abortAfterCompletionWorkflow: abort after step completes is a no-op
  • AbortController abortViaHookWorkflow: external hook triggers abort on in-flight step
  • AbortController abortExternalSignalWorkflow: signal passed as workflow input
  • AbortController abortExternalSignalInFlightWorkflow: external abort fires mid-flight, propagates to nested steps
  • AbortController abortAnyInWorkflowWorkflow: AbortSignal.any composes signals inside the workflow VM
  • AbortController abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortReasonTypesWorkflow: various abort reason types propagate correctly
  • AbortController abortFetchUncaughtWorkflow: uncaught fetch AbortError is FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • AbortController abortDeterministicBranchWorkflow: if-check takes same path on first-run and replay
  • AbortController abortListenerWorkflow: signal.addEventListener fires on the deserialized step signal
  • AbortController abortThrowIfAbortedMidFlightWorkflow: throwIfAborted in a polling loop bails when abort fires
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KWGQQ2GZEJJ4G4Z6JHBSQBQ2
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KWGQQ4NF45VY7MMQW3ERVCYG
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KWGQQ6PQRP6W8EVMNJPJ1PAM
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KWGQQ8SRZKY6FH5TW5CE9ATK
  • distributedAbortController - manual abort triggers signal | wrun_01KWGQQE4EJFAWVHQD3HFV0Y32
  • distributedAbortController - TTL expiration triggers signal | wrun_01KWGQQGV0D7ZWK5KWXK4PK1T3
  • distributedAbortController - reconnect to existing controller | wrun_01KWGQQNENFJ1CC74BGPFT45CR
  • experimental_setAttributes start: initial attributes are seeded on run creation
  • experimental_setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • experimental_setAttributes experimentalSetAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • experimental_setAttributes experimentalSetAttributesInsideStepWorkflow: step-body calls append attributed native events
  • experimental_setAttributes fire-and-forget: void experimental_setAttributes lands without awaiting
  • experimental_setAttributes Promise.all of disjoint-key writes: every key lands
  • experimental_setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • experimental_setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
  • experimental_setAttributes start: invalid initial attributes are rejected before a run is created
📋 Other (130 failed)

e2e-local-dev-tanstack-start- (127 failed):

  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • addTenWorkflow | wrun_01KWGQ13MJXVYY0GDYNV5W5S7A
  • deploymentId: 'latest' is a no-op in non-Vercel worlds
  • promiseAllWorkflow | wrun_01KWGQ1A42E3R131ZPDFYPZGV5
  • promiseRaceWorkflow | wrun_01KWGQ1ERHGCDSR4RP64TCM4HY
  • promiseAnyWorkflow | wrun_01KWGQ24RYJF7ST8X9G85SB6RW
  • readableStreamWorkflow | wrun_01KWGQ2CQZJ8D7WQGS1S8AVW7H
  • hookWorkflow | wrun_01KWGQ2P5T7H43QWG0YEP3B3RS
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • parallelStepsThenWebhookWorkflow - no hook_conflict from same-tick replay race | wrun_01KWGQ37AE1042S51EWY8502MQ
  • webhook route with invalid token
  • sleepingWorkflow | wrun_01KWGQ3X1ZDNGM4M4FGC1KMQ83
  • parallelSleepWorkflow | wrun_01KWGQ48HGHS7C33BD32A2PPWH
  • sleepWinsRaceWorkflow | wrun_01KWGQ4BRF8TXJ07730H35W3BB
  • stepWinsRaceWorkflow | wrun_01KWGQ4F7MJNHK142G3KD3GFK2
  • nullByteWorkflow | wrun_01KWGQ4JMNARVGMEDKXN3N1WG2
  • workflowAndStepMetadataWorkflow | wrun_01KWGQ4MR4N847EQ8F0N2AJ04D
  • 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
  • outputStreamWorkflow - getTailIndex and getChunks getTailIndex returns -1 before any chunks are written
  • outputStreamWorkflow - getTailIndex and getChunks getChunks returns same content as reading the stream
  • outputStreamInsideStepWorkflow - getWritable() called inside step functions | wrun_01KWGQ6K95TMNXPDVZJWRMHP9S
  • utf8StreamWorkflow | wrun_01KWGQ6Y2SE4YF45YT79FKVA2A
  • writableForwardedFromWorkflowWorkflow | wrun_01KWGQ71N60KS5D8TB2CES6WTG
  • writableForwardedFromStepWorkflow | wrun_01KWGQ74V6W48R1M06YDMXBJNP
  • fetchWorkflow | wrun_01KWGQ76QV9HZX8X5TGD4JEBH2
  • promiseRaceStressTestWorkflow | wrun_01KWGQ78RH90RD2W57P4C6MKNG
  • error handling error propagation workflow errors nested function calls preserve message and stack trace
  • error handling error propagation workflow errors cross-file imports preserve message and stack trace
  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack
  • error handling retry behavior regular Error retries until success
  • error handling retry behavior FatalError fails immediately without retries
  • error handling retry behavior RetryableError respects custom retryAfter delay
  • error handling retry behavior maxRetries=0 disables retries
  • error handling catchability FatalError can be caught and detected with FatalError.is()
  • error handling catchability step throw round-trips FatalError with cause chain to workflow catch
  • error handling catchability workflow throw round-trips FatalError + cause through run_failed event
  • error handling catchability workflow throw of a non-Error value round-trips verbatim as cause
  • error handling catchability step throw of a non-Error value preserves it as cause on the wrapping FatalError
  • error handling not registered WorkflowNotRegisteredError fails the run when workflow does not exist
  • error handling not registered StepNotRegisteredError fails the step but workflow can catch it
  • error handling not registered StepNotRegisteredError fails the run when not caught in workflow
  • stepDirectCallWorkflow - calling step functions directly outside workflow context
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KWGQB10K4PJ896TV0CS0XWHW
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KWGQBC5T55SJDQAJW66Z7A9M
  • hookGetConflictWorkflow - awaiting hook.getConflict() registers hook without payload | wrun_01KWGQBQC1DAVK06WTSXSN6F82
  • 'hookGetConflictWithPriorStepWorkflow' - hook.getConflict() does not block step execution | wrun_01KWGQBSNV0Y7CJ2Q4CRDR03ZB
  • 'hookGetConflictWithParallelStepWorkfl…' - hook.getConflict() does not block step execution | wrun_01KWGQBVWW5SBYRQ4T8954FKEK
  • hookGetConflictThenStepParallelWorkflow - hook.getConflict() continuation step runs alongside other steps | wrun_01KWGQBY3HWYGK78X0K8E1A1TV
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_01KWGQCAZ74W2YY1QP53Q424V5
  • hookClaimOnlyMutexWorkflow - hook works as a pure run mutex without payload data | wrun_01KWGQD3G45XH04MW58K3996N9
  • hookAdoptOwnerResultWorkflow - duplicate adopts the owner result via conflict.returnValue | wrun_01KWGQD72ES73QW737SBH565M2
  • hookSignalOwnerWorkflow - duplicate forwards its payload to the owner via resumeHook | wrun_01KWGQDCFA76S95SZ4RQR8R5X4
  • hookSupersedeOwnerWorkflow - duplicate cancels the owner and claims the released token | wrun_01KWGQDFYBZGC0TFE424WKGG8C
  • resume-or-start route pattern - resumeHook retried after start() reaches the new run | wrun_01KWGQDQFT5DRYN79N23EERGKD
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KWGQDXXRAPF8KFR0PYPMM0A2
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KWGQECMYV8QWPMQWYEN8MEN5
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KWGQER67Z8DCV7T2WCY5H08K
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KWGQEX7PNWT99H3AVER9T9GD
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KWGQEZEJAGVPNKHVZVDDV6C9
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KWGQF8QFAC0ARH5ET0XQH10W
  • startFromWorkflow - calling start() directly inside a workflow function with hook communication | wrun_01KWGQFHSFQNETFB0TZ0YC74BM
  • fibonacciWorkflow - recursive workflow composition via start() | wrun_01KWGQFKWAYAF9R8QH4C0YTQR7
  • health check endpoint (HTTP) - workflow endpoint responds to __health query parameter
  • health check (queue-based) - workflow endpoint responds to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KWGQG0E2TDN8TPC9P0G9ASX6
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KWGQG5F60HTY9RSAJ8A0JB9A
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KWGQGAR1REHDRAHTJXSJDTFR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KWGQGG2Q40S1THR4B854869Z
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KWGQGN68NKCN3JAJR4NVXKWW
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KWGQGTKT2SVS7Q7QXKAWSQ48
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KWGQGZNV0ACRWKSQ9REC5NKC
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KWGQH98GM3Z88MNDZG74VGJP
  • errorSubclassRoundTripWorkflow - first-class Error subclasses survive every serialization boundary | wrun_01KWGQHFH4Q3HWKTZ7JB8HRAYE
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KWGQHHY6XZRR4BT6CP13S89K
  • cancelRun - cancelling a running workflow | wrun_01KWGQHQ927MN5541SPR8XY2WG
  • cancelRun via CLI - cancelling a running workflow | wrun_01KWGQHVYJK0YRR0EB7CGJMHC7
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KWGQJ38HVDF0B04HBD10WWFR
  • hookWithSleepFinalStepWorkflow - step only on final payload | wrun_01KWGQJEMXTD72SXPJPEXQE8CG
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KWGQJPP908GME8TAWJE5NQSV
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KWGQJZZHQ9E07CX6N7AD9X38
  • AbortController abortTimeoutWorkflow: timeout cancels long-running step
  • AbortController abortParallelWorkflow: abort cancels all parallel steps
  • AbortController abortFromStepWorkflow: step abort cancels an in-flight sibling step
  • AbortController abortAlreadyAbortedWorkflow: pre-aborted signal seen by step
  • AbortController abortReasonWorkflow: abort reason preserved across boundaries
  • AbortController abortAfterCompletionWorkflow: abort after step completes is a no-op
  • AbortController abortViaHookWorkflow: external hook triggers abort on in-flight step
  • AbortController abortExternalSignalWorkflow: signal passed as workflow input
  • AbortController abortExternalSignalInFlightWorkflow: external abort fires mid-flight, propagates to nested steps
  • AbortController abortAnyInWorkflowWorkflow: AbortSignal.any composes signals inside the workflow VM
  • AbortController abortAnyInStepWorkflow: AbortSignal.any inside a step composes deserialized signals
  • AbortController abortSurvivesReplayWorkflow: controller state consistent across replay
  • AbortController abortThrowIfAbortedWorkflow: throwIfAborted causes FatalError, no retries
  • AbortController abortReasonTypesWorkflow: various abort reason types propagate correctly
  • AbortController abortFetchUncaughtWorkflow: uncaught fetch AbortError is FatalError, no retries
  • AbortController abortFetchInFlightWorkflow: aborting cancels an in-flight fetch
  • AbortController abortVoidSleepTimeoutWorkflow: documented void sleep().then(abort) pattern works
  • AbortController abortDeterministicBranchWorkflow: if-check takes same path on first-run and replay
  • AbortController abortListenerWorkflow: signal.addEventListener fires on the deserialized step signal
  • AbortController abortThrowIfAbortedMidFlightWorkflow: throwIfAborted in a polling loop bails when abort fires
  • AbortController abortDeterministicBranchFromStepWorkflow: branches stay consistent when abort comes from a step
  • AbortController abortHookOrderingWorkflow [listener-first-abort-first]: addEventListener → hook.then → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [listener-first-hook-first]: addEventListener → hook.then → resumeHook → abort()
  • AbortController abortHookOrderingWorkflow [hook-first-abort-first]: hook.then → addEventListener → abort() → resumeHook
  • AbortController abortHookOrderingWorkflow [hook-first-hook-first]: hook.then → addEventListener → resumeHook → abort()
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KWGQQ2GZEJJ4G4Z6JHBSQBQ2
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KWGQQ4NF45VY7MMQW3ERVCYG
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KWGQQ6PQRP6W8EVMNJPJ1PAM
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KWGQQ8SRZKY6FH5TW5CE9ATK
  • distributedAbortController - manual abort triggers signal | wrun_01KWGQQE4EJFAWVHQD3HFV0Y32
  • distributedAbortController - TTL expiration triggers signal | wrun_01KWGQQGV0D7ZWK5KWXK4PK1T3
  • distributedAbortController - reconnect to existing controller | wrun_01KWGQQNENFJ1CC74BGPFT45CR
  • experimental_setAttributes start: initial attributes are seeded on run creation
  • experimental_setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • experimental_setAttributes experimentalSetAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • experimental_setAttributes experimentalSetAttributesInsideStepWorkflow: step-body calls append attributed native events
  • experimental_setAttributes fire-and-forget: void experimental_setAttributes lands without awaiting
  • experimental_setAttributes Promise.all of disjoint-key writes: every key lands
  • experimental_setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • experimental_setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit
  • experimental_setAttributes start: invalid initial attributes are rejected before a run is created

e2e-local-postgres-nest-stable (3 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KWGQ2WM9QGW9HB9SV8C06QNP
  • webhookWorkflow | wrun_01KWGQ30ZE83C5G7PJJC5E7X4G
  • webhook route with invalid token

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 125 0 27
✅ example 125 0 27
✅ express 125 0 27
✅ fastify 125 0 27
✅ hono 125 0 27
✅ nextjs-turbopack 149 0 3
✅ nextjs-webpack 149 0 3
✅ nitro 125 0 27
✅ nuxt 125 0 27
✅ sveltekit 144 0 8
✅ vite 125 0 27
❌ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 127 0 25
❌ express-stable 0 127 25
❌ fastify-stable 0 127 25
❌ hono-stable 0 127 25
✅ nextjs-turbopack-canary 133 0 19
✅ nextjs-turbopack-stable 152 0 0
✅ nextjs-webpack-stable 152 0 0
❌ nitro-stable 0 127 25
✅ nuxt-stable 127 0 25
✅ sveltekit-stable 146 0 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 127 0 25
✅ express-stable 127 0 25
✅ fastify-stable 127 0 25
✅ hono-stable 127 0 25
✅ nextjs-turbopack-canary 133 0 19
✅ nextjs-turbopack-stable 152 0 0
✅ nextjs-webpack-canary 133 0 19
✅ nextjs-webpack-stable 152 0 0
✅ nitro-stable 127 0 25
✅ nuxt-stable 127 0 25
✅ sveltekit-stable 146 0 6
✅ vite-stable 127 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 126 0 26
✅ express-stable 126 0 26
✅ fastify-stable 126 0 26
✅ hono-stable 126 0 26
✅ nextjs-turbopack-canary 132 0 20
✅ nextjs-turbopack-stable 151 0 1
✅ nextjs-webpack-canary 132 0 20
✅ nextjs-webpack-stable 151 0 1
✅ nitro-stable 126 0 26
✅ nuxt-stable 126 0 26
✅ sveltekit-stable 145 0 7
✅ vite-stable 126 0 26
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 152 0 0
❌ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 127 0 25
❌ e2e-local-dev-tanstack-start- 0 127 25
❌ e2e-local-postgres-nest-stable 123 3 26
✅ e2e-local-postgres-tanstack-start- 126 0 26
✅ e2e-local-prod-nest-stable 127 0 25
✅ e2e-local-prod-tanstack-start- 127 0 25
✅ e2e-vercel-prod-tanstack-start 125 0 27

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

@ijjk ijjk force-pushed the ijjk/static-world-target branch from 9ce280f to 2cc6519 Compare July 2, 2026 01:57
@ijjk ijjk force-pushed the ijjk/static-world-target branch from 5d59ab7 to 3bdb625 Compare July 2, 2026 02:15
@vercel vercel Bot temporarily deployed to Preview – workflow-docs July 2, 2026 02:15 Inactive
@ijjk ijjk force-pushed the ijjk/static-world-target branch from 3bdb625 to 4280fa5 Compare July 2, 2026 02:22
Comment thread workbench/astro/scripts/start-with-pg.mjs Outdated
Comment thread workbench/nest/src/main.ts Outdated
Comment thread packages/world-testing/src/server.mts Outdated
Comment thread packages/cli/src/lib/inspect/setup.ts

const source = readFileSync(file, 'utf-8');
const needsFilename =
/\b__(?:file|dir)name\b/.test(source) &&

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.

The patchAdapterNodeServerChunks() idempotency guard only checks for the literal const __filename =, so it prepends a banner that re-declares __dirname/__filename on chunks that already own such a binding (e.g. const __dirname = dirname(fileURLToPath(...)) without const __filename =, or a var/let CJS-interop shim), producing a duplicate top-level const declaration that is a SyntaxError and crashes the Node server at startup.

Fix on Vercel

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