Skip to content

[world-local] Reject run_failed on non-existent run#1894

Merged
VaguelySerious merged 1 commit into
mainfrom
peter/world-local-run-failed-not-found
May 2, 2026
Merged

[world-local] Reject run_failed on non-existent run#1894
VaguelySerious merged 1 commit into
mainfrom
peter/world-local-run-failed-not-found

Conversation

@VaguelySerious
Copy link
Copy Markdown
Member

Summary

  • world-local previously silently persisted a run_failed event when the target run did not exist. world-postgres and world-vercel (via workflow-server) both throw WorkflowRunNotFoundError in this case.
  • Adds the same check in world-local for parity, plus a test covering it.

Test plan

  • pnpm test in packages/world-local (336 passed)
  • pnpm typecheck in packages/world-local
  • New test: should reject run_failed on non-existent run

🤖 Generated with Claude Code

Aligns world-local with world-postgres and world-vercel, which both
throw WorkflowRunNotFoundError when a run_failed event is recorded
against a run that was never created. world-local previously persisted
the event silently with no run record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 2, 2026

🦋 Changeset detected

Latest commit: 98d69d8

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

This PR includes changesets to release 19 packages
Name Type
@workflow/world-local Patch
@workflow/cli Patch
@workflow/core Patch
@workflow/vitest Patch
@workflow/world-postgres Patch
workflow Patch
@workflow/world-testing Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/web-shared Patch
@workflow/web Patch
@workflow/ai Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/nuxt Patch

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

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

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 2, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 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.041s (-5.1% 🟢) 1.005s (~) 0.964s 10 1.00x
💻 Local Express 0.044s (-1.1%) 1.005s (~) 0.962s 10 1.07x
🐘 Postgres Nitro 0.058s (-38.8% 🟢) 1.009s (-3.2%) 0.951s 10 1.43x
🐘 Postgres Express 0.063s (+8.8% 🔺) 1.012s (~) 0.949s 10 1.54x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 0.647s (+157.2% 🔺) 3.351s (+43.6% 🔺) 2.704s 10 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.126s (~) 2.006s (~) 0.880s 10 1.00x
💻 Local Nitro 1.128s (~) 2.005s (~) 0.877s 10 1.00x
🐘 Postgres Nitro 1.139s (~) 2.010s (~) 0.871s 10 1.01x
🐘 Postgres Express 1.148s (~) 2.010s (~) 0.863s 10 1.02x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.894s (-6.9% 🟢) 3.532s (-7.8% 🟢) 1.638s 10 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 10.868s (~) 11.020s (~) 0.153s 3 1.00x
💻 Local Express 10.926s (~) 11.023s (~) 0.098s 3 1.01x
💻 Local Nitro 10.926s (~) 11.022s (~) 0.096s 3 1.01x
🐘 Postgres Express 10.958s (~) 11.020s (~) 0.062s 3 1.01x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 17.502s (+1.1%) 19.000s (-2.1%) 1.498s 2 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 14.453s (-1.0%) 15.020s (~) 0.567s 4 1.00x
🐘 Postgres Express 14.564s (~) 15.022s (~) 0.458s 4 1.01x
💻 Local Nitro 14.928s (-0.9%) 15.028s (-6.3% 🟢) 0.100s 4 1.03x
💻 Local Express 15.014s (~) 15.278s (+1.7%) 0.264s 4 1.04x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 31.152s (-40.7% 🟢) 32.595s (-40.3% 🟢) 1.442s 2 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 13.878s (-0.6%) 14.162s (-1.0%) 0.284s 7 1.00x
🐘 Postgres Express 14.276s (+1.9%) 15.029s (+3.0%) 0.753s 6 1.03x
💻 Local Nitro 16.449s (-2.0%) 17.029s (~) 0.580s 6 1.19x
💻 Local Express 16.794s (+1.2%) 17.030s (~) 0.236s 6 1.21x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 55.724s (-85.8% 🟢) 58.139s (-85.3% 🟢) 2.415s 2 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.270s (+0.8%) 2.009s (~) 0.739s 15 1.00x
🐘 Postgres Nitro 1.311s (+2.9%) 2.009s (~) 0.698s 15 1.03x
💻 Local Nitro 1.494s (-8.4% 🟢) 2.006s (-3.3%) 0.512s 15 1.18x
💻 Local Express 1.516s (+1.8%) 2.006s (~) 0.490s 15 1.19x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.141s (-37.0% 🟢) 3.414s (-30.8% 🟢) 1.273s 9 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.341s (-0.8%) 3.011s (~) 0.670s 10 1.00x
🐘 Postgres Nitro 2.345s (~) 3.008s (~) 0.663s 10 1.00x
💻 Local Express 2.786s (-5.7% 🟢) 3.007s (-12.9% 🟢) 0.222s 10 1.19x
💻 Local Nitro 2.897s (-7.9% 🟢) 3.007s (-22.6% 🟢) 0.110s 10 1.24x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 79.816s (+1024.2% 🔺) 81.297s (+812.9% 🔺) 1.480s 4 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.456s (-0.7%) 4.009s (~) 0.553s 8 1.00x
🐘 Postgres Express 3.492s (~) 4.012s (~) 0.520s 8 1.01x
💻 Local Nitro 7.894s (-5.4% 🟢) 8.270s (-8.3% 🟢) 0.376s 4 2.28x
💻 Local Express 8.053s (-3.4%) 8.771s (-2.8%) 0.718s 4 2.33x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.905s (-56.2% 🟢) 5.488s (-49.9% 🟢) 1.583s 6 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.263s (~) 2.008s (~) 0.745s 15 1.00x
🐘 Postgres Nitro 1.265s (+0.6%) 2.008s (~) 0.743s 15 1.00x
💻 Local Nitro 1.553s (-16.8% 🟢) 2.005s (-14.3% 🟢) 0.453s 15 1.23x
💻 Local Express 1.580s (-16.6% 🟢) 2.073s (-12.3% 🟢) 0.493s 15 1.25x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.152s (-26.6% 🟢) 3.596s (-22.5% 🟢) 1.444s 9 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.333s (~) 3.010s (~) 0.677s 10 1.00x
🐘 Postgres Express 2.342s (~) 3.009s (~) 0.667s 10 1.00x
💻 Local Express 2.866s (-8.5% 🟢) 3.342s (-11.2% 🟢) 0.476s 9 1.23x
💻 Local Nitro 2.947s (-3.8%) 3.342s (-14.0% 🟢) 0.394s 9 1.26x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 2.472s (-21.3% 🟢) 4.680s (+3.5%) 2.208s 7 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.475s (~) 4.010s (~) 0.535s 8 1.00x
🐘 Postgres Express 3.507s (~) 4.009s (~) 0.503s 8 1.01x
💻 Local Nitro 8.327s (-8.9% 🟢) 9.021s (-10.0% 🟢) 0.695s 4 2.40x
💻 Local Express 8.604s (-2.2%) 9.027s (-2.6%) 0.424s 4 2.48x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.762s (-44.3% 🟢) 5.260s (-38.4% 🟢) 1.498s 6 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.808s (-1.6%) 1.023s (+1.7%) 0.215s 59 1.00x
🐘 Postgres Express 0.888s (+5.9% 🔺) 1.041s (+1.7%) 0.152s 58 1.10x
💻 Local Nitro 0.977s (~) 1.115s (+2.0%) 0.138s 54 1.21x
💻 Local Express 0.987s (~) 1.181s (+9.8% 🔺) 0.194s 51 1.22x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 9.644s (-33.5% 🟢) 11.488s (-28.6% 🟢) 1.844s 6 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.908s (-1.0%) 2.075s (-1.2%) 0.167s 44 1.00x
🐘 Postgres Express 2.032s (+2.8%) 2.684s (+18.9% 🔺) 0.653s 34 1.06x
💻 Local Express 3.002s (~) 3.470s (-3.2%) 0.468s 26 1.57x
💻 Local Nitro 3.183s (+4.9%) 3.586s (-4.6%) 0.403s 26 1.67x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 30.835s (-38.1% 🟢) 32.157s (-37.8% 🟢) 1.322s 3 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.939s (-4.0%) 4.181s (-9.2% 🟢) 0.242s 29 1.00x
🐘 Postgres Express 4.117s (+3.2%) 4.780s (+9.4% 🔺) 0.664s 26 1.04x
💻 Local Nitro 9.025s (-2.9%) 9.479s (-5.4% 🟢) 0.454s 13 2.29x
💻 Local Express 9.115s (-1.0%) 9.787s (-2.3%) 0.672s 13 2.31x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 76.344s (-28.8% 🟢) 77.993s (-28.4% 🟢) 1.648s 2 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.286s (+1.1%) 1.007s (~) 0.721s 60 1.00x
🐘 Postgres Nitro 0.289s (+2.1%) 1.007s (~) 0.717s 60 1.01x
💻 Local Express 0.621s (+10.8% 🔺) 1.022s (+1.7%) 0.401s 59 2.17x
💻 Local Nitro 0.693s (+14.6% 🔺) 1.116s (+9.2% 🔺) 0.422s 54 2.43x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.515s (-25.1% 🟢) 3.214s (-15.3% 🟢) 1.698s 19 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.486s (-2.0%) 1.007s (~) 0.520s 90 1.00x
🐘 Postgres Express 0.504s (-1.2%) 1.007s (~) 0.503s 90 1.04x
💻 Local Express 2.501s (~) 3.008s (~) 0.507s 30 5.14x
💻 Local Nitro 2.621s (+3.3%) 3.182s (+5.7% 🔺) 0.561s 29 5.39x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.702s (+4.7%) 5.085s (-2.1%) 1.384s 18 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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.794s (~) 1.008s (~) 0.214s 120 1.00x
🐘 Postgres Express 0.812s (-0.8%) 1.026s (+0.8%) 0.214s 117 1.02x
💻 Local Nitro 10.505s (-6.1% 🟢) 11.025s (-5.5% 🟢) 0.519s 11 13.23x
💻 Local Express 10.736s (-4.1%) 11.208s (-6.1% 🟢) 0.472s 11 13.52x
💻 Local Next.js (Turbopack) ⚠️ missing - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - -

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 6.138s (-40.6% 🟢) 8.089s (-34.2% 🟢) 1.952s 16 1.00x
▲ Vercel Express ⚠️ missing - - - -
▲ Vercel Nitro ⚠️ missing - - - -

🔍 Observability: 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 🥇 Nitro 0.199s (-6.7% 🟢) 1.004s (~) 0.011s (-10.4% 🟢) 1.017s (~) 0.818s 10 1.00x
🐘 Postgres Nitro 0.200s (-2.4%) 0.993s (-0.7%) 0.001s (-6.7% 🟢) 1.009s (~) 0.809s 10 1.00x
💻 Local Express 0.202s (+1.6%) 1.004s (~) 0.012s (-1.7%) 1.018s (~) 0.815s 10 1.01x
🐘 Postgres Express 0.226s (+10.1% 🔺) 0.998s (~) 0.001s (-18.8% 🟢) 1.011s (~) 0.785s 10 1.13x
💻 Local Next.js (Turbopack) ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 1.594s (-76.7% 🟢) 3.203s (-63.0% 🟢) 1.898s (+200.4% 🔺) 5.511s (-43.7% 🟢) 3.917s 10 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.608s (-2.6%) 1.004s (~) 0.004s (-6.6% 🟢) 1.022s (~) 0.414s 59 1.00x
🐘 Postgres Express 0.628s (~) 1.008s (~) 0.004s (~) 1.023s (~) 0.395s 59 1.03x
💻 Local Nitro 0.737s (-12.1% 🟢) 1.011s (~) 0.009s (+0.8%) 1.022s (-8.4% 🟢) 0.285s 59 1.21x
💻 Local Express 0.842s (+11.2% 🔺) 1.012s (-1.6%) 0.009s (-1.1%) 1.116s (+7.3% 🔺) 0.274s 54 1.39x
💻 Local Next.js (Turbopack) ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 4.361s (-74.2% 🟢) 6.213s (-65.9% 🟢) 0.184s (-12.9% 🟢) 6.808s (-64.0% 🟢) 2.448s 9 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.954s (-0.7%) 1.152s (-9.8% 🟢) 0.000s (+125.5% 🔺) 1.181s (-9.6% 🟢) 0.227s 51 1.00x
🐘 Postgres Nitro 0.960s (-1.0%) 1.217s (-2.5%) 0.000s (-51.0% 🟢) 1.232s (-2.0%) 0.273s 49 1.01x
💻 Local Nitro 1.203s (-1.6%) 2.020s (~) 0.000s (+300.0% 🔺) 2.022s (~) 0.819s 30 1.26x
💻 Local Express 1.227s (~) 2.021s (~) 0.000s (~) 2.023s (~) 0.796s 30 1.29x
💻 Local Next.js (Turbopack) ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 65.383s (+542.2% 🔺) 66.578s (+478.0% 🔺) 0.000s (NaN%) 67.062s (+456.5% 🔺) 1.679s 5 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: 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 🥇 Express 1.737s (-2.0%) 2.144s (-1.5%) 0.000s (NaN%) 2.153s (-2.1%) 0.416s 28 1.00x
🐘 Postgres Nitro 1.777s (-0.8%) 2.102s (-1.8%) 0.000s (+382.8% 🔺) 2.126s (-2.2%) 0.350s 29 1.02x
💻 Local Nitro 3.341s (-1.4%) 4.032s (~) 0.000s (-37.5% 🟢) 4.035s (~) 0.693s 15 1.92x
💻 Local Express 3.655s (+5.4% 🔺) 4.167s (+3.3%) 0.001s (-33.3% 🟢) 4.170s (+3.3%) 0.514s 15 2.10x
💻 Local Next.js (Turbopack) ⚠️ missing - - - - -
🐘 Postgres Next.js (Turbopack) ⚠️ missing - - - - -

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.380s (-4.2%) 6.647s (-4.8%) 0.000s (+77.8% 🔺) 7.126s (-5.5% 🟢) 1.746s 9 1.00x
▲ Vercel Express ⚠️ missing - - - - -
▲ Vercel Nitro ⚠️ missing - - - - -

🔍 Observability: Next.js (Turbopack)

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Nitro 14/21
🐘 Postgres Nitro 15/21
▲ Vercel Next.js (Turbopack) 21/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 17/21
Next.js (Turbopack) ▲ Vercel 21/21
Nitro 🐘 Postgres 18/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)

📋 View full workflow run

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1000 0 67 1067
✅ 💻 Local Development 1078 0 86 1164
✅ 📦 Local Production 1078 0 86 1164
✅ 🐘 Local Postgres 1078 0 86 1164
✅ 🪟 Windows 97 0 0 97
✅ 📋 Other 273 0 18 291
Total 4604 0 343 4947

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 90 0 7
✅ example 90 0 7
✅ express 90 0 7
✅ fastify 90 0 7
✅ hono 90 0 7
✅ nextjs-turbopack 95 0 2
✅ nextjs-webpack 95 0 2
✅ nitro 90 0 7
✅ nuxt 90 0 7
✅ sveltekit 90 0 7
✅ vite 90 0 7
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 91 0 6
✅ express-stable 91 0 6
✅ fastify-stable 91 0 6
✅ hono-stable 91 0 6
✅ nextjs-turbopack-canary 78 0 19
✅ nextjs-turbopack-stable 97 0 0
✅ nextjs-webpack-canary 78 0 19
✅ nextjs-webpack-stable 97 0 0
✅ nitro-stable 91 0 6
✅ nuxt-stable 91 0 6
✅ sveltekit-stable 91 0 6
✅ vite-stable 91 0 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 91 0 6
✅ express-stable 91 0 6
✅ fastify-stable 91 0 6
✅ hono-stable 91 0 6
✅ nextjs-turbopack-canary 78 0 19
✅ nextjs-turbopack-stable 97 0 0
✅ nextjs-webpack-canary 78 0 19
✅ nextjs-webpack-stable 97 0 0
✅ nitro-stable 91 0 6
✅ nuxt-stable 91 0 6
✅ sveltekit-stable 91 0 6
✅ vite-stable 91 0 6
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 91 0 6
✅ express-stable 91 0 6
✅ fastify-stable 91 0 6
✅ hono-stable 91 0 6
✅ nextjs-turbopack-canary 78 0 19
✅ nextjs-turbopack-stable 97 0 0
✅ nextjs-webpack-canary 78 0 19
✅ nextjs-webpack-stable 97 0 0
✅ nitro-stable 91 0 6
✅ nuxt-stable 91 0 6
✅ sveltekit-stable 91 0 6
✅ vite-stable 91 0 6
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 97 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 91 0 6
✅ e2e-local-postgres-nest-stable 91 0 6
✅ e2e-local-prod-nest-stable 91 0 6

📋 View full workflow run

Copy link
Copy Markdown
Member

@TooTallNate TooTallNate left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified parity claim against world-postgres/src/storage.ts:765 — yes, that world throws WorkflowRunNotFoundError when run_failed is recorded against a non-existent run, and world-local was indeed silently persisting it. Check is placed correctly: after the multi-step currentRun resolution (incl. the event-log fallback at lines ~210-225) but before the version-compatibility checks, so we won't false-positive on legitimately-loaded runs.

One non-blocking observation: world-postgres throws WorkflowRunNotFoundError for all three terminal events on missing runs: run_completed (storage.ts:709), run_failed (storage.ts:765), run_cancelled (storage.ts:810). This PR only adds the check for run_failed. Probably worth extending to the other two for full parity, but that's a follow-up — the run_failed case is what was hit in practice.

@pranaygp pranaygp added the backport-stable Cherry-pick this PR to the stable branch when merged label May 2, 2026
@VaguelySerious VaguelySerious enabled auto-merge (squash) May 2, 2026 10:37
@VaguelySerious VaguelySerious merged commit c1163eb into main May 2, 2026
172 of 181 checks passed
@VaguelySerious VaguelySerious deleted the peter/world-local-run-failed-not-found branch May 2, 2026 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-stable Cherry-pick this PR to the stable branch when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants