Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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" + '
Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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('^' + ".*" + ' Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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('^' + ".*" + ' Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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" + ' Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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('^' + ".*" + ' Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious
, '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); } })(); })(); Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly by VaguelySerious · Pull Request #2932 · vercel/workflow · GitHub
Skip to content

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly - #2932

Closed
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode
Closed

Remove WORKFLOW_SAFE_MODE; configure WORKFLOW_SEQUENTIAL_REPLAYS directly#2932
VaguelySerious wants to merge 1 commit into
mainfrom
peter/remove-safe-mode

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

Summary

Removes the unreleased WORKFLOW_SAFE_MODE umbrella flag. WORKFLOW_SEQUENTIAL_REPLAYS is now controlled only by its own environment variable.

WORKFLOW_SAFE_MODE was added alongside WORKFLOW_SEQUENTIAL_REPLAYS (#2193) but has not shipped in a release, so this is a pre-release cleanup rather than a breaking change.

Changes

  • @workflow/builders / @workflow/world-vercelisSequentialReplaysEnabled() (and its mirrored copy in world-vercel) return true only for WORKFLOW_SEQUENTIAL_REPLAYS=1; the WORKFLOW_SAFE_MODE fallback and its tests are removed.
  • Docs — the WORKFLOW_SEQUENTIAL_REPLAYS documentation (Vercel World v4 + v5, worlds configuration, framework integrations) now states what the flag does and notes that it might lead to higher queue performance overhead. The safe-mode references and the other tradeoff/cost callouts are dropped.

What WORKFLOW_SEQUENTIAL_REPLAYS does

Set WORKFLOW_SEQUENTIAL_REPLAYS=1 to run at most one orchestrator (flow) invocation at a time per workflow run: each run's flow messages get a dedicated queue topic and the flow trigger is generated with maxConcurrency: 1. Inline step executions get per-step topics and keep full parallelism. Read at both build time and runtime. Routing each run through a dedicated maxConcurrency: 1 topic might lead to higher queue performance overhead.

🤖 Generated with Claude Code

…ctly
Drop the WORKFLOW_SAFE_MODE umbrella fallback from isSequentialReplaysEnabled()
in @workflow/builders and its mirror in @workflow/world-vercel, and remove the
safe-mode tests. WORKFLOW_SEQUENTIAL_REPLAYS is now gated only by its own env var.
Docs: state what WORKFLOW_SEQUENTIAL_REPLAYS does and note it might lead to higher
queue performance overhead; drop the safe-mode references and the other
tradeoff/cost callouts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious
VaguelySerious requested review from a team and ijjk as code ownersJuly 15, 2026 01:37
@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: dc85e9f

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

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

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

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

@vercel

vercelBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

commit dc85e9f · Wed, 15 Jul 2026 01:58:10 GMT · run logs

Backend: vercel · app: nextjs-turbopack

MetricScenarioAvg (ms)P75 (ms)P90 (ms)P99 (ms)Samples
TTFSstream1397 (+1.4%)1656 🔴1744 🔴2585 🔴30
TTFShook + stream1576 (+15%)1890 🔴1950 🔴2465 🔴30
STSO1020 steps (1-20)272 (-9.4%)298 🔴363 🔴395 🔴19
STSO1020 steps (101-120)390 (-10%)419 🔴512 🔴539 🔴19
STSO1020 steps (1001-1020)1049 (+16%)1005 🔴1263 🔴3859 🔴19
WOstream1397 (+1.4%)16561744258530
WOhook + stream1576 (+15%)18901950246530
SLstream4552 (-9.5%)5160 🔴5695 🔴5741 🔴30
SLhook + stream4860 (-3.5%)5519 🔴5725 🔴5868 🔴30

Avg deltas compare against the most recent benchmark run on main at the time of this run.

Metrics — TTFS: time to first step body execution · STSO: step-to-step overhead (gap between consecutive step bodies) · WO: workflow overhead (time outside step bodies, client start → last step body exit) · SL: stream latency (first chunk write → visible to the reader)

Scenarios — stream: one step that streams chunks back to the client; no hooks, so the run stays in turbo mode · hook + stream: registers a hook before the same streaming step, which exits turbo mode · 1020 steps: 1020 trivial sequential steps; STSO is measured between consecutive steps in the given step ranges

🟢/🔴 mark percentiles within/above target. Targets (p75/p90/p99, ms) — TTFS 200/300/600 · SL 50/60/125 · STSO (1-20) 20/30/60 · STSO (101-120) 30/45/90 · STSO (1001-1020) 40/60/120

TTFS/WO compare client vs deployment clocks and SL compares the step runner’s clock vs the client’s (NTP-synced in CI). WO ends at the last step body exit, the closest observable proxy for the final step-completion request.

@github-actions

github-actionsBot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

PassedFailedSkippedTotal
✅ ▲ Vercel Production145302301683
✅ 💻 Local Development148302001683
✅ 📦 Local Production161702191836
✅ 🐘 Local Postgres161702191836
✅ 🪟 Windows15300153
✅ 📋 Other89401771071
✅ vercel-multi-region270027
Total7244010458289

Details by Category

✅ ▲ Vercel Production
AppPassedFailedSkipped
✅ astro126027
✅ example126027
✅ express126027
✅ fastify126027
✅ hono126027
✅ nextjs-turbopack15003
✅ nextjs-webpack15003
✅ nitro126027
✅ nuxt126027
✅ sveltekit14508
✅ vite126027
✅ 💻 Local Development
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 📦 Local Production
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🐘 Local Postgres
AppPassedFailedSkipped
✅ astro-stable128025
✅ express-stable128025
✅ fastify-stable128025
✅ hono-stable128025
✅ nextjs-turbopack-canary134019
✅ nextjs-turbopack-stable15300
✅ nextjs-webpack-canary134019
✅ nextjs-webpack-stable15300
✅ nitro-stable128025
✅ nuxt-stable128025
✅ sveltekit-stable14706
✅ vite-stable128025
✅ 🪟 Windows
AppPassedFailedSkipped
✅ nextjs-turbopack15300
✅ 📋 Other
AppPassedFailedSkipped
✅ e2e-local-dev-nest-stable128025
✅ e2e-local-dev-tanstack-start-128025
✅ e2e-local-postgres-nest-stable128025
✅ e2e-local-postgres-tanstack-start-128025
✅ e2e-local-prod-nest-stable128025
✅ e2e-local-prod-tanstack-start-128025
✅ e2e-vercel-prod-tanstack-start126027
✅ vercel-multi-region
AppPassedFailedSkipped
✅ nextjs-turbopack2700

📋 View full workflow run


Some E2E test jobs failed:

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

Check the workflow run for details.

VaguelySerious added a commit that referenced this pull request Jul 15, 2026
Drop the WORKFLOW_SAFE_MODE fallback from isPreconditionGuardEnabled() (+ tests);
the guard is gated only by WORKFLOW_PRECONDITION_GUARD=1. Remove the
WORKFLOW_SAFE_MODE doc section this branch added (v4/v5 Vercel World, v5 worlds
config) and the safe-mode mitigation from the corrupted-event-log pages. Reword
the runtime-tuning guard entry to state what it does, without perf/correctness
framing. Drop SAFE_MODE from the changeset.
(The seq-replays SAFE_MODE references still present here are inherited from main
and removed by the companion PR #2932; they resolve when this branch rebases.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VaguelySerious

Copy link
Copy Markdown
MemberAuthor

Folded into #2266 — the WORKFLOW_SEQUENTIAL_REPLAYS SAFE_MODE removal is now cherry-picked onto that branch, so the whole WORKFLOW_SAFE_MODE removal lands in one PR. Closing this one.

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

@VaguelySerious