durable-workflow 2.0.0

First-party Rust SDK for Durable Workflow workers and clients
Documentation
# Changelog

## 2.0.0

- Publish the stable Rust SDK qualified against the immutable Server `2.0.0`
  artifact.

## 2.0.0-rc.39

- Qualify this prerelease against the immutable Server `2.0.0-rc.68` artifact
  exactly.

## 2.0.0-rc.38

- Qualify this prerelease against the immutable Server `2.0.0-rc.57` artifact
  exactly.

## 2.0.0-rc.37

- Qualify this prerelease against the immutable Server `2.0.0-rc.56` artifact
  exactly.

## 2.0.0-rc.36

- Qualify this prerelease against the final Server `2.0.0-rc.55` artifact
  exactly.

## 2.0.0-rc.35

- Explicitly refuse local activities, worker sessions, and sticky execution in
  the worker capability manifest until the Rust runtime implements those
  protocol 1.18 contracts.
- Add persisted first-completion selection across activities, child workflows,
  durable timers, signal waits, condition waits, and nested parallel groups.
  Server commits one stable keyed winner while non-winning operations continue
  and remain available for later awaiting or explicit cancellation.
- Replay the committed winner independently of later terminal-history order and
  preserve typed results and failures across cold worker replacement.
- Advance the worker protocol to `1.19` and advertise durable selection during
  high-level worker registration.
- Qualify this prerelease against the synchronized Server `2.0.0-rc.51`
  artifact exactly.

## 2.0.0-rc.34

- Require the current release entry to be present in the source commit before
  tagging or generated-reference deployment can authorize it.
- Verify the packaged release entry and VCS identity before publication, then
  verify the downloaded registry archive against the authorized package.
- Restore `apache-avro` as the authoritative outbound datum encoder while
  retaining canonical string-map order, the fixed single-object frame, typed
  value identity, and the existing cross-language protocol bytes.
- Preserve one-to-one authored condition-wait occurrences with an explicit
  deterministic identity. Adjacent waits at the same call site now replay
  independently, while signal- and update-driven physical re-evaluations keep
  the identity of their open wait and continue to replay as one occurrence.
- Require Server `>=2.0.0-rc.50,<2.0.0`, the first release line that preserves
  condition-wait occurrence identity throughout open, terminal, and timeout
  history.
- Advance the worker protocol to `1.17` and advertise condition-wait occurrence
  identity, memo upserts, and typed search attributes explicitly from
  high-level worker registration.
- Add `WorkflowContext::message_stream` for ordered bounded consumption of
  named repeated input. Runtime-owned cursor and wait metadata survives replay,
  worker replacement, server restart, duplicates, and continue-as-new while
  preserving exact Avro payload values.

## 2.0.0-rc.33

- Added `WorkflowContext::upsert_memo` with bounded canonical Avro map patches,
  `MemoUpserted` replay identity, opaque payload-envelope transport, and a
  fail-closed runtime capability check before worker-task completion. Replay
  identity compares double bit patterns, including the sign of zero.
- Add Serde-typed workflow, replayed-workflow, and activity handler adapters
  over the fixed Avro Value protocol, with typed activity calls and workflow
  results.
- Add typed run-scoped Workflow Stream list, describe, resumable subscribe,
  append, close, and errored lifecycle operations, including replay-stable
  workflow-command authoring identity and opaque external payload references.
- Add deterministic `WorkflowContext::parallel` / `join` composition for
  nested activity, child-workflow, timer, and mixed groups. Results retain the
  input shape and order; typed partial failures retain member paths, shared
  protocol metadata, causes, and completed siblings across restart and replay.
- Add `WorkflowContext::saga` with deterministic reverse-order activity
  compensation after failure or cooperative cancellation. Compensation
  failures preserve both the initiating and compensation errors.
- Preserve canonical declared search-attribute types in worker commands and
  replay identity, including deterministic same-value type mismatch detection
  and value-only compatibility for legacy history without type metadata.
  Require Server `>=2.0.0-rc.47,<2.0.0`, the first release line that supports
  worker protocol `1.16`.
- Add deterministic durable condition waits with typed satisfied/timed-out
  results, signal/update re-evaluation, timeout preservation, and definition
  drift detection across replay and restarts.
- Add validated typed workflow search-attribute updates on the public worker
  protocol and consume their committed mutations during replay.
- Ship a standalone, task-oriented condition and operator-metadata example in
  the generated Rust guidance.

## 2.0.0-rc.32

- Require an explicit string `payload_codec="avro"` on polled workflow,
  activity, and query tasks. Missing, null, and non-string declarations now
  produce a controlled `unsupported_payload_codec` task failure before handler
  execution.

## 2.0.0-rc.31

- Reject non-Avro and malformed payload envelopes across workflow, activity,
  query, replay, and outbound command boundaries before handlers or transport
  shortcuts can produce unrelated outcomes.
- Require centrally approved immutable GitHub Action commits before target
  branch qualification can pass.
- Keep dependency resolution compatible with the declared Rust 1.86 minimum.
- Align the crate README and generated API reference with the general-first
  install, local Server, API reference, and SDK-guide journey. Keep Cloud
  discoverable as a secondary limited early-access deployment path.
- Qualify the documentation hierarchy in source, generated rustdoc, and the
  packaged crate without binding the checks to Markdown prose or layout.

## 2.0.0-rc.30

- Remove the JSON payload-codecs feature and make the fixed typed Avro Value
  schema with single-object framing the only public payload codec.
- Reject JSON-tagged and unknown payload envelopes without transcoding or
  codec inference, qualified against Server `2.0.0-rc.32`.
- Replace exact prerelease pins and Cloud-first documentation with account-free
  Rust SDK onboarding through the public qualified versionless installer;
  Cloud remains available as a clearly labeled limited early-access path.

## 2.0.0-rc.12

- Add the initial task-oriented Rust documentation landing page and generated
  API reference navigation. The current general-first hierarchy is described
  in the `2.0.0-rc.31` entry.
- Let the released `hello_world` example accept separate client and worker
  credentials for one namespace-scoped Cloud runtime URL.
- Retain the qualified Server baseline at `2.0.0-rc.17` under the additive
  `>=2.0.0-rc.17,<2.0.0` compatibility range.

## 2.0.0-rc.11

- Reject unsupported update-validator declarations from the public low-level
  worker registration API before transport while preserving query and update
  handler contracts.
- Retain the qualified Server baseline at `2.0.0-rc.17` under the additive
  `>=2.0.0-rc.17,<2.0.0` compatibility range.

## 2.0.0-rc.10

- Declare the absence of an update-validator authoring surface in registered
  workflow contracts so Server discovery does not infer validator parity.
- Preserve the additive `>=2.0.0-rc.17,<2.0.0` protocol compatibility range.

## 2.0.0-rc.9

- Correct every shipped example to pass a Server origin or path-prefixed Cloud
  runtime URL without the SDK-owned `/api` suffix.
- Qualify the base-URL contract across all example sources and their rendered
  Rust documentation before publication.

## 2.0.0-rc.8

- Gracefully deregister successful worker registrations after all managed
  pollers have joined, while preserving both work-processing and cleanup errors.
- Add the typed worker-plane deregistration client operation and keep it
  separate from operator worker management.
- Enforce least-privilege token selection between worker, control, and shared
  credentials.
- Support Server `>=2.0.0-rc.17,<2.0.0` under the advertised protocol contract.