Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); fix(vite): rebuild changed workflow dependencies by NathanColosimo · Pull Request #3802 · vercel/workflow · GitHub
Skip to content

fix(vite): rebuild changed workflow dependencies - #3802

Closed
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies
Closed

fix(vite): rebuild changed workflow dependencies#3802
NathanColosimo wants to merge 3 commits into
codex/fix-next-hmr-build-racefrom
codex/fix-vite-hmr-dependencies

Conversation

@NathanColosimo

Copy link
Copy Markdown
Contributor

Summary

  • use Vite module metadata and importer edges for loaded workflow modules
  • fall back to the builder's scoped discovery graph for lazy, unvisited routes
  • rebuild on import-structure changes and deduplicate Vite's per-environment hot-update hooks

Validation

  • pnpm --filter @workflow/builders build
  • pnpm --filter @workflow/builders test
  • pnpm --filter @workflow/vite build
  • pnpm --filter @workflow/vite test
  • autoreview findings resolved; final packaging finding rejected because Vitest is already in devDependencies

Depends on #3333 for per-discovery import graphs.

@changeset-bot

changeset-botBot commented Aug 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 29a402e

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

This PR includes changesets to release 16 packages
NameType
@workflow/vitePatch
@workflow/buildersPatch
@workflow/astroPatch
@workflow/nitroPatch
@workflow/sveltekitPatch
@workflow/cliPatch
@workflow/nestPatch
@workflow/nextPatch
@workflow/rollupPatch
@workflow/vitestPatch
workflowPatch
@workflow/nuxtPatch
@workflow/world-testingPatch
@workflow/corePatch
@workflow/web-sharedPatch
@workflow/webPatch

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-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (8 failed)

python-node (8 failed):

  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW | 🔍 observability
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W | 🔍 observability
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A | 🔍 observability
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS | 🔍 observability
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC | 🔍 observability
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ | 🔍 observability
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703 | 🔍 observability
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5 | 🔍 observability

🌐 Cross-language Conformance (9 failed)

python (9 failed):

  • deploymentId: 'latest' is a no-op in non-Vercel worlds | wrun_01M0YSVJYH803BC7VERVKJB8DW
  • promiseAllWorkflow | wrun_41M0YPR0MQ0GK9MT0RVWTF7ARW
  • sleepingWorkflow | wrun_41M0YPRNC70GN514CGPJZB5F8W
  • parallelSleepWorkflow | wrun_41M0YPRPAE0GS2MF76RKMHEH3A
  • nullByteWorkflow | wrun_41M0YPRWW00GTH480YMBZ3X6RS
  • cancelRun - cancelling a running workflow | wrun_41M0YPWZBR0GS25Q8RY4NPSTVC
  • cancelRun via CLI - cancelling a running workflow | wrun_41M0YPX2EX0GKR3JERQA5A0EJQ
  • sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration | wrun_41M0YPX4Q40GP9XKAHT9WJB703
  • resilient start: addTenWorkflow completes when run_created returns 500 | wrun_41M0YPXP6E0GPYRHCSNCG30PB5

⚠️ Flaky E2E Tests (passed on retry)

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

  • addTenWorkflow (express)
  • addTenWorkflow (vite)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (nextjs-webpack)
  • hookWithSleepWorkflow - hook payloads delivered correctly with concurrent sleep (nuxt)

🛠 Infra Events (absorbed by the harness)

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

34 infra events
  • cold-start-warmup · suite warmup (tanstack-start) · at 09:36:21Z · abandoned wrun_01M0YPTFYSTSP80EM9E3NADB75
  • run-pickup-stall · hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack) · at 09:42:03Z · abandoned wrun_01M0YQ4Z1RQ2Z84T5CSRXVWC24
  • run-pickup-stall · concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (nextjs-webpack) · at 09:42:06Z · abandoned wrun_01M0YQ51STDA305XNB20A8NWCY
  • cold-start-warmup · suite warmup (python) · at 10:27:51Z · abandoned wrun_01M0YSNMGNNXXFMDQ39V3F90RB · (+7 more)
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NB1GPS99PPMFGRV68K
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NCVGQDES1VBYY7JK41
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NJ4P9G0KY5DAGV94FS
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NNPX5APD2SWW0QQE38
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:06Z · abandoned wrun_01M0YSS9NKDE3TB09GET8R2WF8
  • cold-start-warmup · suite warmup (python) · at 10:28:16Z · abandoned wrun_41M0YSPD4P0GX7WMG6W0WYMAEA · (+7 more)
  • run-pickup-stall · sleepingWorkflow (python) · at 10:28:32Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHX
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2400GZC7H91Q3DSVKH5
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2440GTS7XCHV6WCAAHY
  • run-pickup-stall · nullByteWorkflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2480GV0DDPM8EFVN006
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:28:33Z · abandoned wrun_41M0YST2J20GWV86V17G73Q2TD
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:29:06Z · abandoned wrun_41M0YSV2C60GTWH4PQ4868AH9Y
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49DPSYYQ3WHD69BX11K
  • run-pickup-stall · deploymentId: 'latest' is a no-op in non-Vercel worlds (python) · at 10:29:06Z · abandoned wrun_01M0YSV49AXR0SJEJG4CQZQM93
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49EE4BVT35D9MS143S1
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49FRF7Z1VJ85D0KWSCN
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:06Z · abandoned wrun_01M0YSV49HPXRDF75GQP7SGQP9
  • run-pickup-stall · sleepingWorkflow (python) · at 10:29:33Z · abandoned wrun_41M0YSVXVM0GYTWY02EH32JKK8
  • run-pickup-stall · promiseAllWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXPF0GNF683E0NY457MX
  • run-pickup-stall · parallelSleepWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXRN0GPN1NYCQ6QX9W5P
  • run-pickup-stall · nullByteWorkflow (python) · at 10:29:34Z · abandoned wrun_41M0YSVXSD0GX6HXDRVGQ08R5E
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYX1ABFTB0V6KFZHBXK2
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXAHGNDN52NMR9R0YS8
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:30:06Z · abandoned wrun_01M0YSWYXE0QZMCNN4MZ60F6XJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:24Z · abandoned wrun_41M0YSW28G0GVYEQ25SNBX0WHE
  • run-pickup-stall · cancelRun - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8FM125X1CP9H9V54KJ
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:30:36Z · abandoned wrun_01M0YSXW8PT9ABG9J1B0WVN1Y0
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:31:06Z · abandoned wrun_01M0YSYSGJKCETFFFBJFM68ACZ
  • run-pickup-stall · sleepInLoopWorkflow - sleep inside loop with steps actually delays each iteration (python) · at 10:32:06Z · abandoned wrun_41M0YSYNK10GQN8E2WQA2R00E3
  • run-pickup-stall · cancelRun via CLI - cancelling a running workflow (python) · at 10:32:45Z · abandoned wrun_41M0YSYT510GJ9GBMA7JMD3FSM

E2E Test Summary

Summary
PassedFailedSkippedTotal
❌ ▲ Vercel Production357087424320
✅ 💻 Local Development392205584480
✅ 📦 Local Production392205584480
✅ 🐘 Local Postgres392205584480
✅ 🪟 Windows32000320
❌ 🌐 Cross-language Conformance09132141
✅ vercel-http-transport8170143960
✅ vercel-multi-region270027
✅ vercel-ws-transport553087640
Total1705317277819848
Details by Category

❌ ▲ Vercel Production

AppPassedFailedSkipped
✅ astro-node132028
✅ astro-quickjs132028
✅ example-node132028
✅ example-quickjs132028
✅ express-node132028
✅ express-quickjs132028
✅ fastify-node132028
✅ fastify-quickjs132028
✅ hono-node132028
✅ hono-quickjs132028
✅ nest-node132028
✅ nest-quickjs132028
✅ nextjs-turbopack-node15703
✅ nextjs-turbopack-quickjs15703
✅ nextjs-webpack-node15703
✅ nextjs-webpack-quickjs15703
✅ nitro-node132028
✅ nitro-quickjs132028
✅ nuxt-node132028
✅ nuxt-quickjs132028
❌ python-node08152
✅ sveltekit-node15109
✅ sveltekit-quickjs15109
✅ tanstack-start-node132028
✅ tanstack-start-quickjs132028
✅ vite-node132028
✅ vite-quickjs132028

✅ 💻 Local Development

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 📦 Local Production

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🐘 Local Postgres

AppPassedFailedSkipped
✅ astro-stable-node134026
✅ astro-stable-quickjs134026
✅ express-stable-node134026
✅ express-stable-quickjs134026
✅ fastify-stable-node134026
✅ fastify-stable-quickjs134026
✅ hono-stable-node134026
✅ hono-stable-quickjs134026
✅ nest-stable-node134026
✅ nest-stable-quickjs134026
✅ nextjs-turbopack-canary-node141019
✅ nextjs-turbopack-canary-quickjs141019
✅ nextjs-turbopack-stable-node16000
✅ nextjs-turbopack-stable-quickjs16000
✅ nextjs-webpack-canary-node141019
✅ nextjs-webpack-canary-quickjs141019
✅ nextjs-webpack-stable-node16000
✅ nextjs-webpack-stable-quickjs16000
✅ nitro-stable-node134026
✅ nitro-stable-quickjs134026
✅ nuxt-stable-node134026
✅ nuxt-stable-quickjs134026
✅ sveltekit-stable-node15307
✅ sveltekit-stable-quickjs15307
✅ tanstack-start-node134026
✅ tanstack-start-quickjs134026
✅ vite-stable-node134026
✅ vite-stable-quickjs134026

✅ 🪟 Windows

AppPassedFailedSkipped
✅ nextjs-turbopack-node16000
✅ nextjs-turbopack-quickjs16000

❌ 🌐 Cross-language Conformance

AppPassedFailedSkipped
❌ python09132

✅ vercel-http-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ hono132028
✅ nextjs-turbopack15703
✅ nitro132028
✅ vite132028

✅ vercel-multi-region

AppPassedFailedSkipped
✅ nextjs-turbopack2700

✅ vercel-ws-transport

AppPassedFailedSkipped
✅ example132028
✅ express132028
✅ nextjs-turbopack15703
✅ vite132028

📋 View full workflow run

@vercel

vercelBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-nextjs-workflow-webpackReadyReadyPreview, v0Aug 26, 2026 9:34am
example-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-astro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-express-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-fastify-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-hono-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nestjs-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nitro-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-nuxt-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-python-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-sveltekit-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-tanstack-start-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workbench-vite-workflowReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-docsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-swc-playgroundReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-tarballsReadyReadyPreview, v0Aug 26, 2026 9:34am
workflow-webReadyReadyPreview, v0Aug 26, 2026 9:34am

@github-actions

github-actionsBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

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

fence=per-spec

scenariooutcomeeventsvirtreplayviolations
smoke-no-stepscompleted30msok0
smoke-one-stepcompleted60msok0
hook-at-step-startedcompleted120msok0
hook-at-step-completedcompleted120msok0
hook-at-hook-createdcompleted120msok0
deadline-hook-winscompleted71.0hok0
deadline-expirescompleted71.0hok0
long-sleepcompleted1130.0dok0
hook-never-arrivesstalled30msskipped0
step-retries-twicecompleted102.0sok0
parallel-stepscompleted90msok0
hook-on-execution-statecompleted120msok0
peek-hook-before-branchcompleted120msok0
peek-hook-after-branchcompleted120msok0
peek-hook-at-registrationcompleted120msok0
race-hook-before-probecompleted120msok0
race-hook-after-probecompleted120msok0
race-duplicate-deliverycompleted130msok0
attr-hook-before-stepcompleted110msok0
attr-hook-after-stepcompleted110msok0
attr-from-step-bodycompleted130msok0
fork-hook-after-timeoutcompleted141.0mok0
fork-hook-before-timeoutcompleted141.0mok0
count-hook-after-timeoutcompleted171.0mok0
count-hook-before-timeoutcompleted201.0mok0
stale-read-step-count-forkcompleted201.0mok0
stale-read-equal-step-countscompleted141.0mok0
step-vs-step-forkcompleted120msok0
step-vs-step-fork-fencedcompleted120msok0
fence-catches-benign-directioncompleted125msok0
in-flight-before-decisioncompleted171.0mok0
in-flight-before-decision-countedcompleted171.0mok0
in-flight-after-decisioncompleted192.0mok0
stale-read-step-count-fork-fencedcompleted201.0mok0
fork-hook-winscompleted131.0mok0
fork-timeout-winscompleted131.0mok0
unclaimed-payload-under-forkcompleted171.0mok0
claimed-payload-under-forkcompleted171.0mok0
writers-independent-step-bodiescompleted120msok0
writers-scripted-tempocompleted120msok0
cancel-mid-stepcancelled70msskipped0

Full trace: world-sim.txt

@NathanColosimo
NathanColosimoforce-pushed the codex/fix-next-hmr-build-race branch from c96691f to fe45e06CompareAugust 26, 2026 08:54
@NathanColosimo
NathanColosimoforce-pushed the codex/fix-vite-hmr-dependencies branch from 40bff1d to d29d533CompareAugust 26, 2026 08:56
@NathanColosimo

Copy link
Copy Markdown
ContributorAuthor

Closing this for now: Vite dependency HMR is separate from the Next.js HMR/CI flake this stack is trying to fix. We can revisit it as an independent change with its own concurrency and performance work.

Sign up for freeto 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

@NathanColosimo