Adopt ConfigKit v1 and Go 1.27

This commit is contained in:
2026-11-02 03:51:39 +00:00
parent 6ae005ed3a
commit a4e97bf102
43 changed files with 60 additions and 51 deletions

View File

@@ -8,8 +8,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
var (

View File

@@ -1,8 +1,8 @@
package promptkit
import (
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/backend"
"go.maximumdirect.net/configkit"
)
// BackendOpenRouter is the conventional ID for an OpenRouter backend.

View File

@@ -7,8 +7,8 @@ import (
"testing"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestEngineLimitsInjectedClientConcurrency(t *testing.T) {

View File

@@ -5,8 +5,8 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestConfigurationInspectionDiffsCapturedValues(t *testing.T) {

View File

@@ -4,8 +4,8 @@ import (
"fmt"
"io"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/configuration"
"go.maximumdirect.net/configkit"
)
// ConfigurationInspection is a read-only view of one Engine's captured

View File

@@ -11,8 +11,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestConfigurationInspectionReportsLiteralKeysAndRedactedHistory(t *testing.T) {

View File

@@ -7,9 +7,9 @@ import (
"os"
"path/filepath"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"gitea.maximumdirect.net/eric/promptkit/internal/filecatalog"
"go.maximumdirect.net/configkit"
)
// CollectionInput mounts source at the selected collection's configuration

View File

@@ -9,8 +9,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
type sourceDocument struct {

View File

@@ -12,8 +12,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestProfileEnvironmentLookupAcceptsNonShellNames(t *testing.T) {

View File

@@ -7,8 +7,8 @@ import (
"sync/atomic"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
type fakeLLMClient struct {

View File

@@ -26,17 +26,17 @@ License and notices: [CC BY-SA 4.0](licenses/CC-BY-SA-4.0.txt) |
## ConfigKit
Selected module: `gitea.maximumdirect.net/eric/ConfigKit` at `v0.8.0`.
Selected module: `go.maximumdirect.net/configkit` at `v1.0.0`.
Copyright (C) 2026 Eric Rakestraw
SPDX-License-Identifier: LGPL-3.0-or-later
License and notices: [LGPL 3.0](../../LICENSE) |
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/137769f3f18a370c68444242fb5d88e620e307e5/COPYRIGHT) |
[LICENSE](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/137769f3f18a370c68444242fb5d88e620e307e5/LICENSE).
[COPYRIGHT](https://forge.maximumdirect.net/base-layer/configkit/src/commit/c88aac990b23f48a31f9046b830d4d0954f57f53/COPYRIGHT) |
[LICENSE](https://forge.maximumdirect.net/base-layer/configkit/src/commit/c88aac990b23f48a31f9046b830d4d0954f57f53/LICENSE).
[Source](https://gitea.maximumdirect.net/eric/ConfigKit/src/commit/137769f3f18a370c68444242fb5d88e620e307e5).
[Source](https://forge.maximumdirect.net/base-layer/configkit/src/commit/c88aac990b23f48a31f9046b830d4d0954f57f53).
## jsonschema

View File

@@ -189,6 +189,15 @@ Validation: check the module diff and imports; attempt focused adapter builds
when source controls permit. Record any toolchain/dependency-access failure
accurately. Do not use local substitution as the delivered dependency state.
Completion: selected Go 1.27.0 and ConfigKit v1.0.0 at the specified commit,
updated imports, adapter API names and attribution, and audited the upstream
rename table against the facade and tests. The existing ReleaseKit selection
remains unchanged; ConfigKit's separate tool dependency appears in the resolved
module graph. Validation passed: focused adapter and facade compilation, the
configuration header-check test, module/import review, formatting, and
`git diff --check`. Source controls and resource-shape fixtures remain for the
subsequent assignments.
## Stage 2: Migrate Source Controls And Import Expectations
Scope: actual configuration controls in fixtures, programmatic sources, and

View File

@@ -8,11 +8,11 @@ import (
"net/http"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
internalengine "gitea.maximumdirect.net/eric/promptkit/internal/engine"
"gitea.maximumdirect.net/eric/promptkit/internal/observation"
"gitea.maximumdirect.net/eric/promptkit/internal/usecase"
"go.maximumdirect.net/configkit"
)
// ErrInvalidConfig identifies invalid engine construction, including missing

View File

@@ -10,8 +10,8 @@ import (
"os"
"strings"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
//go:embed prompts/*.yaml schemas/*.json

View File

@@ -6,8 +6,8 @@ import (
"fmt"
"os"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
type summary struct {

View File

@@ -6,8 +6,8 @@ import (
"fmt"
"os"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
type deterministicClient struct{}

View File

@@ -12,8 +12,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
const capturedPromptDocument = `

4
go.mod
View File

@@ -1,10 +1,10 @@
module gitea.maximumdirect.net/eric/promptkit
go 1.26.0
go 1.27.0
require (
gitea.maximumdirect.net/eric/ConfigKit v0.8.0
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2
go.maximumdirect.net/configkit v1.0.0
)
require (

4
go.sum
View File

@@ -1,5 +1,3 @@
gitea.maximumdirect.net/eric/ConfigKit v0.8.0 h1:xCIhYnOHjw7rFvB+vIremPKGeROOxKTomnUEUipuQno=
gitea.maximumdirect.net/eric/ConfigKit v0.8.0/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=
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
@@ -8,6 +6,8 @@ github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEV
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJUE=
github.com/yuin/goldmark/v2 v2.1.6/go.mod h1:G6M4/qOFtfn01/o14BU1UR2Lo5N3S9Qo7xCuz/sHjGQ=
go.maximumdirect.net/configkit v1.0.0 h1:cguQnxkaRk3ClQOZNzzhTdc4bfzbraGKv8CkoCp+HLc=
go.maximumdirect.net/configkit v1.0.0/go.mod h1:B6fJ5xBLBF1nuywqfLeEI4sLm29UkIcDLu8i6I6gGXE=
go.yaml.in/yaml/v4 v4.0.0-rc.6 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4=
go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=

View File

@@ -6,8 +6,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"go.maximumdirect.net/configkit"
)
const benchmarkDefinitionCount = 128

View File

@@ -4,7 +4,7 @@ import (
"io"
"strings"
"gitea.maximumdirect.net/eric/ConfigKit"
"go.maximumdirect.net/configkit"
)
// Inspection is the read-only subset of the retained ConfigKit result used by

View File

@@ -3,7 +3,7 @@ package configuration
import (
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"go.maximumdirect.net/configkit"
)
func TestSecretProviderPathRecognizesResourceExtraParams(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"go.maximumdirect.net/configkit"
)
func TestLoadedListsSortedEffectiveIdentities(t *testing.T) {

View File

@@ -9,11 +9,11 @@ import (
"sort"
"strings"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/backend"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"gitea.maximumdirect.net/eric/promptkit/internal/jsonvalue"
"gitea.maximumdirect.net/eric/promptkit/internal/llm"
"go.maximumdirect.net/configkit"
)
type document struct {
@@ -234,7 +234,7 @@ func load(main configkit.Input, underlays []configkit.Underlay) (*loaded, error)
Path: configkit.Keys("version"),
Check: checkConfigurationVersion,
},
Secret: secretProviderPath,
Sensitive: secretProviderPath,
Resolve: func(config *document, resolution *configkit.Resolution) error {
for _, resources := range resourceSets(config) {
captureFields(resources.backends, resources.bases.backends, resources.namespace, backendFields, resolution, state.backends)
@@ -330,7 +330,7 @@ func capturePromptMetadata(prompts map[string]promptConfig, basePath configkit.P
}
func captureFieldState(path configkit.Path, resolution *configkit.Resolution) fieldState {
info, exists := resolution.InputInfo(path)
info, exists := resolution.EntryInfo(path)
switch {
case !exists || !info.Explicit:
return fieldAbsent
@@ -345,7 +345,7 @@ func captureFields[T any](entries map[string]T, basePath configkit.Path, namespa
for id := range entries {
states := make(map[string]fieldState, len(fields))
for _, field := range fields {
info, exists := resolution.InputInfo(basePath.Key(id).Key(field))
info, exists := resolution.EntryInfo(basePath.Key(id).Key(field))
switch {
case !exists || !info.Explicit:
states[field] = fieldAbsent

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"go.maximumdirect.net/configkit"
)
func mapping(label string, values map[string]any) configkit.Input {

View File

@@ -8,11 +8,11 @@ import (
"strings"
"text/template"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"gitea.maximumdirect.net/eric/promptkit/internal/filecatalog"
"gitea.maximumdirect.net/eric/promptkit/internal/prompt"
"gitea.maximumdirect.net/eric/promptkit/internal/promptdef"
"go.maximumdirect.net/configkit"
)
var (
@@ -69,7 +69,7 @@ func resolvePrompts(prompts map[string]promptConfig, basePath configkit.Path, re
}
}
if inputsChanged {
resolution.Record(base.Key("inputs"), configkit.ChangeNormalization, "normalize input metadata")
resolution.RecordNormalization(base.Key("inputs"), "normalize input metadata")
}
// Normalize message metadata on execution-owned copies below. ConfigKit
// records sequence mutations as whole-value replacements, which would

View File

@@ -10,8 +10,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/promptdef"
"go.maximumdirect.net/configkit"
)
func TestLoadCapturesInheritedImportedContent(t *testing.T) {

View File

@@ -11,7 +11,6 @@ import (
"strings"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/artifact"
"gitea.maximumdirect.net/eric/promptkit/internal/capacity"
"gitea.maximumdirect.net/eric/promptkit/internal/configuration"
@@ -22,6 +21,7 @@ import (
"gitea.maximumdirect.net/eric/promptkit/internal/prompt"
"gitea.maximumdirect.net/eric/promptkit/internal/usecase"
"gitea.maximumdirect.net/eric/promptkit/internal/validate"
"go.maximumdirect.net/configkit"
)
// Config carries construction settings selected by the public facade.

View File

@@ -7,8 +7,8 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"go.maximumdirect.net/configkit"
)
func engineSmokeBackendInput() configkit.Input {

View File

@@ -5,10 +5,10 @@ import (
"errors"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/configuration"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"gitea.maximumdirect.net/eric/promptkit/internal/profile"
"go.maximumdirect.net/configkit"
)
type selectionTestCollaborators struct {

View File

@@ -10,11 +10,11 @@ import (
"testing"
"time"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit/internal/configuration"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
"gitea.maximumdirect.net/eric/promptkit/internal/llm"
"gitea.maximumdirect.net/eric/promptkit/internal/observation"
configkit "go.maximumdirect.net/configkit"
)
func TestSmokeTesterAssemblesReachabilityReportWithoutGenerationAdmission(t *testing.T) {

View File

@@ -10,8 +10,8 @@ import (
"testing/fstest"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestListIdentitiesBasicContract(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"sync"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestWithNamespacesRoutesOrdinarySelectionsAndPreservesViews(t *testing.T) {

View File

@@ -7,8 +7,8 @@ import (
"testing"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
type observationClientFunc func(context.Context, promptkit.GenerateRequest) (*promptkit.GenerateResponse, error)

View File

@@ -12,8 +12,8 @@ import (
"testing/fstest"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestPreparedExecutionFreezesSourcesAndReturnsIndependentDetails(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"sync"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestPreparedObservationStartsOnlyAfterClaimAndKeepsObserver(t *testing.T) {

View File

@@ -8,8 +8,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func aliasPrompt() map[string]any {

View File

@@ -6,8 +6,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestInspectProfileUsesLiteralFileKeyForPreparation(t *testing.T) {

View File

@@ -1,6 +1,6 @@
package promptkit
import "gitea.maximumdirect.net/eric/ConfigKit"
import "go.maximumdirect.net/configkit"
// ProfileConfig is a presence-aware convenience value for a keyed execution
// profile. Nil fields are omitted; non-nil pointers preserve zero and blank

View File

@@ -12,8 +12,8 @@ import (
"testing/fstest"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func observedHTTPResponse(status int, body string) *http.Response {

View File

@@ -5,8 +5,8 @@ import (
"fmt"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
var inspectedRequirements *promptkit.RequirementInspection

View File

@@ -10,8 +10,8 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func requirementsEngine(t *testing.T, prompts, profiles map[string]any, options ...promptkit.Option) *promptkit.Engine {

View File

@@ -14,8 +14,8 @@ import (
"testing"
"time"
"gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/promptkit"
"go.maximumdirect.net/configkit"
)
func TestSmokeTestSharesBackendCapacityWithRunAndReleasesAfterCancellation(t *testing.T) {