The Wire · Showcase
WORKFLOW FIXES CORRUPTED EVENT LOG RACE CONDITION WHILE NEXT.JS ROLLS OUT RDC COMPRESSION
By RepoJournal · Filed · About Vercel
Workflow patched a critical event-log corruption bug in hook-resume staging that could lose data under concurrent replays, while Next.js adds controlled rollout flags for Resume Data Cache compression.
The Workflow team shipped three fixes to `@workflow/world-local` addressing a data corruption issue where `hook_received` events staged under `.locks` could collide on event id alone, causing writers to bump to the wrong slot under the new slot-event-id system [1]. Alongside this, every replay-context write now reports the log position it was computed against, replacing the ULID-era snapshot triple that previously carried this signal [2]. The team also deployed hooks-triggered time-to-resume observability with phase-level breakdown across producer prep, queue delivery, resume setup, replay, and step dispatch [3], and changed duplicate event handling to ignore stale replays per event class instead of failing the entire run [4].
Next.js addressed RDC compression rollout with `experimental.disableResumeDataCacheCompression` as an opt-in flag to preserve raw JSON during controlled minimal-mode testing [5], while fixing a regression where Turbopack was adding `crossorigin=""` to script tags when crossOrigin wasn't configured [6]. The Pages Router gained support for preserving custom 404 and 500 entries during selective `--debug-build-paths` builds [7], and `headers()` was restored to reflect the live incoming request after internal stripping logic left it detached [8].
AI SDK removed the deprecated `@ai-sdk/vercel` provider, fixed OTEL span attributes to omit non-finite numbers that JSON cannot serialize [9], and corrected chat request resolution when onFinish callbacks throw [10]. Eve released the Buzz ACP adapter for compatibility with local agent deployments [11] and shipped the complete instrumentation provider layout with durable tracing across channel deliveries, runtime actions, and provider event capture policies [12].
One email a day. Unsubscribe in one click.
Keep up with Vercel in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review Workflow event-log fixes [ref:1] before next deployment if using hook-resume with concurrent replays vercel/workflow [plan]
- → Test RDC compression rollout with new disableResumeDataCacheCompression flag before production upgrade vercel/next.js [plan]
- → Upgrade AI SDK to pick up OTEL and onFinish callback fixes if streaming structured outputs vercel/ai [monitor]
- → Check Eve instrumentation providers docs if deploying observability agents with custom metadata policies vercel/eve [monitor]
References
- [1] [world-local] Fix CORRUPTED_EVENT_LOG from hook-resume staging slot holes ↗ vercel/workflow
- [2] [core] Report the replay position on every event write ↗ vercel/workflow
- [3] feat(core): measure hook-triggered time to resume ↗ vercel/workflow
- [4] [core] Ignore duplicate events per event class instead of failing the run ↗ vercel/workflow
- [5] Add RDC compression rollout controls (#97247) vercel/next.js
- [6] Fix unset crossOrigin in Turbopack manifests ↗ vercel/next.js
- [7] Fix debug build paths Pages Router support entries ↗ vercel/next.js
- [8] Restore the live `headers()` view of the incoming request ↗ vercel/next.js
- [9] fix(otel): omit non-finite numeric span attributes (#18808) vercel/ai
- [10] fix: Chat requests resolve when onFinish throws (#18755) vercel/ai
- [11] @eve/buzz-acp-adapter@0.0.1 ↗ vercel/eve
- [12] feat(eve): add the instrumentation provider layout ↗ vercel/eve