From 53d9284f0b5664fcda70660503d71b44830c89c3 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Tue, 22 Sep 2026 14:31:55 +0000 Subject: [PATCH] Upgrade PromptKit and prepare version 0.7.1 --- docs/integrations/pkg-promptkit.md | 36 ++++++++++----- docs/releases/v0.7.1.md | 44 +++++++++++++++++++ go.mod | 6 +-- go.sum | 12 ++--- .../llm/promptkit_profile_fingerprint.go | 2 +- 5 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 docs/releases/v0.7.1.md diff --git a/docs/integrations/pkg-promptkit.md b/docs/integrations/pkg-promptkit.md index 5edcc95f..74042980 100644 --- a/docs/integrations/pkg-promptkit.md +++ b/docs/integrations/pkg-promptkit.md @@ -1,11 +1,11 @@ # PromptKit Integration Notarius pins -[`gitea.maximumdirect.net/eric/promptkit` v0.9.0](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.9.0) +[`gitea.maximumdirect.net/eric/promptkit` v0.10.0](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0) as its in-process prompt engine. The upstream -[Go package consumer guide](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.9.0/docs/consumers/pkg-promptkit.md) +[Go package consumer guide](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0/docs/consumers/pkg-promptkit.md) owns the public engine API, and the upstream -[format reference](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.9.0/docs/formats.md) +[format reference](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0/docs/formats.md) owns prompt, profile, and schema file contracts. ## Supported Boundary @@ -27,7 +27,7 @@ Notarius relies on the root `promptkit` package to: admission exhaustion through `ErrCapacityExceeded`. The pinned -[`BackendLocal`, `LocalBackend`, and `WithBackend` API](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.9.0/backends.go) +[`BackendLocal`, `LocalBackend`, and `WithBackend` API](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0/backends.go) owns the registration and backend-capacity contract. For one completion, the adapter calls `PrepareExecution`, takes a @@ -53,7 +53,7 @@ Notarius sends one stable effective session through PromptKit's direct session field, which is authoritative for provider session behavior. It also retains the same value as the `session_id` prompt variable for maintained prompt compatibility. The generated identifier is 76 ASCII characters, within -PromptKit v0.9.0's 256-code-point session limit. Session IDs are non-secret +PromptKit's 256-code-point session limit. Session IDs are non-secret correlation identifiers and may be exposed to providers and provider observability. The CLI contract owns generation and override behavior. @@ -86,16 +86,16 @@ configuration and deployment workflow are defined in [Operations](../operations.md#promptkit-profile-deployment). PromptKit owns `base_profile` resolution under its -[pinned format rules](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.9.0/docs/formats.md). +[pinned format rules](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0/docs/formats.md). Notarius records the selected leaf identity and resolved target without parsing or merging inheritance. An unset filesystem `api_key_env` is optional and may reach the provider without authorization, which can result in a 401 or 403. -PromptKit v0.9.0 accepts only the `developer`, `system`, `user`, and +PromptKit accepts only the `developer`, `system`, `user`, and `assistant` text-chat roles after normalizing case and surrounding whitespace. Maintained Notarius prompt definitions use only `system` and `user`. -For application-owned semantic correction, Notarius uses PromptKit v0.9.0's +For application-owned semantic correction, Notarius uses PromptKit's `RunRequest.AppendedMessages` after the ordinary rendered prompt. It supplies exactly two messages in order: the latest validated producer response with role `assistant`, then deterministic validation guidance with role `user`. @@ -112,12 +112,28 @@ and terminal summaries retain only safe counts, digests, identities, and usage; complete appended messages remain limited to the explicitly requested detailed debug trace. -PromptKit now obtains its maintained OpenRouter and Rakestrawhome backend and +PromptKit obtains its maintained OpenRouter and Rakestrawhome backend and profile catalogs from independently versioned transitive modules. Notarius does not import or register either catalog; PromptKit retains catalog source, identity, precedence, credential, and capacity ownership. -Notarius supports this boundary against PromptKit v0.9.0. Its fallback source, +External catalog profile names and settings can change between dependency +releases, including removal without aliases. Review directly selected IDs and +inherited `base_profile` values when upgrading. An application-owned alias that +inherits an external profile does not freeze that profile's settings. +PromptKit's opt-in `promptkit-openrouter-standard` and +`promptkit-openrouter-auto` names provide name continuity within its +selected-and-tested dependency scope, not a fixed model or provider availability +guarantee. See the upstream +[catalog compatibility policy](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.10.0/docs/release.md#catalog-profile-compatibility). + +Use a complete operator-owned profile with explicit backend or endpoint, model, +and settings when those choices must remain operator-controlled. The embedded +`dnd-extraction` fallback already follows this model and does not inherit an +external catalog profile. An upgrade updates Notarius's compiled-in catalog +checkpoint identity so prior profile-source checkpoints are not reused. + +Notarius supports this boundary against PromptKit v0.10.0. Its fallback source, prepared-execution, inspection, and typed capacity APIs are used as public upstream contracts; other PromptKit APIs or file-format behavior are not implicitly supported. A dependency upgrade requires reviewing the adapter, diff --git a/docs/releases/v0.7.1.md b/docs/releases/v0.7.1.md new file mode 100644 index 00000000..b81dd114 --- /dev/null +++ b/docs/releases/v0.7.1.md @@ -0,0 +1,44 @@ +# Notarius v0.7.1 + +This release updates the prompt engine and its provider catalogs while retaining +Notarius's application-owned D&D defaults and subprocess contracts. + +## Summary + +- Upgrade PromptKit from v0.9.0 to v0.10.0 and adopt its selected provider catalogs. +- Refresh the profile-source checkpoint identity for the updated catalog. +- Document profile ownership and upstream catalog compatibility. + +## Compatibility + +Notarius's CLI, configuration schema, durable artifact formats, and subprocess +receipt are unchanged. The `dnd-extraction` fallback retains its explicit model +and settings; the upgrade does not switch it to an upstream default profile. + +Upstream catalog selections require review: `deepseek-3-2`, `deepseek-4-flash`, +and `deepseek-4-pro` are no longer present. Operators selecting or inheriting +those profiles must supply a complete operator-owned definition or select an +available profile. `deepseek-flash-latest` and `deepseek-pro-latest` are not +equivalent aliases and need not preserve previous settings. See the +[PromptKit integration contract](../integrations/pkg-promptkit.md#profile-sources-and-compatibility). + +Existing checkpoints with the previous profile-source identity are not reused. +Source-keyed chunk plans and existing output artifacts are unaffected. + +## Upgrade + +Review selected LLM profile IDs and inherited bases before rebuilding from this +tag. No Notarius configuration migration is required for the maintained examples +or application-owned D&D defaults. For controlled model settings, use a complete +[operator profile](../config.md#promptkit-profiles), rather than inheriting a +volatile catalog entry. Follow the [source release procedure](../release.md) +for source installation and verification. + +## Changes + +- PromptKit v0.10.0 preserves the public engine API and adds two opt-in maintained + profile names; Notarius continues using its existing adapter and defaults. +- The dependency graph selects OpenRouter catalog v2.20260922.1 and Rakestrawhome + catalog v2.20260922.0. +- Profile checkpoint fingerprinting and current integration documentation now + identify the updated engine. diff --git a/go.mod b/go.mod index ea381948..b83f898d 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.25.5 require ( gitea.maximumdirect.net/eric/ConfigKit v0.3.0 - gitea.maximumdirect.net/eric/promptkit v0.9.0 + gitea.maximumdirect.net/eric/promptkit v0.10.0 github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -12,7 +12,7 @@ require ( require golang.org/x/text v0.40.0 require ( - gitea.maximumdirect.net/eric/promptkit-backend-openrouter v1.0.0 // indirect - gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome v1.0.0 // indirect + gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v2 v2.20260922.1 // indirect + gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v2 v2.20260922.0 // indirect go.yaml.in/yaml/v4 v4.0.0-rc.6 // indirect ) diff --git a/go.sum b/go.sum index 1ae97b89..6068ff26 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,11 @@ gitea.maximumdirect.net/eric/ConfigKit v0.3.0 h1:LgXEUjR0KsgwGBznOWa8FJTQ+iElctHtI1via5vKdu4= gitea.maximumdirect.net/eric/ConfigKit v0.3.0/go.mod h1:tYWpsrbLyu05r8+1MapWp5fN6ZrX9I8hU2xEPedYmYk= -gitea.maximumdirect.net/eric/promptkit v0.9.0 h1:IpvDRC8L6xRxQ9hpuyKOmMc5b6MeLTKYyx+h1YAjy08= -gitea.maximumdirect.net/eric/promptkit v0.9.0/go.mod h1:oMJ/WUJImUtwJ5e+6MAGECPYAErAkOaKel0G+3T/b4E= -gitea.maximumdirect.net/eric/promptkit-backend-openrouter v1.0.0 h1:lc062euk2qseO//D762i3JaFyulDNML3eQQX7DkYTho= -gitea.maximumdirect.net/eric/promptkit-backend-openrouter v1.0.0/go.mod h1:AIa7kAu2mfrRQgcspe4L+DW51WqgnALQT60lqkEywJI= -gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome v1.0.0 h1:j9YY7wsTVjzke2kHH4YAzpU0oUpM+x+nXwl1IeS+2eg= -gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome v1.0.0/go.mod h1:4RNS+LILDg4JbS4Ts9Lwy1C92wauXJIbeQaalps4Koo= +gitea.maximumdirect.net/eric/promptkit v0.10.0 h1:Nyi+YbqvO7tkRjen+Opc79wuzuKIIwcSfkriixPPwrE= +gitea.maximumdirect.net/eric/promptkit v0.10.0/go.mod h1:0zEBVlJJC+ldDdXazAgybYBXNSe74vwFx5dyOuSos/w= +gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v2 v2.20260922.1 h1:S2/Q/JDE+m8Ca3pDhAjVbfYrdlEhs9blj0STgNopHo0= +gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v2 v2.20260922.1/go.mod h1:a3VBbh9oaGXD6ruxhtwHj+AWW6DY/SSyby1QtMmYSUo= +gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v2 v2.20260922.0 h1:Y0EXc3eh12eKW2NrOviVqdk3oBo6UUjopt1YAa1B3Oc= +gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v2 v2.20260922.0/go.mod h1:mtgD1E0SGm0e/I8Ffhz+AYX7GN7RKUWJXehNFIKHs4Y= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= diff --git a/internal/framework/llm/promptkit_profile_fingerprint.go b/internal/framework/llm/promptkit_profile_fingerprint.go index 08f7d0ee..621ea072 100644 --- a/internal/framework/llm/promptkit_profile_fingerprint.go +++ b/internal/framework/llm/promptkit_profile_fingerprint.go @@ -17,7 +17,7 @@ const ( promptKitLocalBackendMarker = "notarius:promptkit-local-backend:v1" // The built-in profile catalog is compiled into this pinned PromptKit // release. Update this identity when the dependency is upgraded. - promptKitBuiltinProfileCatalogID = "promptkit:v0.9.0:builtin-profiles" + promptKitBuiltinProfileCatalogID = "promptkit:v0.10.0:builtin-profiles" ) func promptKitProfileFingerprint(profileDir, profileFile, fallbackProfileDigest string) (CheckpointFingerprint, error) {