All notable changes to the published pristine runtime package are documented
in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.4.0] - 2026-09-17
Added
- Added opaque
Pristine.Cancellationtokens and a standardized%Pristine.Error{type: :cancelled}terminal error. - Added optional
Pristine.Ports.Transport.capabilities/1andsend_cancelable/3callbacks while keepingsend/2backward compatible. - Added provider-neutral
Pristine.RuntimeCapabilities.transport/1fail-closed capability discovery. - Added cancellation-aware Foundation retry waits and regression tests for token, classifier, capability, retry-delay, and pipeline preflight behavior.
Changed
- Default HTTP result classification treats cancellation as non-retryable with
breaker outcome
:ignore, no limiter backoff, and:cancelledtelemetry. - Cancelable execution never falls back to ordinary transport
send/2. - Built-in Finch supports physical unary cancellation and cleanup through
Execution Plane HTTP 0.2.0 and OTP
:httpc, with real HTTP/1.1 socket coverage for cancellation, normal completion, and caller death. - Cancellation waits for lower execution termination and removes its watcher.
[0.3.1] - 2026-09-17
Fixed
- Require Foundation 0.2.2 for supervised default ETS registries and caller-owned
explicit registries, eliminating transfers to Erlang
:initafter worker exit. - Honor live explicit rate-limit registries without requiring an ETS heir; delegate default-registry ownership/recovery to Foundation instead of creating per-request replacement tables or overwriting Foundation's persistent cache.
- Include runtime guides in the Hex package used to build documentation.
[0.3.0] - 2026-09-16
- Refresh all runtime, optional, and development dependency requirements and the resolved lockfile, including Execution Plane 0.3.0, Bandit 1.12.5, and Mint 1.10.0.
Added
- Optional
retry_budget_msin the Foundation adapter stops before an over-budget delay and preserves the last result. - Zero initial backoff or cap disables backoff while preserving Retry-After.
- Provider-defined HTTP status range overrides through
status_retry_ranges. - Exact status overrides take precedence over ranges; overlapping ranges are rejected.
- Existing provider behavior is unchanged when no ranges are configured.
Changed
- Added
Pristine.GovernedAuthorityand governed credential auth handling so authority-selected HTTP credentials can execute while direct base URLs, headers, auth overrides, and OAuth saved-token sources fail closed in governed mode. - Updated the runtime package source constraint to consume
sinter0.3.2. - Unary HTTP execution now uses the separately published
execution_planeandexecution_plane_httppackages.
[0.2.1] - 2026-04-01
Changed
- Expanded the runtime package docs to clarify auth and token-source behavior for Foundation-backed clients.
Fixed
- Synchronized the package changelog with the
0.2.1runtime release metadata.
[0.2.0] - 2026-03-27
Added
- Added the client and operation-centered runtime surface around
Pristine.Client,Pristine.Operation,Pristine.Response, and the SDK-facingPristine.SDK.OpenAPI.Clienthelpers. - Added package-local guides, examples, docs assets, and HexDocs structure for the published runtime package.
- Added
Pristine.SDK.ProviderProfileand the request-spec execution boundary used by generated provider SDKs.
Changed
- Rebuilt the runtime around explicit request, endpoint metadata, and adapter contracts while keeping Foundation-backed execution as the recommended production profile.
- Moved the runtime into
apps/pristine_runtimeas the published package boundary inside the monorepo.
Fixed
- Improved HTTP result classification and retry behavior.
- Handled OAuth error payloads returned inside HTTP 2xx responses.