diff --git a/README.md b/README.md index 02b5bdc..73da77f 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,11 @@ boundary and constraints that framework work must preserve. ## Release Guidance +The [v0.16.0 release notes](docs/releases/v0.16.0.md) cover explicit smoke +diagnostics, configuration collections, scoped engine views, and discovery. +Upgrading consumers should review the breaking changes to bundled configuration +and prompt version selection and follow the linked migration guide. + The [v0.15.0 release notes](docs/releases/v0.15.0.md) cover error-only validation of concrete requests with `Engine.ValidateRequest`. diff --git a/docs/releases/v0.16.0.md b/docs/releases/v0.16.0.md new file mode 100644 index 0000000..fb43eb1 --- /dev/null +++ b/docs/releases/v0.16.0.md @@ -0,0 +1,86 @@ +# Promptkit v0.16.0 + +This release adds explicit smoke diagnostics, configuration collections, +namespace-scoped engine views, and expanded resource discovery. It also makes +intentional breaking changes to configuration ownership and prompt selection. +The minimum supported Go version remains 1.26.0. + +## Configuration Collections And Discovery + +Applications can compose caller-selected collections of backends, profiles, +and prompts. Collection resources have qualified identities such as +`support/answer`; root resources retain unqualified identities. `CollectionInput` +provides a convenience for mounting a selected ConfigKit input into a collection. +Promptkit now uses ConfigKit v0.8.0, including its optional source specification +header support. + +`Engine.WithNamespaces` creates an immutable view with separate prompt, profile, +and backend scopes for short caller-supplied IDs. Views share the underlying +configuration, clients, capacity pools, and prepared-execution owner. Explicitly +qualified IDs and configured references keep their exact identities. + +`ListProfiles` and `ListPrompts` support namespace filters. New `ListBackends`, +`ListNamespaces`, and `ListCollections` methods expose captured resource and +collection inventories. See the [collection format](../formats.md#source-headers-collections-and-resource-ids), +[scoped-view guide](../consumers/pkg-promptkit.md#use-scoped-engine-views), and +[discovery guide](../consumers/pkg-promptkit.md#discover-available-resources-and-collections). + +## Explicit Smoke Diagnostics + +`Engine.SmokeTest` provides backend reachability, authentication, text inference, +and structured-output inference diagnostics. Reports provide factual +observations, timing, and available usage rather than an overall readiness +verdict. Optional Boolean facts distinguish negative observations from unknown +or inapplicable checks; matching a JSON schema does not prove that a provider +enforced it. + +A concluded diagnostic can report failure with a nil Go error. Invalid requests +return ordinary errors, and caller cancellation can return partial observations +with a recognizable context error. Diagnostics can contact providers and incur +inference costs only when explicitly invoked; they are not automatic execution +or release checks. See the [smoke diagnostic guide](../consumers/pkg-promptkit.md#run-explicit-smoke-diagnostics) +and [API GoDoc](../../smoke_diagnostics.go). + +## Breaking Changes And Upgrade + +Consumers upgrading from v0.15.0 should follow the +[configuration and API migration guide](../consumers/configuration-migration.md): + +- Supply backend and profile definitions explicitly. Promptkit no longer bundles + provider catalogs or the `promptkit-openrouter-standard` and + `promptkit-openrouter-auto` profiles. Conventional backend names do not install + definitions automatically. Applications choose and maintain their sources. +- Convert version-keyed prompt mappings into one definition per prompt ID. + Prompt `version` is now an optional descriptive label, not a selector. + Choose deliberately which former definition to install. +- Remove `PromptVersion` selectors from `RunRequest`, + `RequirementInspectionRequest`, and `SmokeTestRequest`, where applicable. + Change prompt inspection calls to `InspectPrompt(ctx, promptID)`. Update code + consuming version-bearing inspection, identity, result, or observation fields + to handle optional labels, including nil and explicitly empty labels. +- When moving resources into collections, update stored backend, profile, and + diagnostic-default references to their intended qualified IDs. Mounting a + source does not rewrite references; profile inheritance remains within its + sibling mapping. Root configuration `version`, when supplied, is now a source + specification header, distinct from descriptive resource labels. + +The migration guide includes identity mappings and before/after prompt examples. +The [maintained offline example](../../examples/go-library/prepare/main.go) +demonstrates explicit composition, source-relative content, scoped preparation, +and inventory without contacting a provider. + +After adapting configuration and API calls: + +```sh +go get gitea.maximumdirect.net/eric/promptkit@v0.16.0 +``` + +## Correctness And Efficiency + +Collection prompt materialization shares one lazy origin-metadata snapshot, +avoiding repeated full metadata copies across collections. Internal prepared +snapshots detach optional prompt labels. Smoke diagnostics preserve caller +cancellation and report actual inference destinations and known-zero usage when +no generation request was dispatched. + +[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.16.0/COPYRIGHT) | [LICENSE](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.16.0/LICENSE) | [ATTRIBUTION](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.16.0/docs/oss/attribution.md)