Version Compatibility
This page is the canonical compatibility and release-authority contract for the Durable Workflow public platform. It is the single source of truth for:
- which surfaces are public,
- the stability level of each public surface,
- which changes may ship in a patch, minor, or major release,
- whether a given field is part of the contract or is diagnostic-only,
- and the runtime version-negotiation protocol clients use to fail closed when the server advertises a surface they cannot speak.
Per-package stability documents (for example docs/api-stability.md in the
durable-workflow/workflow repository, the dw CLI reference, the Waterline
operator API page) are downstream of this page. They add per-package
detail under these rules; when a per-package document and this page disagree,
this page wins, and the disagreement is a bug in the per-package document.
The same contract is published in machine-readable form so SDKs, server manifests, and CI gates can validate themselves against one source of truth:
surface_stability_contractin the response body ofGET /api/cluster/infoon the standalone Durable Workflow server, schemadurable-workflow.v2.surface-stability.contract, version3.- A frozen mirror of the same manifest in this repository at
static/compatibility-contract.json. - The PHP class
Workflow\V2\Support\SurfaceStabilityContract, which is the in-process source the server re-exports.
A release that changes any surface listed below — its stability level, its field set, its breaking-change rules — must update this page, the JSON mirror, the PHP manifest, and any per-package stability document in the same change. Docs CI validates the machine-readable contract, prerelease artifact guard, released Rust metadata when available, and worker-protocol specs. Editorial alignment between this page and the manifest remains an explicit release-review responsibility.
Companion: Platform Protocol Spec Catalog
This page says which surfaces are public and how they may change. The companion Platform Protocol Specs catalog says where the normative machine-readable specification for each surface lives, which format the spec uses (OpenAPI for HTTP APIs, JSON Schema for object families, AsyncAPI for event-stream semantics), which repository owns the spec, which object families it governs, and which public URL resolves the artifact. SDK authors, agents, and operators should validate against the spec catalog rather than re-reading prose or depending on repository-local implementation details.
The catalog has its own machine-readable mirror at
platform_protocol_specs in GET /api/cluster/info (schema
durable-workflow.v2.platform-protocol-specs.catalog, version 15) and
at the public
JSON catalog.
Every catalog entry's surface_family must exist in the contract above;
docs-site CI validates the catalog, resolves each public spec URL, and rejects
repository-local authority fields.
Every required platform protocol catalog entry is marked published; the
invocable carrier entry remains in_progress. Every available entry links
directly to a public OpenAPI, AsyncAPI, or JSON Schema document. The
cluster_info_envelope
schema pins the discovery surface every other catalog entry can be
reached from.
Stability Levels
Every public surface in Durable Workflow carries exactly one of these stability levels. Levels are explicit; a surface that is not classified is not public.
| Level | Meaning | When breaking changes are allowed |
|---|---|---|
frozen | Wire-format or persisted shape that must decode the same way for the workflow lifetime. Renaming, removing, or repurposing a field is a protocol break, never a minor change. | Only by introducing a parallel primitive with a new type name. The original shape stays decodable indefinitely. |
stable | Public surface covered by the platform semver guarantee. Additive changes ship in minor releases. | Major release only. |
prerelease | Public surface that is feature-complete but still allowed to change before the matching 1.0.0 / 2.0.0 cut. | In clearly labelled prerelease versions; called out in the version-history table on this page. |
experimental | Public-but-unstable surface. May change in any release, including patch releases. Callers must opt in by reading the experimental flag on the surface. | Any release; release notes call out the change. |
Public Surface Families
This is the complete list of public surface families. Adding, removing, or
re-classifying a family requires a contract change (SurfaceStabilityContract
version bump, this page, and the JSON mirror in the same commit).
| Family | Stability | Authority manifest in /api/cluster/info | What it covers |
|---|---|---|---|
server_api | stable | control_plane | Standalone server HTTP API: control-plane routes, namespace routes, schedule routes, system routes, plus /api/health, /api/ready, /api/cluster/info. Per-route version is governed by control_plane.request_contract and control_plane.response.contract. The top-level server version is build identity, not the client compatibility authority. |
worker_protocol | stable | worker_protocol | Worker-plane HTTP API used by external SDK workers to register, poll, heartbeat, manage worker-session leases, complete, and fail workflow, activity, and query tasks. Includes the worker_sessions and local_activities runtime contracts, external_execution_surface_contract, external_executor_config_contract, invocable_carrier_contract, external_task_input_contract, and external_task_result_contract. |
cli_json | stable | n/a (see CLI reference) | The --output=json and --output=jsonl shapes emitted by dw. JSON exit codes and JSON field names are the durable surface; the human-readable --output=table form is documentation, not contract. |
waterline_api | stable | n/a (see Waterline operator API) | Waterline observability HTTP API at /waterline/api/v2/*, the engine-source contract, and the dashboard JSON shapes. Waterline must match the workflow package major version. |
mcp_discovery_results | stable | n/a (see MCP workflows page) | The /mcp/* Model Context Protocol surfaces and the llms.txt / llms-2.0.txt discovery files. MCP tool names, parameter schemas, and payload_preview_limit_bytes semantics are part of the contract; tool descriptions and discovery hints are diagnostic. |
official_sdks | stable | client_compatibility | The first-party SDKs: PHP durable-workflow/sdk, the durable_workflow Python SDK, and the durable-workflow Rust SDK. The dw CLI is the official command client. Each SDK's public surface is governed by its own per-package stability document, which must defer to this page. |
history_event_wire_formats | frozen | n/a (frozen shapes; see workflow docs/api-stability.md) | The persisted shape of every row in workflow_history_events and workflow_schedule_history_events. Once a workflow writes an event, every future SDK that replays it must decode the same field set. |
cluster_info_manifests | stable | surface_stability_contract, client_compatibility, control_plane, worker_protocol, auth_composition_contract, coordination_health | The protocol manifests published by GET /api/cluster/info itself. Each nested manifest carries its own schema and version and evolves under its own contract rules. The envelope keys are stable. |
Per-package stability documents
These documents add per-package detail under the rules on this page:
durable-workflow/workflow(PHP) —docs/api-stability.md. Authoritative for the PHP authoring API, theSupport\*server-facing classes, and the frozen history-event wire-format tables.durable-workflow/sdk(PHP) —README.md. Authoritative for the framework-neutral remote client and worker API distributed from Packagist.durable-workflow/server—README.mdanddocs/contracts/*. Authoritative for the standalone server's request/response contracts.dwCLI —/docs/polyglot/cli-reference. Authoritative for the JSON output shapes and exit codes.- Python SDK —
README.mdindurable-workflow/sdk-python. Authoritative for thedurable_workflowpackage public API. - Rust SDK —
README.mdand[package.metadata.durable-workflow]indurable-workflow/sdk-rust. Authoritative for thedurable-workflowcrate public API and its package compatibility declaration.
Release Rules
These rules apply to every public surface family above. They are reproduced in
the JSON mirror under release_rules.
Patch releases
Allowed:
- bug fixes that preserve the documented contract
- documentation fixes
- dependency bumps that do not change the public surface
- changes to surfaces marked
experimental
Forbidden:
- removing or renaming any
stableorfrozenfield, route, command, or class - narrowing accepted input on any
stableroute or command - changing the meaning of an existing
stablefield
Minor releases
Allowed:
- adding new fields, routes, commands, or classes to a
stablesurface - adding new optional parameters with safe defaults
- adding new capability flags to discovery responses
- promoting a
prereleaseorexperimentalsurface tostable
Forbidden:
- removing or renaming any
stableorfrozenfield, route, command, or class - changing the meaning of an existing
stableorfrozenfield
Major releases
Allowed:
- removing, renaming, or narrowing a
stablesurface - increasing the required
control_plane.versionorworker_protocol.version - dropping a previously supported SDK or CLI version range
Required:
- announce in the version-history table at the bottom of this page at least one minor release before cutting the major
- where feasible, ship the new surface alongside the old surface in a previous minor release so callers can migrate before the major
- document the migration path on the migration guide before publish
Diagnostic-Only Versus Guaranteed Fields
Every field in every stable or frozen surface is either guaranteed or
diagnostic-only. The two have different change rules:
- Guaranteed fields are part of the documented contract. Producers must
keep emitting them in the documented shape; consumers may rely on their
presence and meaning. Removing or renaming a guaranteed field on a
stablesurface is a major change. - Diagnostic-only fields are emitted for human triage, debugging, and
observability. They may be added, renamed, or removed in any minor
release. They must be marked
diagnostic_only: true(or the doc-page equivalent) wherever they are documented. Consumers must not parse, persist, or branch on diagnostic fields in production decision logic.
Unknown additive fields on a stable or frozen shape must be ignored by
older consumers (forward compatibility). Unknown required fields must fail
closed. SDKs and CLIs publish their own forward-compatibility behavior in
their per-package stability documents.
Compatibility Matrix
This is the operational compatibility matrix. It records which client
versions are validated against which server protocol manifests. Components
validate the matrix at runtime via GET /api/cluster/info and fail closed
when the manifests do not agree.
Installable component versions
The generated public release-audit JSON is the current installable artifact authority for Workflow, Server, CLI, the PHP, Python, and Rust SDKs, and Waterline. This page deliberately does not copy that tuple into editorial Markdown. Stable 1.x remains the default public docs line; the 2.0 docs line is explicit prerelease guidance until the release-status cutover is authorized.
Package versions identify builds and distribution channels. Compatibility is governed by the stability families and protocol manifests below, not by assuming that two top-level package versions must match.
Server ↔ SDK / CLI
| Server protocol manifests and request rule | CLI 0.1.x | PHP SDK 0.1.x (1.13) | Python SDK 0.4.x (1.1) | Rust SDK 0.1.x (1.2) |
|---|---|---|---|---|
control_plane.version: "2" + request-contract v1 + advertised worker_protocol.version: "1.13"; worker headers 1.0 through 1.13 accepted | ✅ Compatible (control plane only) | ✅ Compatible | ✅ Compatible | ✅ Compatible |
| Missing or malformed required protocol manifest/header | ❌ Fail closed | ❌ Fail closed | ❌ Fail closed | ❌ Fail closed |
| Different worker-protocol major or worker minor newer than the advertised server minor | n/a | ❌ Fail closed | ❌ Fail closed | ❌ Fail closed |
| Future incompatible control-plane or worker-protocol version | ❌ Breaking | ❌ Breaking | ❌ Breaking | ❌ Breaking |
For server 0.2.x, the worker compatibility authority is the advertised
worker_protocol.version, not the server patch number. If the server
advertises 1.N, it accepts an incoming
X-Durable-Workflow-Protocol-Version: 1.M only when M is less than or equal
to N. It returns its advertised 1.N in the response header and body; it
does not echo the worker's older version. Missing or malformed headers,
different majors, and worker minors ahead of the server fail closed.
The current 0.2.x server advertises 1.13, so its accepted request window is
1.0 through 1.13. That includes the Rust 0.1.x header 1.2 as well as
the Python 0.4.x header 1.1. The Rust package's >=0.2,<0.3 server range
selects the server release family; at runtime, the server must also advertise
worker protocol 1.2 or newer in the 1.x major. An older 0.2.x server
that advertises 1.0 or 1.1 rejects Rust 0.1.x rather than silently
weakening the protocol contract.
The top-level server version from /api/cluster/info is build identity,
not the client compatibility authority. Clients must use the protocol
manifests advertised by /api/cluster/info:
control_plane.versioncontrol_plane.request_contract.schemaandversionworker_protocol.versionfor worker SDKsclient_compatibility.authority: "protocol_manifests"surface_stability_contract.schema: "durable-workflow.v2.surface-stability.contract"
Workflow Package ↔ Waterline
| Workflow Version | Waterline 1.x | Waterline 2.x |
|---|---|---|
| 1.x | ✅ Compatible | ❌ Not compatible |
| 2.x | ❌ Not compatible | ✅ Compatible |
Waterline versions must match the workflow package major version.
Runtime Validation
CLI
The CLI validates the control-plane protocol manifest on first invocation per session:
$ dw server:health
Server compatibility error: unsupported control_plane.version [3]; dw CLI 0.1.x requires control_plane.version 2.
Compatibility checks are cached per CLI invocation. Starting a new CLI command re-validates.
Python SDK
The Python SDK validates protocol manifests when workers register:
from durable_workflow import Client, Worker
client = Client("http://server:8080", token="...", namespace="default")
worker = Worker(client, task_queue="default", workflows=[...])
await worker.run() # Validates protocol manifests before registering
If incompatible:
RuntimeError: Server compatibility error: incompatible worker_protocol.version '2.0'; sdk-python requires major-equal and minor>='1.1'.
Rust SDK
Rust SDK 0.1.x sends worker protocol header 1.2 and control-plane header
2. It is compatible with server 0.2.x only when discovery advertises
control plane 2 and worker protocol 1.N with N >= 2. A current server
advertising 1.13 accepts the Rust header and responds with 1.13. Missing,
malformed, different-major, and ahead-of-server versions are rejected.
Server
The server returns its protocol manifests, the surface-stability contract,
and the compatibility policy in GET /api/cluster/info:
{
"version": "2.0.0",
"supported_sdk_versions": {
"php": ">=1.0",
"python": ">=0.2,<1.0",
"rust": ">=0.1,<1.0",
"cli": ">=0.1,<1.0"
},
"client_compatibility": {
"schema": "durable-workflow.v2.client-compatibility",
"version": 1,
"authority": "protocol_manifests",
"top_level_version_role": "informational",
"fail_closed": true
},
"surface_stability_contract": {
"schema": "durable-workflow.v2.surface-stability.contract",
"version": 3,
"authority_url": "https://durable-workflow.github.io/docs/2.0/compatibility"
},
"control_plane": {
"version": "2",
"request_contract": {
"schema": "durable-workflow.v2.control-plane-request.contract",
"version": 1
}
},
"worker_protocol": {
"version": "1.13"
}
}
The full surface_stability_contract body lists every public surface family,
its stability level, and the patch/minor/major release rules. Clients and
release-check tooling can consume the same manifest the docs build consumes.
Upgrading
Minor Version Upgrades (0.1.8 → 0.1.9, 2.0.0 → 2.0.1)
Minor versions are backward-compatible within the same major version:
- Server: Upgrade without client changes
- CLI: Upgrade independently
- Python SDK: Upgrade independently
- Rust SDK: Upgrade independently within the discovered protocol window
Example: a server 0.2.x release advertising worker protocol 1.13 works
with CLI 0.1.x, Python SDK 0.4.x, and Rust SDK 0.1.x when it advertises
the protocol manifests listed above.
Major Version Upgrades (2.x → 3.x)
Major version changes may introduce breaking changes:
- Check compatibility matrix (above) for supported version combinations
- Upgrade server first: Deploy new server version
- Validate with one client: Test one CLI command or SDK worker
- Upgrade remaining clients: CLI, SDK, workers
Future major versions (2.x → 3.x): Will require client updates. Version validation will catch incompatibilities and provide clear error messages.
Version Negotiation Protocol
All client-server communication includes protocol version headers:
Control plane (workflow start, describe, signal, query, update):
X-Durable-Workflow-Control-Plane-Version: 2
Worker protocol (task polling, completion; examples by current SDK):
Python SDK 0.4.x: X-Durable-Workflow-Protocol-Version: 1.1
Rust SDK 0.1.x: X-Durable-Workflow-Protocol-Version: 1.2
PHP SDK 0.1.x: X-Durable-Workflow-Protocol-Version: 1.13
The server validates these headers against its advertised version using the same-major, worker-minor-less-than-or-equal rule above. It rejects requests with missing, malformed, or incompatible versions.
Troubleshooting
"Server compatibility error..."
Cause: The server did not advertise the protocol manifest expected by the client.
Fix:
- Check the compatibility matrix above
- Upgrade server or client to compatible protocol versions
- If the server advertises the expected protocol manifests and the client reports incompatibility, file a bug
"Missing X-Durable-Workflow-Protocol-Version header"
Cause: Old client not sending protocol version headers.
Fix: Upgrade CLI to 0.1.0+ or Python SDK to 0.2.0+.
"Control plane version mismatch"
Cause: Server and client disagree on control-plane protocol version.
Fix: Ensure server is 2.x and client is sending version 2 header.
Release Review Checklist
Every release PR must tick the following before tagging. Docs CI checks the
machine-readable contract, prerelease tuple guard, Rust authority, and
worker-protocol specifications. The editorial checks below belong to the
human reviewer; scripts/check-compatibility-authority.js does not validate
this prose or the dated history table.
- Docs authority aligned. This page lists every surface family in
static/compatibility-contract.jsonwith the same stability level. - JSON mirror in sync.
static/compatibility-contract.jsonmatches the manifest emitted byWorkflow\V2\Support\SurfaceStabilityContract(the workflow package contract test pins the manifest shape). - Install docs aligned. The Installation page and any package install snippets do not claim a stability level different from the level this page assigns to the relevant SDK.
- Package metadata aligned.
composer.json/pyproject.toml/package.jsonprerelease tags match thestability_levelfor the SDK family they belong to (e.g.0.xPython and CLI SDKs areprerelease,2.0.xserver and workflow arestable). - Rust protocol authority aligned. The released crate's
[package.metadata.durable-workflow], the Rust guide, compatibility matrix, JSON mirror, and worker OpenAPI describe the same server range, control plane version, worker header, negotiation window, and fail-closed cases. - Version-history aligned. The version-history table below does not introduce stability claims that contradict this page.
Version History
These rows are dated historical snapshots, not the current-version authority. Use the public release-audit JSON for the current artifact tuple.
The standalone PHP SDK first entered that canonical tuple as
durable-workflow/sdk version 0.1.1 on 2026-07-13. Historical rows below
predate the standalone package and therefore describe the embedded Workflow
PHP runtime only.
| Date | Server | CLI | Python SDK | Rust SDK | Workflow | Waterline | Notes |
|---|---|---|---|---|---|---|---|
| 2026-07-13 | 0.2.648 | 0.1.89 | 0.4.98 | 0.1.14 | 2.0.0-alpha.274 | 2.0.0-alpha.130 | Recorded a public release-audit snapshot while stable 1.x remained the default docs line. |
| 2026-07-10 | 0.2.628 | 0.1.86 | 0.4.98 | 0.1.2 | 2.0.0-alpha.262 | 2.0.0-alpha.129 | Platform conformance suite version 29 makes the five published-artifact Rust signals/query cells mandatory, including a valid Avro path, registry checksum provenance, query immutability, and replayed workflow-instance state after a cold worker restart. |
| 2026-07-09 | 0.2.618 | 0.1.86 | 0.4.98 | — | 2.0.0-alpha.259 | 2.0.0-alpha.122 | Platform conformance suite version 28 requires v1-to-v2 rollback evidence to preserve external ready, delayed, and reserved queue state with SQL from one recovery cut, or report the affected executions as unrecoverable. An observed v1.0.77 Watchdog redispatch is a bounded pending-only wake path; retries, timers, and waiting/running work still require their queue or signal state. Recovery manifests record only an APP_KEY secret-manager reference/version, with secrets and recovery credentials separately controlled. |
| 2026-07-09 | 0.2.617 | 0.1.86 | 0.4.98 | — | 2.0.0-alpha.258 | 2.0.0-alpha.122 | Recorded a public release-audit snapshot while stable 1.x remained the default docs line. |
| 2026-07-08 | 0.2.598 | 0.1.86 | 0.4.98 | — | 2.0.0-alpha.251 | 2.0.0-alpha.121 | Recorded a public release-audit snapshot while stable 1.x remained the default docs line. |
| 2026-06-05 | 0.2.341 | 0.1.77 | 0.4.85 | — | 2.0.0-alpha.199 | 2.0.0-alpha.83 | Platform conformance suite version 24 requires worker-versioning cross-language PHP/Python pinning evidence to include worker runtime identities, workflow and run IDs, rollout state, public poll and rollout outcomes, published worker artifact install source and version, and confirmation that no local product source checkout was used. |
| 2026-06-05 | 0.2.341 | 0.1.77 | 0.4.85 | — | 2.0.0-alpha.199 | 2.0.0-alpha.83 | Recorded a verified public release-audit snapshot while stable 1.x remained the default docs line. |
| 2026-06-02 | 0.2.261 | 0.1.75 | 0.4.84 | — | 2.0.0-alpha.193 | 2.0.0-alpha.80 | Platform conformance suite version 20 adds a public worker-versioning evidence shard for published PHP/Python worker protocol client execution, so cross-language build-ID pinning evidence can be recorded without naming runner implementation details. It also publishes suite-versioned public runtime requirement digests for artifact_policy, common_result_evidence, required_matrix, scenario_requirements, and host_runner_contract. |
| 2026-06-02 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 19 adds stable schedules_runtime_contract coverage for published-artifact schedule scenarios, including cron and fixed-rate cadence, public list and describe surfaces, pause/resume/delete controls, missed-fire policy, restart survival, CLI/Python/PHP client paths, cross-language scheduled workflow dispatch, and adversarial schedule inputs. |
| 2026-06-02 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 18 requires prerelease readiness evidence to execute the 2.0 quickstart Laravel branch from live public docs through status=completed and output=Hello, Laravel!, with exact Composer package versions, commands, outputs, and wall-clock timing. |
| 2026-06-02 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 17 requires prerelease readiness evidence to execute the 2.0 quickstart local-server hosting branch from live public docs through an observable completed workflow, with exact artifact versions, commands, outputs, and wall-clock timings. |
| 2026-05-25 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 14 adds stable prerelease_readiness_contract coverage for published-artifact 2.0 readiness across Workflow, Waterline, server, CLI, Python SDK, sample app, public docs, migration, API stability, configuration understandability, and release-channel compatibility. |
| 2026-05-25 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 13 adds stable migration_runtime_contract coverage for published-artifact v1 to v2 migration scenarios, including latest supported v1 state setup, documented migration steps, completed-history replay, in-flight progress, activity retries, schedules, worker registrations, CLI and Waterline visibility, new v2 starts, rollback semantics, and version-skew refusal. |
| 2026-05-24 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 12 adds stable saga_runtime_contract coverage for published-artifact saga compensation scenarios, including forward success, reverse-order compensation after later-step failure, early-step failure, compensation retry idempotence, compensation failure visibility, mid-compensation worker restart, PHP/Python cross-language compensation, typed compensation error round trips, and operator-visible in-progress compensation state. |
| 2026-05-24 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 11 adds stable worker_versioning_runtime_contract coverage for published-artifact worker-versioning scenarios, including build-ID registration, rollout visibility, drain/resume controls, per-run pins, compatible replay routing, no-compatible-worker diagnostics, cross-language PHP/Python pinning, adversarial no-bump behavior, and history API version pins. |
| 2026-05-24 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 10 adds stable search_attribute_runtime_contract coverage for PHP and Python workers, CLI query and error surfaces, Waterline operator visibility, cross-language codec round trips, load and indexing latency, OR/NOT grammar, type safety, namespace isolation, reserved-name refusal, and query injection hardening. |
| 2026-05-20 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 9 requires signal/query published-artifact results to record concrete pinned artifact versions and reject placeholder or unresolved version tokens. |
| 2026-05-20 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 8 publishes the namespace lifecycle cleanup criteria that preserve cross-namespace external payload ownership under a new suite version and pins stable runtime scenario operations and pass_criteria criteria content in the docs-site release check. Later suite versions apply the same append-only release-check model to public runtime requirement digests. |
| 2026-05-20 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 7 adds stable child_workflow_runtime_contract coverage for same-language and cross-language child execution, failure and cancellation propagation, worker-restart replay, concurrent fan-out, and namespace behavior. |
| 2026-05-20 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite version 6 adds stable namespace_runtime_contract published-artifact scenarios for namespace lifecycle cleanup, workflow and worker isolation, CLI and SDK namespace selection, PHP worker task-queue routing, Waterline scoped visibility, Nexus opt-in crossing, reserved-name refusal, and search-attribute value query isolation. |
| 2026-05-19 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Platform conformance suite versions 2-5 update published-artifact conformance: version 2 adds stable signal_query_runtime_contract coverage for PHP and Python workers, cross-language clients, replay timing, terminal-run behavior, malformed payloads, and operator visibility; version 3 adds stable history_replay_bundles runtime scenarios and requires replay coverage for frozen histories, worker restart, adversarial refusal, and in-flight signal timing across official PHP and Python runtimes; version 4 requires completed cleanly runs with replayable declared query handlers to return final query state through every claimed public query surface; version 5 standardizes runtime scenario result statuses as pass, fail, unsupported, not_covered, or runner_blocked and requires every required stable runtime scenario to pass for full conformance. |
| 2026-05-02 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Compatibility-and-release-authority contract published. surface_stability_contract exposed in /api/cluster/info; per-package stability docs reference this page. |
| 2026-04-17 | 2.0.0 | 0.1.0 | 0.2.0 | — | 2.0.0 | 2.0.0 | Compatibility authority moved to protocol manifests |
| 2026-04-15 | 2.0.0 | 0.1.0 | 0.1.0 | — | 2.0.0 | 2.0.0 | Stable release |
See Also
- Server Setup — Deploying the standalone server
- Server API Reference —
GET /api/cluster/infoand the protocol manifests - PHP SDK — PHP client and worker
- Python SDK — Python client and worker
- Rust SDK — Rust client and worker
- CLI — Command-line interface
- Migration Guide — Migrating from v1 to v2
- PHP workflow
docs/api-stability.md— per-package stability for the PHP workflow package