Adopt tagged diagnostic catalogs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
4
go.mod
@@ -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
8
go.sum
@@ -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=
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user