Skip to content

workflow@5.0.0-beta.42

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Aug 18:44
Immutable release. Only release title and notes can be modified.
df1c7f1

@workflow/core@5.0.0-beta.42

  • #3365 7683130 @TooTallNate - Resilient step dispatch: newly created steps are published to the queue in parallel with their step_created event write, with the serialized input carried on the message (stepInput) so the consumer re-ensures the event if the direct write failed transiently — mirroring resilient start (runInput) and resilient hook resume (hookInput). Worlds that enforce the precondition guard keep the sequential create-then-publish dispatch (only sequencing gives the message a happens-after edge over the create's guard verdict); step-dispatch idempotency keys are now step-identity-scoped. Disable via WORKFLOW_RESILIENT_STEP_DISPATCH=0.
  • #3462 9add9d7 @NathanColosimo - Reject compact sparse-array payloads with logical lengths above 100,000 during hydration.
  • #3519 dc85865 @VaguelySerious - Remove the preconditionGuard World capability. A stale replay-context write no longer needs to be rejected: a reader holds a prefix of the log, replay is deterministic on a prefix, and the writer's next write reports the events it was pushed past.
  • #3381 efbc408 @VaguelySerious - Ignore duplicate events that a concurrent replay wrote for an entity the event log already records, instead of failing the run with a corrupted event log
  • #3530 c041d3d @alangenfeld - Retry e2e tests once in CI and surface retried-then-passed tests as flaky in annotations and the PR results comment.
  • #3531 60dd206 @alangenfeld - Fix flaky timing-sensitive tests: stall-proof budgets for the events-consumer deferred-check tests and a sibling-matched budget for the TTL-expiration abort e2e test.
  • #3437 a0ccfe0 @karthikscale3 - Add OTEL telemetry for hook-triggered time-to-resume: workflow.resume.total_ms plus a non-overlapping phase breakdown, on the first durable step after a resume.
  • #3552 3560218 @AndrewBarba - Preserve event-log order when adjacent hook payloads resume independent workflow branches.
  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Require every event id the runtime reads to be a log position. requireEventSlot replaces the lenient decode that returned "no position" for an id that is not a slot.
  • #3519 dc85865 @VaguelySerious - Turn resilient step dispatch off by default. Set WORKFLOW_RESILIENT_STEP_DISPATCH=1 to opt back in.
  • #3479 b589460 @VaguelySerious - Replay-context event writes now always report the log position they replayed from, and the WORKFLOW_PRECONDITION_GUARD flag is removed.
  • #3410 c1a5c74 @alangenfeld - Surface typed terminal errors when stream retention expires.

@workflow/world@5.0.0-beta.27

  • #3390 600b096 @alangenfeld - Add a bounded batch analytics event lookup for enriching canonical event pages.
  • #3365 7683130 @TooTallNate - Resilient step dispatch: newly created steps are published to the queue in parallel with their step_created event write, with the serialized input carried on the message (stepInput) so the consumer re-ensures the event if the direct write failed transiently — mirroring resilient start (runInput) and resilient hook resume (hookInput). Worlds that enforce the precondition guard keep the sequential create-then-publish dispatch (only sequencing gives the message a happens-after edge over the create's guard verdict); step-dispatch idempotency keys are now step-identity-scoped. Disable via WORKFLOW_RESILIENT_STEP_DISPATCH=0.
  • #3519 dc85865 @VaguelySerious - Remove the preconditionGuard World capability. A stale replay-context write no longer needs to be rejected: a reader holds a prefix of the log, replay is deterministic on a prefix, and the writer's next write reports the events it was pushed past.
  • #3381 efbc408 @VaguelySerious - Ignore duplicate events that a concurrent replay wrote for an entity the event log already records, instead of failing the run with a corrupted event log
  • #3437 a0ccfe0 @karthikscale3 - Add OTEL telemetry for hook-triggered time-to-resume: workflow.resume.total_ms plus a non-overlapping phase breakdown, on the first durable step after a resume.
  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Require every event id the runtime reads to be a log position. requireEventSlot replaces the lenient decode that returned "no position" for an id that is not a slot.
  • #3519 dc85865 @VaguelySerious - Slot-numbered event ids are a requirement of the World contract, not a capability. The slotEventIds flag is gone, and the conformance suite now fails a World whose event ids are not positions.
  • #3479 b589460 @VaguelySerious - Replay-context event writes now always report the log position they replayed from, and the WORKFLOW_PRECONDITION_GUARD flag is removed.

@workflow/world-local@5.0.0-beta.36

  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Slot-numbered event ids are a requirement of the World contract, not a capability. The slotEventIds flag is gone, and the conformance suite now fails a World whose event ids are not positions.
  • #3492 0f4b35f @VaguelySerious - Fix CORRUPTED_EVENT_LOG after a hook resume that raced another writer or was interrupted mid-write, and deliver a raced resume exactly once instead of duplicating it or reporting a conflict.

@workflow/world-postgres@5.0.0-beta.34

  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Slot-numbered event ids are a requirement of the World contract, not a capability. The slotEventIds flag is gone, and the conformance suite now fails a World whose event ids are not positions.

@workflow/world-vercel@5.0.0-beta.38

  • #3390 600b096 @alangenfeld - Add a bounded batch analytics event lookup for enriching canonical event pages.
  • #3365 7683130 @TooTallNate - Resilient step dispatch: newly created steps are published to the queue in parallel with their step_created event write, with the serialized input carried on the message (stepInput) so the consumer re-ensures the event if the direct write failed transiently — mirroring resilient start (runInput) and resilient hook resume (hookInput). Worlds that enforce the precondition guard keep the sequential create-then-publish dispatch (only sequencing gives the message a happens-after edge over the create's guard verdict); step-dispatch idempotency keys are now step-identity-scoped. Disable via WORKFLOW_RESILIENT_STEP_DISPATCH=0.
  • #3519 dc85865 @VaguelySerious - Remove the preconditionGuard World capability. A stale replay-context write no longer needs to be rejected: a reader holds a prefix of the log, replay is deterministic on a prefix, and the writer's next write reports the events it was pushed past.
  • #3536 63cc09e @shalabhc - Add the Workflow client version, step-to-step overhead, and active latency optimizations to terminal event-write client spans for service and version latency analysis.
  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Slot-numbered event ids are a requirement of the World contract, not a capability. The slotEventIds flag is gone, and the conformance suite now fails a World whose event ids are not positions.
  • #3479 b589460 @VaguelySerious - Replay-context event writes now always report the log position they replayed from, and the WORKFLOW_PRECONDITION_GUARD flag is removed.
  • #3410 c1a5c74 @alangenfeld - Surface typed terminal errors when stream retention expires.
  • #3504 8d8b7b3 @TooTallNate - Retry 429 (ThrottleError) event writes in-process, honoring the server's Retry-After, bounded by a 30s cumulative wait budget per write. Previously a throttled event write escaped to the queue handler, whose retry directive can be delayed up to ~5 minutes by queue redelivery scheduling.
  • #3452 01991ed @shalabhc - Restore the per-event client span on the WebSocket events transport (WORKFLOW_EVENTS_TRANSPORT=ws), and add a workflow.events.ws.connect span for the handshake. Event write spans now carry workflow.events.transport and workflow.event.type on both transports.

@workflow/world-testing@5.0.0-beta.42

  • #3542 de2a86c @VaguelySerious - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one.
  • #3519 dc85865 @VaguelySerious - Slot-numbered event ids are a requirement of the World contract, not a capability. The slotEventIds flag is gone, and the conformance suite now fails a World whose event ids are not positions.

@workflow/web-shared@5.0.0-beta.42

  • #3295 14b52ac @mitul-s - Replace hard-coded shared observability component styles with Tailwind utilities.
  • #3295 14b52ac @mitul-s - Replace static trace viewer styles with Tailwind theme utilities.
  • #3467 834d1f9 @VaguelySerious - Mark ignored duplicate events in the observability UI and, when the whole event log is loaded, exclude them from derived step status, durations, and trace spans

@workflow/errors@5.0.0-beta.17

  • #3479 b589460 @VaguelySerious - Replay-context event writes now always report the log position they replayed from, and the WORKFLOW_PRECONDITION_GUARD flag is removed.
  • #3410 c1a5c74 @alangenfeld - Surface typed terminal errors when stream retention expires.