Skip to content

fix(core): remove redundant hc_ prefix from health check correlationId#1678

Merged
TooTallNate merged 1 commit into
mainfrom
fix/health-check-correlation-id
Apr 9, 2026
Merged

fix(core): remove redundant hc_ prefix from health check correlationId#1678
TooTallNate merged 1 commit into
mainfrom
fix/health-check-correlation-id

Conversation

@TooTallNate
Copy link
Copy Markdown
Member

Summary

  • Remove the hc_ prefix from the health check correlationId generation, which was redundant since generateHealthCheckRunId() and getHealthCheckStreamName() already add their own prefixes
  • Before: wrun_hc_hc_01KNT... / __health_check__hc_01KNT...
  • After: wrun_hc_01KNT... / __health_check__01KNT...

The correlationId was generated as hc_${generateId()}, but
generateHealthCheckRunId() already adds wrun_hc_, producing
wrun_hc_hc_... Similarly, getHealthCheckStreamName() adds
__health_check__, making the hc_ prefix in correlationId redundant.
@TooTallNate TooTallNate requested a review from a team as a code owner April 9, 2026 22:55
Copilot AI review requested due to automatic review settings April 9, 2026 22:55
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 9, 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 Apr 9, 2026 10:57pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Apr 9, 2026 10:57pm
example-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-astro-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-express-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-fastify-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-hono-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-nitro-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-nuxt-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workbench-vite-workflow Ready Ready Preview, Comment Apr 9, 2026 10:57pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Apr 9, 2026 10:57pm
workflow-swc-playground Ready Ready Preview, Comment Apr 9, 2026 10:57pm

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 9, 2026

🦋 Changeset detected

Latest commit: e06029a

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

This PR includes changesets to release 16 packages
Name Type
@workflow/core Patch
@workflow/builders Patch
@workflow/cli Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/vitest Patch
@workflow/web-shared Patch
workflow Patch
@workflow/world-testing Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/nuxt Patch
@workflow/ai 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
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 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 🥇 Express 0.043s (~) 1.005s (~) 0.962s 10 1.00x
💻 Local Nitro 0.043s (+16.2% 🔺) 1.006s (~) 0.962s 10 1.00x
🐘 Postgres Nitro 0.057s (-9.2% 🟢) 1.009s (~) 0.952s 10 1.33x
🐘 Postgres Express 0.059s (-10.4% 🟢) 1.011s (~) 0.952s 10 1.38x
workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Nitro 1.127s (+2.2%) 2.006s (~) 0.879s 10 1.00x
💻 Local Express 1.127s (~) 2.006s (~) 0.879s 10 1.00x
🐘 Postgres Express 1.151s (~) 2.010s (~) 0.859s 10 1.02x
🐘 Postgres Nitro 1.156s (~) 2.012s (~) 0.856s 10 1.03x
workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 10.890s (~) 11.023s (~) 0.132s 3 1.00x
🐘 Postgres Nitro 10.900s (~) 11.022s (~) 0.122s 3 1.00x
💻 Local Express 10.934s (~) 11.023s (~) 0.090s 3 1.00x
💻 Local Nitro 10.934s (+2.5%) 11.023s (~) 0.089s 3 1.00x
workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 14.551s (~) 15.027s (~) 0.475s 4 1.00x
🐘 Postgres Nitro 14.595s (+0.7%) 15.020s (~) 0.425s 4 1.00x
💻 Local Express 14.941s (-0.8%) 15.028s (-6.3% 🟢) 0.087s 4 1.03x
💻 Local Nitro 14.995s (+5.4% 🔺) 15.029s (~) 0.034s 4 1.03x
workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 14.031s (+1.2%) 14.448s (+3.1%) 0.417s 7 1.00x
🐘 Postgres Express 14.043s (~) 14.450s (-2.0%) 0.407s 7 1.00x
💻 Local Express 16.637s (-1.8%) 17.032s (~) 0.394s 6 1.19x
💻 Local Nitro 16.777s (+12.4% 🔺) 17.031s (+13.3% 🔺) 0.254s 6 1.20x
Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.262s (~) 2.009s (~) 0.748s 15 1.00x
🐘 Postgres Express 1.275s (~) 2.009s (~) 0.734s 15 1.01x
💻 Local Nitro 1.503s (+0.5%) 2.005s (~) 0.502s 15 1.19x
💻 Local Express 1.522s (~) 2.006s (~) 0.484s 15 1.21x
Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.337s (-1.0%) 3.008s (~) 0.672s 10 1.00x
🐘 Postgres Express 2.390s (+2.6%) 3.010s (~) 0.620s 10 1.02x
💻 Local Nitro 2.885s (+5.8% 🔺) 3.759s (+17.2% 🔺) 0.874s 8 1.23x
💻 Local Express 2.917s (-8.4% 🟢) 3.453s (-13.9% 🟢) 0.537s 9 1.25x
Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.470s (-0.9%) 4.009s (~) 0.539s 8 1.00x
🐘 Postgres Express 3.471s (-0.9%) 4.010s (~) 0.539s 8 1.00x
💻 Local Express 8.084s (-3.2%) 9.027s (~) 0.943s 4 2.33x
💻 Local Nitro 9.166s (+18.4% 🔺) 9.525s (+11.8% 🔺) 0.359s 4 2.64x
Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.248s (-3.7%) 2.008s (~) 0.760s 15 1.00x
🐘 Postgres Nitro 1.256s (~) 2.009s (~) 0.754s 15 1.01x
💻 Local Express 1.544s (-1.3%) 2.006s (~) 0.462s 15 1.24x
💻 Local Nitro 1.575s (+4.6%) 2.006s (~) 0.431s 15 1.26x
Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.319s (-2.5%) 3.011s (~) 0.691s 10 1.00x
🐘 Postgres Nitro 2.343s (~) 3.011s (~) 0.668s 10 1.01x
💻 Local Express 2.997s (-5.5% 🟢) 3.565s (-8.2% 🟢) 0.568s 9 1.29x
💻 Local Nitro 3.147s (-10.0% 🟢) 3.886s (-3.2%) 0.738s 8 1.36x
Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.469s (-0.6%) 4.009s (~) 0.540s 8 1.00x
🐘 Postgres Nitro 3.479s (~) 4.010s (~) 0.530s 8 1.00x
💻 Local Express 8.822s (-13.6% 🟢) 9.020s (-18.2% 🟢) 0.198s 4 2.54x
💻 Local Nitro 9.106s (+7.1% 🔺) 9.525s (+5.6% 🔺) 0.420s 4 2.62x
workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.812s (-6.0% 🟢) 1.006s (~) 0.194s 60 1.00x
🐘 Postgres Nitro 0.840s (~) 1.006s (-1.7%) 0.165s 60 1.03x
💻 Local Nitro 1.007s (+36.7% 🔺) 1.505s (+49.9% 🔺) 0.498s 40 1.24x
💻 Local Express 1.106s (+9.1% 🔺) 1.391s (-18.2% 🟢) 0.285s 44 1.36x
workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.913s (-11.3% 🟢) 2.076s (-30.3% 🟢) 0.162s 44 1.00x
🐘 Postgres Nitro 2.074s (+6.7% 🔺) 2.822s (+34.3% 🔺) 0.748s 32 1.08x
💻 Local Express 3.022s (-2.2%) 3.649s (-9.0% 🟢) 0.626s 25 1.58x
💻 Local Nitro 3.052s (+18.9% 🔺) 3.884s (+22.1% 🔺) 0.832s 24 1.60x
workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.890s (-9.8% 🟢) 4.109s (-18.0% 🟢) 0.219s 30 1.00x
🐘 Postgres Nitro 4.098s (+2.7%) 4.704s (+9.5% 🔺) 0.607s 26 1.05x
💻 Local Express 9.141s (-0.7%) 9.864s (-1.6%) 0.722s 13 2.35x
💻 Local Nitro 9.240s (+19.8% 🔺) 9.942s (+21.0% 🔺) 0.702s 13 2.38x
workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.282s (~) 1.007s (~) 0.724s 60 1.00x
🐘 Postgres Express 0.285s (-3.8%) 1.007s (~) 0.722s 60 1.01x
💻 Local Nitro 0.605s (-8.8% 🟢) 1.022s (+1.7%) 0.417s 59 2.14x
💻 Local Express 0.606s (+1.6%) 1.004s (-1.7%) 0.398s 60 2.15x
workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.480s (-8.7% 🟢) 1.006s (~) 0.526s 90 1.00x
🐘 Postgres Nitro 0.501s (+2.5%) 1.007s (~) 0.506s 90 1.04x
💻 Local Express 2.516s (~) 3.009s (~) 0.492s 30 5.24x
💻 Local Nitro 2.540s (-7.5% 🟢) 3.009s (-5.5% 🟢) 0.469s 30 5.29x
workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.800s (+1.8%) 1.008s (~) 0.208s 120 1.00x
🐘 Postgres Express 0.807s (-4.0%) 1.008s (-1.1%) 0.201s 120 1.01x
💻 Local Express 11.136s (+1.2%) 11.755s (+0.8%) 0.619s 11 13.92x
💻 Local Nitro 11.150s (~) 11.845s (~) 0.695s 11 13.93x
Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.195s (-9.3% 🟢) 1.002s (+0.8%) 0.001s (-41.2% 🟢) 1.009s (~) 0.815s 10 1.00x
💻 Local Express 0.205s (-1.9%) 1.004s (~) 0.012s (-0.8%) 1.018s (~) 0.813s 10 1.05x
💻 Local Nitro 0.207s (+40.1% 🔺) 1.004s (~) 0.012s (+33.0% 🔺) 1.018s (~) 0.812s 10 1.06x
🐘 Postgres Nitro 0.215s (+8.0% 🔺) 0.999s (~) 0.001s (-25.0% 🟢) 1.010s (~) 0.794s 10 1.11x
stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.614s (-5.1% 🟢) 1.008s (~) 0.004s (-25.6% 🟢) 1.022s (~) 0.408s 59 1.00x
🐘 Postgres Nitro 0.622s (+2.9%) 1.004s (~) 0.005s (+25.1% 🔺) 1.023s (~) 0.401s 59 1.01x
💻 Local Express 0.732s (-0.5%) 1.013s (~) 0.009s (-4.7%) 1.024s (~) 0.292s 59 1.19x
💻 Local Nitro 0.928s (+40.2% 🔺) 1.012s (~) 0.009s (-12.8% 🟢) 1.220s (+18.9% 🔺) 0.292s 51 1.51x
10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 0.941s (-5.2% 🟢) 1.127s (-15.6% 🟢) 0.000s (-58.5% 🟢) 1.147s (-16.3% 🟢) 0.206s 53 1.00x
🐘 Postgres Nitro 0.943s (~) 1.209s (+5.4% 🔺) 0.000s (-66.0% 🟢) 1.229s (+5.8% 🔺) 0.286s 51 1.00x
💻 Local Nitro 1.228s (-7.3% 🟢) 2.020s (~) 0.000s (-41.2% 🟢) 2.022s (~) 0.793s 30 1.31x
💻 Local Express 1.237s (-2.9%) 2.021s (~) 0.000s (+9.1% 🔺) 2.023s (~) 0.786s 30 1.31x
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.733s (-3.0%) 2.103s (-1.8%) 0.000s (+Infinity% 🔺) 2.113s (-1.8%) 0.379s 29 1.00x
🐘 Postgres Nitro 1.784s (~) 2.177s (+3.8%) 0.000s (-100.0% 🟢) 2.188s (+3.6%) 0.404s 28 1.03x
💻 Local Express 3.542s (-3.3%) 4.033s (-3.3%) 0.000s (-54.5% 🟢) 4.035s (-3.3%) 0.494s 15 2.04x
💻 Local Nitro 3.604s (-8.7% 🟢) 4.099s (-9.6% 🟢) 0.000s (-40.6% 🟢) 4.101s (-9.6% 🟢) 0.498s 15 2.08x

Summary

Fastest Framework by World

Winner determined by most benchmark wins

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

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 19/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


Some benchmark jobs failed:

  • Local: success
  • Postgres: success
  • Vercel: failure

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 923 0 67 990
✅ 💻 Local Development 898 0 182 1080
✅ 📦 Local Production 898 0 182 1080
✅ 🐘 Local Postgres 898 0 182 1080
✅ 🪟 Windows 82 0 8 90
❌ 🌍 Community Worlds 133 74 24 231
✅ 📋 Other 228 0 42 270
Total 4060 74 687 4821

❌ Failed Tests

🌍 Community Worlds (74 failed)

mongodb (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KNT7EPRGX7W72S2NYF5R5T6R
  • webhookWorkflow | wrun_01KNT7EZN6V6DHENMDWVMZT0H9
  • fetchWorkflow | wrun_01KNT7JBCWCC2F218MZZ4Q6FR6
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KNT7PM08CA4PH3VQRB8JEPPJ
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KNT7XQ0NGF1T3PTBQKT05M4W

redis (7 failed):

  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KNT7EPRGX7W72S2NYF5R5T6R
  • webhookWorkflow | wrun_01KNT7EZN6V6DHENMDWVMZT0H9
  • fetchWorkflow | wrun_01KNT7JBCWCC2F218MZZ4Q6FR6
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KNT7PM08CA4PH3VQRB8JEPPJ
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KNT7XQ0NGF1T3PTBQKT05M4W

turso (60 failed):

  • addTenWorkflow | wrun_01KNT7DHQ9N122ZY31MAD7P4XJ
  • addTenWorkflow | wrun_01KNT7DHQ9N122ZY31MAD7P4XJ
  • wellKnownAgentWorkflow (.well-known/agent) | wrun_01KNT7F6SP1PE6VHRFXG7MQF36
  • should work with react rendering in step
  • promiseAllWorkflow | wrun_01KNT7DRGEW314WWAX97T4NT0K
  • promiseRaceWorkflow | wrun_01KNT7DX14ZPE2XN50WJPZVY6N
  • promiseAnyWorkflow | wrun_01KNT7DZ4YKFDTJT0CQ30DDQMV
  • importedStepOnlyWorkflow | wrun_01KNT7FKN851NBA8AE36MX9NN9
  • hookWorkflow | wrun_01KNT7EC5D0ZYCRRS2GVVA70P2
  • hookWorkflow is not resumable via public webhook endpoint | wrun_01KNT7EPRGX7W72S2NYF5R5T6R
  • webhookWorkflow | wrun_01KNT7EZN6V6DHENMDWVMZT0H9
  • sleepingWorkflow | wrun_01KNT7F6YFAG17JRN1GQWDX4D3
  • parallelSleepWorkflow | wrun_01KNT7FJG64M5GEGA037K5X6B9
  • nullByteWorkflow | wrun_01KNT7FPH6BA5ZMS69M77YDA3F
  • workflowAndStepMetadataWorkflow | wrun_01KNT7FRNE4P3FE7KFMPC8KJHV
  • fetchWorkflow | wrun_01KNT7JBCWCC2F218MZZ4Q6FR6
  • promiseRaceStressTestWorkflow | wrun_01KNT7JESHPQ6HQ5AHH413DYE3
  • 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 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
  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_01KNT7NZ75EWYEJVEH95GEGKBK
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_01KNT7PM08CA4PH3VQRB8JEPPJ
  • hookDisposeTestWorkflow - hook token reuse after explicit disposal while workflow still running | wrun_01KNT7QDN78MD3097WR9Z2KYWC
  • stepFunctionPassingWorkflow - step function references can be passed as arguments (without closure vars) | wrun_01KNT7R25M6054Q6QD1CDAPQ94
  • stepFunctionWithClosureWorkflow - step function with closure variables passed as argument | wrun_01KNT7RBD1VQYEHGAT8JSV4P65
  • closureVariableWorkflow - nested step functions with closure variables | wrun_01KNT7RH6D0CY7YCCMXEM6D6G9
  • spawnWorkflowFromStepWorkflow - spawning a child workflow using start() inside a step | wrun_01KNT7RKB7P9CEK8VF927W20SR
  • runClassSerializationWorkflow - Run instances serialize across workflow/step boundaries | wrun_01KNT7RYTCY0MWEAE9BFHKKPP9
  • health check (queue-based) - workflow and step endpoints respond to health check messages
  • health check (CLI) - workflow health command reports healthy endpoints
  • pathsAliasWorkflow - TypeScript path aliases resolve correctly | wrun_01KNT7SE4PY5RB98DJ9W56EJ67
  • Calculator.calculate - static workflow method using static step methods from another class | wrun_01KNT7SKTNS0YFNAM51G48JMGB
  • AllInOneService.processNumber - static workflow method using sibling static step methods | wrun_01KNT7STRJHGEWAVZ6GA5ZR2FR
  • ChainableService.processWithThis - static step methods using this to reference the class | wrun_01KNT7T1KFD3C6Z4313ADE2N00
  • thisSerializationWorkflow - step function invoked with .call() and .apply() | wrun_01KNT7T7V6RYQBW49WVAVHAPSS
  • customSerializationWorkflow - custom class serialization with WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE | wrun_01KNT7TEPR1MQZP823ZS7GPWPE
  • instanceMethodStepWorkflow - instance methods with "use step" directive | wrun_01KNT7TNDNEJYA68X08J9AA9GM
  • crossContextSerdeWorkflow - classes defined in step code are deserializable in workflow context | wrun_01KNT7V1GDYG3DYWM6HTXDFB4J
  • stepFunctionAsStartArgWorkflow - step function reference passed as start() argument | wrun_01KNT7VA26Y0D53AYYDFKXY00G
  • cancelRun - cancelling a running workflow | wrun_01KNT7VJ86M243P9X59BRZVHAW
  • cancelRun via CLI - cancelling a running workflow | wrun_01KNT7VVVAC0Y7FMXG0AW4JMPY
  • pages router addTenWorkflow via pages router
  • pages router promiseAllWorkflow via pages router
  • pages router sleepingWorkflow via pages router
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep | wrun_01KNT7W81YG9RTM244S0SZZWGD
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_01KNT7WXTPWKXJ8B1AKCGK56P3
  • sleepWithSequentialStepsWorkflow - sequential steps work with concurrent sleep (control) | wrun_01KNT7XBF4JTPD2TA294N4GQZC
  • importMetaUrlWorkflow - import.meta.url is available in step bundles | wrun_01KNT7XJHK5W54Y4FRDPR9ZK2M
  • metadataFromHelperWorkflow - getWorkflowMetadata/getStepMetadata work from module-level helper (#1577) | wrun_01KNT7XMV6V5HX9JQ9F1430NG4
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_01KNT7XQ0NGF1T3PTBQKT05M4W
  • getterStepWorkflow - getter functions with "use step" directive | wrun_01KNT7XT8JQKXZ4NS4G1P16F2Z

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 83 0 7
✅ example 83 0 7
✅ express 83 0 7
✅ fastify 83 0 7
✅ hono 83 0 7
✅ nextjs-turbopack 88 0 2
✅ nextjs-webpack 88 0 2
✅ nitro 83 0 7
✅ nuxt 83 0 7
✅ sveltekit 83 0 7
✅ vite 83 0 7
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 76 0 14
✅ express-stable 76 0 14
✅ fastify-stable 76 0 14
✅ hono-stable 76 0 14
✅ nextjs-turbopack-canary 63 0 27
✅ nextjs-turbopack-stable 82 0 8
✅ nextjs-webpack-canary 63 0 27
✅ nextjs-webpack-stable 82 0 8
✅ nitro-stable 76 0 14
✅ nuxt-stable 76 0 14
✅ sveltekit-stable 76 0 14
✅ vite-stable 76 0 14
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 76 0 14
✅ express-stable 76 0 14
✅ fastify-stable 76 0 14
✅ hono-stable 76 0 14
✅ nextjs-turbopack-canary 63 0 27
✅ nextjs-turbopack-stable 82 0 8
✅ nextjs-webpack-canary 63 0 27
✅ nextjs-webpack-stable 82 0 8
✅ nitro-stable 76 0 14
✅ nuxt-stable 76 0 14
✅ sveltekit-stable 76 0 14
✅ vite-stable 76 0 14
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 76 0 14
✅ express-stable 76 0 14
✅ fastify-stable 76 0 14
✅ hono-stable 76 0 14
✅ nextjs-turbopack-canary 63 0 27
✅ nextjs-turbopack-stable 82 0 8
✅ nextjs-webpack-canary 63 0 27
✅ nextjs-webpack-stable 82 0 8
✅ nitro-stable 76 0 14
✅ nuxt-stable 76 0 14
✅ sveltekit-stable 76 0 14
✅ vite-stable 76 0 14
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 82 0 8
❌ 🌍 Community Worlds
App Passed Failed Skipped
✅ mongodb-dev 6 0 0
❌ mongodb 56 7 8
✅ redis-dev 6 0 0
❌ redis 56 7 8
✅ turso-dev 6 0 0
❌ turso 3 60 8
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 76 0 14
✅ e2e-local-postgres-nest-stable 76 0 14
✅ e2e-local-prod-nest-stable 76 0 14

📋 View full workflow run

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR removes a redundant hc_ prefix from the health check correlationId generation in @workflow/core, since the derived identifiers already add health-check-specific prefixes.

Changes:

  • Generate health check correlationId as a raw ULID (no hc_ prefix) to avoid doubled hc_hc_ in derived IDs.
  • Add a changeset marking this as a patch release for @workflow/core.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
packages/core/src/runtime/helpers.ts Updates health check correlationId generation to avoid redundant prefixing in derived runId/stream name.
.changeset/fix-health-check-correlation-id.md Adds a patch changeset documenting the correlationId prefix fix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@TooTallNate TooTallNate enabled auto-merge (squash) April 9, 2026 23:28
@TooTallNate TooTallNate merged commit ea97bd6 into main Apr 9, 2026
164 of 170 checks passed
@TooTallNate TooTallNate deleted the fix/health-check-correlation-id branch April 9, 2026 23:35
@ghost ghost mentioned this pull request Apr 9, 2026
@TooTallNate TooTallNate added the backport-stable Cherry-pick this PR to the stable branch when merged label Apr 10, 2026
@ghost
Copy link
Copy Markdown

ghost commented Apr 10, 2026

Backported to stable (ea97bd6 -> f5fb9b7).

ghost pushed a commit that referenced this pull request Apr 10, 2026
#1678)

The correlationId was generated as hc_${generateId()}, but
generateHealthCheckRunId() already adds wrun_hc_, producing
wrun_hc_hc_... Similarly, getHealthCheckStreamName() adds
__health_check__, making the hc_ prefix in correlationId redundant.
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