diff --git a/docs/releases/v0.19.0.md b/docs/releases/v0.19.0.md new file mode 100644 index 0000000..ed5564e --- /dev/null +++ b/docs/releases/v0.19.0.md @@ -0,0 +1,80 @@ +# Promptkit v0.19.0 + +This release completes two rounds of audit remediation, correcting error and +diagnostic reporting and simplifying configuration, validation, and value +ownership. It includes intentional compatibility changes for custom artifact +readers, programmatic configuration sources, and schemas. The minimum supported +Go version remains 1.27.0; ConfigKit remains at v1.1.0. + +## Compatibility And Upgrade + +Consumers upgrading from v0.18.0 should review these changes: + +- A successful `ArtifactReader.Read` transfers ownership of the returned + artifact and its mutable body storage to Promptkit. Custom readers must stop + mutating returned values through retained aliases. Readers that reuse scratch + buffers must return independent storage. Promptkit retains its defensive + body copy, but that copy does not make concurrent buffer reuse safe. See the + [extension guidance](../consumers/pkg-promptkit.md#extension-interfaces). +- Provider maps passed through `ProfileSource` and `BackendSource` now use + ConfigKit's native Mapping input forms directly: built-in scalars, `[]any`, + and `map[string]any` recursively. Convert `json.Number` and typed containers + explicitly to supported values, choosing numeric precision appropriate to + the application. The former recursive compatibility conversion is removed. + Runtime execution overrides retain their separate accepted-value behavior. +- Schemas used for local validation and native structured output must be + self-contained. Move externally referenced definitions into the root document + and use internal references or explicit schema IDs. References requiring + another file or network resource, or relying on the source filename as a base, + fail during preparation. Promptkit does not bundle external schemas. See the + [schema reference](../formats.md#schemas). + +Prepared schemas no longer inherit the depth and node limits used when copying +runtime provider values. Schemas previously rejected solely by those incidental +limits may now be accepted; decoder/compiler checks and the self-contained +schema requirement still apply. + +No configuration-format migration is required from v0.18.0. After addressing +any affected integrations: + +```sh +go get go.maximumdirect.net/promptkit@v0.19.0 +``` + +## Errors And Diagnostics + +Public errors and terminal observations now preserve the category of the +operation that failed even when an injected collaborator returns an error from +another Promptkit operation. Underlying causes remain available through +`errors.Is` and `errors.As`, without repeatedly duplicating nested cause trees. + +Built-in generation preserves response-body read failures separately from +malformed response content, and failures during request preparation are +distinguished from dispatched attempts. + +OpenRouter authentication diagnostics bound response recognition to 1 MiB. +An oversized HTTP 200 response reports +`SmokeTestReasonAuthenticationResponseLimitExceeded`, leaving credential +acceptance unknown. Cancellation during the read remains an interruption. +Consumers that enumerate diagnostic reasons should handle the new reason; +see the [diagnostic integration contract](../integrations/openai-compatible-chat.md#explicit-smoke-diagnostics). + +## Internal Simplification And Ownership + +Prompt lookup and rendering now consistently use captured configuration, and +smoke syntax and schema checks share the prepared output-validation lifecycle. +Unused routing defaults, alternate private workflows, and duplicate wire +representations have been removed. + +Provider-setting resolution, inspection, prepared details, and smoke reports +avoid redundant validation and copying of already accepted values. Prepared +execution shares one private redacted metadata snapshot while preserving +independent caller-visible values. Provider values are detached before custom +JSON encoders run, protecting retained metadata from encoder-side mutation. + +Requirement analysis, namespace-filtered listings, and repair-feedback +construction also avoid unnecessary traversal and temporary allocation. These +changes preserve existing request isolation and execution behavior without +introducing new performance guarantees. + +[COPYRIGHT](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.19.0/COPYRIGHT) | [LICENSE](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.19.0/LICENSE) | [ATTRIBUTION](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.19.0/docs/oss/attribution.md)