Adopt tagged diagnostic catalogs

This commit is contained in:
2026-10-13 16:28:41 +00:00
parent 7291d23587
commit b9c232ee63
8 changed files with 89 additions and 21 deletions

View File

@@ -312,8 +312,8 @@ cross-version compatibility boundary.
The selected catalog modules, not this document, own their profile inventories:
- [OpenRouter catalog v3.20260930.0 profiles](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/tag/v3.20260930.0/catalog/profiles)
- [Rakestrawhome catalog v3.20260930.0 profiles](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/tag/v3.20260930.0/catalog/profiles)
- [OpenRouter catalog v3.20261013.0 profiles](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/tag/v3.20261013.0/catalog/profiles)
- [Rakestrawhome catalog v3.20261013.0 profiles](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/tag/v3.20261013.0/catalog/profiles)
These are tested local data, not a promise of live provider availability.
The [release policy](policy/release.md#catalog-profile-compatibility) owns

View File

@@ -114,10 +114,12 @@ change rendering behavior.
## Profiles And Built-Ins
`internal/catalog` selects the released keyed OpenRouter and Rakestrawhome
assets as one ConfigKit underlay and PromptKit-owned profiles as the next.
It discovers YAML inputs and supplies passive filesystem context without
parsing or pre-validating catalog definitions. The configuration loader
`internal/catalog` selects the tagged OpenRouter `v3.20261013.0` and
Rakestrawhome `v3.20261013.0` assets as one ConfigKit underlay and PromptKit-owned
profiles as the next. The selected catalog tags are local candidates and may not
be publicly available. It discovers YAML inputs, including each catalog's
opt-in diagnostic root, and supplies passive filesystem context without parsing
or pre-validating catalog definitions. The configuration loader
validates only the final effective backend and profile values, including
consumer overlays of maintained bases or backends. There is no catalog-only
preflight, reserved source namespace, or replay of backend registration.

View File

@@ -41,32 +41,32 @@ License and notices: [LGPL 3.0](../../LICENSE) |
## Promptkit OpenRouter Catalog v3
Selected module: `gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3`
at `v3.20260930.0`.
at `v3.20261013.0`.
Copyright (C) 2026 Eric Rakestraw
SPDX-License-Identifier: MIT
License and notices: [MIT](licenses/MIT.txt) |
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/f17d208cb7ad1fb043cda2266cd3011d11b40aa0/COPYRIGHT) |
[LICENSE](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/f17d208cb7ad1fb043cda2266cd3011d11b40aa0/LICENSE).
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/2a69672b1bb220f1a730153341470f5ac67e15f4/COPYRIGHT) |
[LICENSE](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/2a69672b1bb220f1a730153341470f5ac67e15f4/LICENSE).
[Source](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/f17d208cb7ad1fb043cda2266cd3011d11b40aa0).
[Source](https://gitea.maximumdirect.net/eric/promptkit-backend-openrouter/src/commit/2a69672b1bb220f1a730153341470f5ac67e15f4).
## Promptkit Rakestrawhome Catalog v3
Selected module: `gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3`
at `v3.20260930.0`.
at `v3.20261013.0`.
Copyright (C) 2026 Eric Rakestraw
SPDX-License-Identifier: MIT
License and notices: [MIT](licenses/MIT.txt) |
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/993443d88c451901f4c917fa00c204fd3b54d28d/COPYRIGHT) |
[LICENSE](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/993443d88c451901f4c917fa00c204fd3b54d28d/LICENSE).
[COPYRIGHT](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/d40a8aad50111c15d279469170f7b5032ac22529/COPYRIGHT) |
[LICENSE](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/d40a8aad50111c15d279469170f7b5032ac22529/LICENSE).
[Source](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/993443d88c451901f4c917fa00c204fd3b54d28d).
[Source](https://gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/src/commit/d40a8aad50111c15d279469170f7b5032ac22529).
## jsonschema

View File

@@ -387,6 +387,14 @@ the actual UTC publication date; if new version names are needed, retain the
validated contents and update PromptKit's pins/checksums before its release.
Publication and public module availability are not sprint completion gates.
**Completed: 2026-10-13.** Adopted the local OpenRouter candidate
`v3.20261013.0` at `2a69672b1bb220f1a730153341470f5ac67e15f4` and RakestrawHome
candidate `v3.20261013.0` at `d40a8aad50111c15d279469170f7b5032ac22529`. Validation passed
through a temporary filesystem module proxy: focused catalog/configuration
tests, `go test ./...`, `go vet ./...`, `go mod verify`, exact module identity
and version checks with no replacements, and `git diff --check`. No workspace or
proxy artifacts were committed; the candidate tags remain local and unpublished.
## Stage 7: Capture Destination-Specific HTTP Evidence
Scope: shared transport helpers in `internal/llm`, independent of generation.

4
go.mod
View File

@@ -4,8 +4,8 @@ go 1.26.0
require (
gitea.maximumdirect.net/eric/ConfigKit v0.7.1
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20260930.0
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20260930.0
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20261013.0
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20261013.0
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2
)

8
go.sum
View File

@@ -2,10 +2,10 @@ gitea.maximumdirect.net/eric/ConfigKit v0.7.1 h1:q3HrX4WWCPt1WfMydqFEaAmCf9s6Dq+
gitea.maximumdirect.net/eric/ConfigKit v0.7.1/go.mod h1:C82sbyKHYMV1OwaD2GJanFrwTfcZfjlW2JsGze5b0kA=
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1 h1:Qn+mdebYOzCVCEXgCbuGSO/WHmJtItwaQ8e3XwY3qtI=
gitea.maximumdirect.net/eric/ReleaseKit v0.4.1/go.mod h1:LVodqNQ3OIKv9NBq+fFeyMByd1lHY25YOmmpah/NaNI=
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20260930.0 h1:lzfCDbzJQRGzIlRPRprnAV9hVVL5zUQy80VMQ0kbYa0=
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20260930.0/go.mod h1:HjS0f+3q0IdHCTEz+VVAEgIwIWJFAZUjuKdAtvtqKdg=
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20260930.0 h1:h12ZTRldAmpLAomj0oQRGteFxHLN1LPE6XDl9zJNbm8=
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20260930.0/go.mod h1:OEFBeKdjTsLzqJwLmXI2O5gG3r64FktcVJVb3mBrRfg=
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20261013.0 h1:zhqxVDpQETGzCxYMsVGSWQcjsG4Xw+ftjEL/rCeh0GY=
gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3 v3.20261013.0/go.mod h1:HjS0f+3q0IdHCTEz+VVAEgIwIWJFAZUjuKdAtvtqKdg=
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20261013.0 h1:J10u3x+/siHz5ASC+Is4rfYA/ohW6colBT/8OuCA4qQ=
gitea.maximumdirect.net/eric/promptkit-backend-rakestrawhome/v3 v3.20261013.0/go.mod h1:OEFBeKdjTsLzqJwLmXI2O5gG3r64FktcVJVb3mBrRfg=
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=

View File

@@ -26,6 +26,16 @@ func Underlays() ([]configkit.Underlay, error) {
return nil, err
}
catalogInputs := append(openrouterInputs, rakestrawhomeInputs...)
openrouterSmokeTestInputs, err := assetInputs("OpenRouter smoke-test catalog", openrouter.FS(), openrouter.SmokeTestsRoot)
if err != nil {
return nil, err
}
rakestrawhomeSmokeTestInputs, err := assetInputs("Rakestrawhome smoke-test catalog", rakestrawhome.FS(), rakestrawhome.SmokeTestsRoot)
if err != nil {
return nil, err
}
catalogInputs = append(catalogInputs, openrouterSmokeTestInputs...)
catalogInputs = append(catalogInputs, rakestrawhomeSmokeTestInputs...)
owned := configkit.Input{Source: configkit.Mapping("PromptKit-owned profiles", map[string]any{
"profiles": map[string]any{
"promptkit-openrouter-standard": map[string]any{"extends": "gemini-flash-latest"},

View File

@@ -9,7 +9,7 @@ import (
"gitea.maximumdirect.net/eric/promptkit/internal/configuration"
)
func TestPublishedCatalogsResolveThroughEffectiveConfiguration(t *testing.T) {
func TestSelectedCatalogsResolveThroughEffectiveConfiguration(t *testing.T) {
underlays, err := Underlays()
if err != nil {
t.Fatal(err)
@@ -22,10 +22,22 @@ func TestPublishedCatalogsResolveThroughEffectiveConfiguration(t *testing.T) {
if err != nil || openrouter.Endpoint != "https://openrouter.ai/api/v1" || openrouter.ConcurrencyLimit != 16 || openrouter.QueueCapacity != 1024 {
t.Fatalf("OpenRouter backend: %+v, %v", openrouter, err)
}
if openrouter.SmokeTests == nil || openrouter.SmokeTests.DefaultProfile == nil ||
*openrouter.SmokeTests.DefaultProfile != "promptkit-openrouter-standard" ||
openrouter.SmokeTests.Authentication == nil || openrouter.SmokeTests.Authentication.Kind == nil ||
*openrouter.SmokeTests.Authentication.Kind != "openrouter_key" {
t.Fatalf("OpenRouter smoke-test defaults: %+v", openrouter.SmokeTests)
}
rakestrawhome, err := state.GetBackend("rakestrawhome")
if err != nil || rakestrawhome.Endpoint != "https://inference.ai.rakestrawhome.com/v1" || rakestrawhome.ConcurrencyLimit != 4 {
t.Fatalf("Rakestrawhome backend: %+v, %v", rakestrawhome, err)
}
if rakestrawhome.SmokeTests == nil || rakestrawhome.SmokeTests.DefaultProfile == nil ||
*rakestrawhome.SmokeTests.DefaultProfile != "rakestrawhome-gemma-4-31b" ||
rakestrawhome.SmokeTests.Authentication == nil || rakestrawhome.SmokeTests.Authentication.Kind == nil ||
*rakestrawhome.SmokeTests.Authentication.Kind != "none" {
t.Fatalf("Rakestrawhome smoke-test defaults: %+v", rakestrawhome.SmokeTests)
}
for id, want := range map[string]string{
"promptkit-openrouter-standard": "~google/gemini-flash-latest",
"promptkit-openrouter-auto": "openrouter/auto",
@@ -38,6 +50,42 @@ func TestPublishedCatalogsResolveThroughEffectiveConfiguration(t *testing.T) {
}
}
func TestConsumerCanReplaceOrClearSmokeTestDefaults(t *testing.T) {
underlays, err := Underlays()
if err != nil {
t.Fatal(err)
}
replacement := configkit.Input{Source: configkit.Mapping("operator replacement", map[string]any{
"backends": map[string]any{"openrouter": map[string]any{
"smoke_tests": map[string]any{
"default_profile": "operator-profile",
"authentication": nil,
},
}},
})}
state, err := configuration.Load(replacement, underlays)
if err != nil {
t.Fatalf("load replacement: %v", err)
}
backend, err := state.GetBackend("openrouter")
if err != nil || backend.SmokeTests == nil || backend.SmokeTests.DefaultProfile == nil ||
*backend.SmokeTests.DefaultProfile != "operator-profile" || backend.SmokeTests.Authentication != nil {
t.Fatalf("caller smoke-test replacement/null was not effective: %+v, %v", backend.SmokeTests, err)
}
cleared := configkit.Input{Source: configkit.Mapping("operator null", map[string]any{
"backends": map[string]any{"openrouter": map[string]any{"smoke_tests": nil}},
})}
state, err = configuration.Load(cleared, underlays)
if err != nil {
t.Fatalf("load null smoke_tests: %v", err)
}
backend, err = state.GetBackend("openrouter")
if err != nil || backend.SmokeTests != nil {
t.Fatalf("caller null did not clear smoke-test defaults: %+v, %v", backend.SmokeTests, err)
}
}
func TestConsumerOverlayReplacesCatalogDefaultsBeforeValidation(t *testing.T) {
underlays, err := Underlays()
if err != nil {