Migrate ConfigKit to its vanity module path

This commit is contained in:
2026-11-01 14:19:37 +00:00
parent 335bd7bc31
commit 587f407a32
184 changed files with 278 additions and 205 deletions

View File

@@ -53,6 +53,8 @@ descriptions and pass `SearchConfig` to the existing load APIs. See the
and [ADR 0019](docs/adr/0019-explicit-configuration-discovery.md).
```go
import "go.maximumdirect.net/configkit"
type Config struct {
Enabled bool `yaml:"enabled"`
Workers int `yaml:"workers"`
@@ -67,6 +69,9 @@ func ReadConfig(path string) (Config, error) {
}
```
Existing consumers should follow the
[module-path migration guidance](docs/consumers/README.md#vanity-module-path-migration).
## Design philosophy
ConfigKit favors one coherent, predictable configuration model over flexibility

View File

@@ -1,6 +1,6 @@
package configkit
import "gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
import "go.maximumdirect.net/configkit/internal/engine"
func fromEngineLocation(value engine.Location) Location {
return Location{SourceID: value.SourceID, Line: value.Line, Column: value.Column}

View File

@@ -3,7 +3,7 @@ package configkit
import (
"io"
"gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
"go.maximumdirect.net/configkit/internal/engine"
)
// LoadError reports safe structured diagnostics for a failed configuration load.

View File

@@ -1,6 +1,6 @@
package configkit
import "gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
import "go.maximumdirect.net/configkit/internal/engine"
// Difference describes one canonical changed region between two successful
// loads. Left is the earlier value and Right is the later value. Each snapshot

View File

@@ -1,6 +1,6 @@
package configkit
import "gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
import "go.maximumdirect.net/configkit/internal/engine"
// Search is an immutable ordered description of possible host-file inputs.
// It is consumed only when passed to SearchConfig and used by a load.

View File

@@ -6,6 +6,9 @@ applications. Consumers still own their configuration structs, defaults, semanti
validation, schema-version policy, CLI parsing, runtime matching and conversion,
resource checks, remote acquisition, and service initialization.
Import the public root package as `"go.maximumdirect.net/configkit"`; its package
name remains `configkit`.
## Choosing a loading entry point
- Use [`Load`](../../lifecycle.go) with one source for an ordinary configuration.
@@ -311,6 +314,26 @@ The examples preserve domain meaning while adopting one configuration convention
blocked empty variables remain blocked, and ordinary `Load` never changes the
process environment.
### Vanity module path migration
ConfigKit's module identifier changed from
`gitea.maximumdirect.net/eric/ConfigKit` to `go.maximumdirect.net/configkit` before
v1.0.0. Update the dependency requirement in your application's `go.mod` and its
Go imports together, selecting a revision or release that declares the new module
path. The package name remains `configkit`; the configuration model and public
symbol names are unchanged by this identity migration.
Old and new import paths identify distinct Go packages, including distinct named
types. Coordinate adoption with any dependencies that exchange ConfigKit values
with your application; changing a requirement alone does not make those types
interchangeable. The maintained examples use the new path, but other repositories
must manage their own migrations.
Historical tags keep their original module declarations and contents. Older
releases such as v0.10.2 still use the old path and cannot be installed under the
vanity identifier simply because discovery can find their repository. A matching
migrated revision is needed; no old-path compatibility module is supplied here.
### Pre-v1 public API cleanup
The pre-v1 API cleanup replaces these names outright; it does not retain

View File

@@ -7,10 +7,10 @@ container image, generated package, or separate registry publication.
## Release identity and support
- Module: `gitea.maximumdirect.net/eric/ConfigKit`
- Module: `go.maximumdirect.net/configkit`
- Primary branch: `main`
- Authoritative remote: `origin`
- Authoritative push URL: `https://gitea.maximumdirect.net/eric/ConfigKit.git`
- Authoritative push URL: `ssh://git@forge.maximumdirect.net:22222/base-layer/configkit.git`
- Tags: stable Semantic Versions such as `v0.5.0`; no prereleases
- Minimum Go version: the first stable patch of the selected Go series, or a
higher patch when required by a dependency or specific correctness fix, as
@@ -24,6 +24,9 @@ Release validation runs one offline race-enabled Go suite, one full vet pass,
and CGO-disabled package compilation for both Linux targets. macOS and CI are
not release gates; do not wait for or poll CI.
The vanity module path identifies Go imports. Source/tag browser links and public
Go retrieval use the Forge HTTPS repository independently of SSH publication.
## 1. Select Go and prepare the tool
Use a clean checkout with Git, Bash 3.2 or newer, and a native compiler for race
@@ -91,7 +94,7 @@ executable first on `PATH` through the publication command.
Verify access to the authoritative remote without displaying credentials:
```sh
git ls-remote https://gitea.maximumdirect.net/eric/ConfigKit.git HEAD refs/heads/main
git ls-remote ssh://git@forge.maximumdirect.net:22222/base-layer/configkit.git HEAD refs/heads/main
```
Publication requires explicit authorization. Local implementation commits do
@@ -111,7 +114,7 @@ Create `docs/releases/<version>.md`. Its first line must be exactly
`# ConfigKit <version>`, and it must end with the license and attribution footer:
```markdown
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/VERSION/COPYRIGHT) | [LICENSE](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/VERSION/LICENSE) | [ATTRIBUTION](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/VERSION/docs/oss/attribution.md)
[COPYRIGHT](https://forge.maximumdirect.net/base-layer/configkit/src/tag/VERSION/COPYRIGHT) | [LICENSE](https://forge.maximumdirect.net/base-layer/configkit/src/tag/VERSION/LICENSE) | [ATTRIBUTION](https://forge.maximumdirect.net/base-layer/configkit/src/tag/VERSION/docs/oss/attribution.md)
```
Replace `VERSION` with the full tag and confirm the three target files exist in
@@ -127,7 +130,7 @@ Push only that committed candidate to the literal authoritative URL. This does
not follow local tags:
```sh
git push --no-follow-tags https://gitea.maximumdirect.net/eric/ConfigKit.git HEAD:refs/heads/main
git push --no-follow-tags ssh://git@forge.maximumdirect.net:22222/base-layer/configkit.git HEAD:refs/heads/main
```
ReleaseKit requires authoritative `main` to equal this candidate before it
@@ -228,8 +231,8 @@ consumer_dir=$(mktemp -d)
(
cd "$consumer_dir"
go mod init example.invalid/configkit-release-check
GOPRIVATE=gitea.maximumdirect.net GOPROXY=direct go get "gitea.maximumdirect.net/eric/ConfigKit@$release_version"
go list -m -f '{{.Path}} {{.Version}}' gitea.maximumdirect.net/eric/ConfigKit
GOWORK=off GOPROXY=direct go get "go.maximumdirect.net/configkit@$release_version"
GOWORK=off go list -m -f '{{.Path}} {{.Version}}' go.maximumdirect.net/configkit
)
```

View File

@@ -1,6 +1,7 @@
# Vanity Module Path Migration
Status: target settled; implementation has not begun.
Status: repository implementation complete and locally verified. Exact-revision
remote consumer verification awaits availability of the migrated commit.
Planning baseline: `21c9bc0ad0315c4ac96268b487a52376558a18d7`.
This roadmap defines the target and work needed to adopt
@@ -201,3 +202,44 @@ application adoption, and release publication are separate outcomes. No push,
tag, or downstream change is authorized merely by completing this roadmap.
No significant open decision remains for this migration.
## Implementation And Verification
The module declaration and all ConfigKit self-imports now use
`go.maximumdirect.net/configkit`, including internal packages, external-package
tests, maintained examples, and benchmarks. The import-boundary predicates and
root-type reflection expectations use the new prefix. Review of every changed
Go hunk confirmed only the intended module-prefix replacements and publication
URL expectation; no loading behavior or public symbol names changed.
`releasekit.json`, its profile test, and the runbook now use the retained Forge
SSH publication endpoint, matching the existing effective `origin` push URL.
The runbook distinguishes that transport from Forge HTTPS browser links and
vanity-path consumer retrieval. README and the consumer guide identify the new
import path; migration guidance covers named-type identity and historical tags.
The Go minimum, dependency/tool versions, and `go.sum` are unchanged. Historical
release records, accepted ADRs, adopted policies, and upstream attribution were
left intact. Remaining old ConfigKit path references describe the migration's
baseline, consumer upgrade instructions, or historical releases.
Local validation passed on Linux with Go 1.26.10 and cached dependencies:
```sh
GOTOOLCHAIN=local GOPROXY=off GOTELEMETRY=off ./scripts/check.sh
GOTOOLCHAIN=local GOPROXY=off GOTELEMETRY=off go mod tidy -diff
GOTOOLCHAIN=local GOPROXY=off GOTELEMETRY=off go test -race ./...
```
The everyday check included maintained examples, documentation links, root type
ownership, dependency boundaries, and the release profile. Module/package
inspection reported the new main-module identity and no old ConfigKit imports
in the assembled test dependency graph. The module-selected ReleaseKit built
outside the checkout and reported v0.4.2. Module tidiness produced no diff.
No push or release was performed. A fresh remote consumer has not yet installed
the migrated revision, because that revision has not been published to the remote.
The earlier infrastructure checks remain preliminary evidence only. Once the
commit is available through an authorized push, the one-time exact-revision
consumer check described above can verify retrieval and public-API compilation
without a local replacement; it remains separate from release completion.

View File

@@ -6,7 +6,7 @@ import (
"os"
"strings"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func ExampleLoad() {

View File

@@ -9,7 +9,7 @@ import (
"strings"
"time"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// Artifact is a Narratio-shaped generated output declaration.

View File

@@ -11,8 +11,8 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func Example_narratio() {

View File

@@ -6,7 +6,7 @@ import (
"io/fs"
"path"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// CollectionBundleConfig is a representative application-owned collection

View File

@@ -5,8 +5,8 @@ import (
"fmt"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func Example_inputDestination() {

View File

@@ -5,7 +5,7 @@ import (
"strconv"
"strings"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// FileComparisonConfig is a small application-owned shape for comparing

View File

@@ -7,8 +7,8 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func ExampleCompareFiles() {

View File

@@ -5,7 +5,7 @@ import (
"os"
"path/filepath"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type workingDirectoryPresetConfig struct {

View File

@@ -1,6 +1,6 @@
package consumers
import configkit "gitea.maximumdirect.net/eric/ConfigKit"
import configkit "go.maximumdirect.net/configkit"
// PresetCatalog is ordinary application data; no inheritance fields or
// registration hooks are required in the typed configuration.

View File

@@ -3,8 +3,8 @@ package consumers_test
import (
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func TestPresetCatalogOneLoadAndDerivation(t *testing.T) {

View File

@@ -6,7 +6,7 @@ import (
"io/fs"
"path"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
//go:embed testdata/native-source testdata/layered-bundle testdata/collection-bundle testdata/ordinary-imports testdata/source-version

View File

@@ -6,8 +6,8 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func Example_nativeFilesystem() {

View File

@@ -3,7 +3,7 @@ package consumers
import (
"strings"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// PromptCatalogConfig is an application-owned prompt collection shape.

View File

@@ -8,8 +8,8 @@ import (
"path/filepath"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func Example_identifiedPromptCatalog() {

View File

@@ -9,7 +9,7 @@ import (
"path/filepath"
"strings"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// SequenceCatalogConfig is a source-backed prompt catalog with an application

View File

@@ -8,8 +8,8 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
configkit "go.maximumdirect.net/configkit"
"go.maximumdirect.net/configkit/examples/consumers"
)
func Example_sequenceCatalog() {

View File

@@ -4,7 +4,7 @@ import (
"errors"
"io/fs"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
// VersionedServiceConfig demonstrates a mounted main input whose source-local

View File

@@ -11,7 +11,7 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
var (
@@ -23,7 +23,7 @@ var (
func TestFacadeValuesRemainRootOwned(t *testing.T) {
t.Parallel()
const packagePath = "gitea.maximumdirect.net/eric/ConfigKit"
const packagePath = "go.maximumdirect.net/configkit"
for _, candidate := range []reflect.Type{
reflect.TypeFor[configkit.Path](), reflect.TypeFor[configkit.Source](),
reflect.TypeFor[configkit.Secret](), reflect.TypeFor[configkit.Diagnostic](),

View File

@@ -7,7 +7,7 @@ import (
"io"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
var (

View File

@@ -4,7 +4,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestOverlayExplanationUsesQueryScopedOrigin(t *testing.T) {

View File

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

View File

@@ -14,7 +14,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeInputDestinationsAcrossSourceKinds(t *testing.T) {

View File

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

View File

@@ -7,7 +7,7 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type facadeDiffConfig struct {

View File

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

View File

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

View File

@@ -9,7 +9,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
//go:embed testdata/filesystem

View File

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

View File

@@ -4,7 +4,7 @@ import (
"reflect"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestPublicHistoricalPathsEnumerateContextualShapes(t *testing.T) {

View File

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

View File

@@ -7,7 +7,7 @@ import (
"path/filepath"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeDirectoryRootBelowContainedAbsoluteSymlink(t *testing.T) {

View File

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

View File

@@ -5,7 +5,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeItemScopesDoNotReinterpretGlobalRegistrations(t *testing.T) {

View File

@@ -4,7 +4,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeItemDomainVersionsKeepEffectiveScope(t *testing.T) {

View File

@@ -10,7 +10,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type layeredFacadeConfig struct {

View File

@@ -7,7 +7,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type mappingFacadeConfig struct {

View File

@@ -4,7 +4,7 @@ import (
"errors"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeResolutionPresenceUsesDynamicEntryShape(t *testing.T) {

View File

@@ -12,7 +12,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type observedResourceFS struct {

View File

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

View File

@@ -9,7 +9,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestFacadeNoSourcePreservesAbsenceWithSequencePolicy(t *testing.T) {

View File

@@ -5,7 +5,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type movedVersionItem struct {

View File

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

View File

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

View File

@@ -5,7 +5,7 @@ import (
"testing"
"testing/fstest"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
func TestUnderlaySequenceDescendantOrigins(t *testing.T) {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
configkit "gitea.maximumdirect.net/eric/ConfigKit"
configkit "go.maximumdirect.net/configkit"
)
type versionCountingReader struct {

2
go.mod
View File

@@ -1,4 +1,4 @@
module gitea.maximumdirect.net/eric/ConfigKit
module go.maximumdirect.net/configkit
go 1.26.0

View File

@@ -44,10 +44,10 @@ func TestDependencyImportBoundary(t *testing.T) {
production := !strings.HasSuffix(path, "_test.go")
rootProduction := production && filepath.Dir(path) == "."
internalProduction := production && strings.HasPrefix(filepath.ToSlash(path), "internal/")
if rootProduction && strings.HasPrefix(importPath, "gitea.maximumdirect.net/eric/ConfigKit/internal/") && importPath != "gitea.maximumdirect.net/eric/ConfigKit/internal/engine" {
if rootProduction && strings.HasPrefix(importPath, "go.maximumdirect.net/configkit/internal/") && importPath != "go.maximumdirect.net/configkit/internal/engine" {
t.Errorf("%s bypasses the engine boundary through %s", path, importPath)
}
if internalProduction && importPath == "gitea.maximumdirect.net/eric/ConfigKit" {
if internalProduction && importPath == "go.maximumdirect.net/configkit" {
t.Errorf("%s imports the public root package", path)
}
}

View File

@@ -3,7 +3,7 @@ package configkit
import (
"io"
"gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
"go.maximumdirect.net/configkit/internal/engine"
)
// ValueSnapshot is a detached, deterministic YAML representation of one value.

View File

@@ -4,7 +4,7 @@ import (
"strconv"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func BenchmarkComposeWideMappings(b *testing.B) {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestOverlayBroadCollectionPoliciesAndRetainedDeclarations(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package engine
import (
"sort"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type collectionPolicyScope struct {

View File

@@ -4,7 +4,7 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestCollectionPolicyWithoutValueRetainsIdentityAndMode(t *testing.T) {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
// A true entry replaces the collection itself as well as its descendants;
// false records ordinary ancestor replacement without selecting a collection

View File

@@ -5,7 +5,7 @@ import (
"fmt"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestSourceReplacementRetiresIdentityForEveryValueKind(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package engine
import (
"maps"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
// composedDocument is the private handoff between source assembly and later

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestComposeWideRegisteredCollectionsPreservesEvidenceAndReplay(t *testing.T) {

View File

@@ -5,8 +5,8 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
"go.maximumdirect.net/configkit/internal/document"
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
)
func FuzzCompositionAndOverlay(f *testing.F) {

View File

@@ -8,7 +8,7 @@ import (
"strconv"
"time"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
var integerPattern = regexp.MustCompile(`^-?(0|[1-9][0-9]*)$`)

View File

@@ -8,7 +8,7 @@ import (
"testing"
"time"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type namedSmall int8

View File

@@ -3,7 +3,7 @@ package engine
import (
"errors"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
var (

View File

@@ -6,7 +6,7 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestDestinationPlacementCountsAgainstSharedNodeBudget(t *testing.T) {

View File

@@ -5,7 +5,7 @@ import (
"testing"
"testing/fstest"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type importDestinationConfig struct {

View File

@@ -5,7 +5,7 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestNormalizeDestinationUsesLiteralMappingKeys(t *testing.T) {

View File

@@ -5,8 +5,8 @@ import (
"errors"
"io"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
"go.maximumdirect.net/configkit/internal/document"
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
)
var errDiffInspectionUnavailable = errors.New("configkit: diff inspection unavailable")

View File

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

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type diffIntegrationConfig struct {

View File

@@ -3,7 +3,7 @@ package engine
import (
"sort"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type pairedDiffSnapshot struct {

View File

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

View File

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

View File

@@ -4,7 +4,7 @@ import (
"path"
"strings"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
const directiveKey = "configkit"

View File

@@ -2,7 +2,7 @@ package engine
import (
"cmp"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
"slices"
)

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
// documentLookup contains read-only mapping positions for a completed document.
type documentLookup struct {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
// walkDocument visits value nodes in preorder, preserving stored mapping order
// and sequence index order. Mapping keys are not separate nodes in this walk.

View File

@@ -5,7 +5,7 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type unsupportedDynamicRoot struct {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
// ValueSnapshot is a detached, deterministic YAML representation of one value.
// Present distinguishes absence or deletion from an explicit null value.

View File

@@ -13,7 +13,7 @@ import (
"sync"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type explanationConcurrency struct {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
func validateFinalSequenceIdentities(root *document.Node, policy sequencePolicy) []Diagnostic {
if root == nil || policy.selectorTrie == nil {

View File

@@ -1,7 +1,7 @@
package engine
import (
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
const historyNodeLimit = 4_000_000

View File

@@ -3,7 +3,7 @@ package engine
import (
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type historyBudgetSimpleConfig struct {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
type historyCheckpointPayload struct {
root *document.Node

View File

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

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
type historyInheritancePayload struct {
operations []inheritanceOperation

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
type historyPhase uint8

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
// resolutionReplayGroup is the explanation projection of one or more ordered
// resolution records. The covering record identifies the before/after roots;

View File

@@ -4,7 +4,7 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestResolutionSensitivityKeepsLogicalEdgesWithoutSubtreeDuplication(t *testing.T) {

View File

@@ -4,7 +4,7 @@ import (
"slices"
"sort"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
type historySelection struct {

View File

@@ -5,7 +5,7 @@ import (
"slices"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestSensitivityCandidatesMergeRepeatedParsedPaths(t *testing.T) {

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestSequenceHistoryReplaysAppendAtAssignedIndexes(t *testing.T) {

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
type historyPathOrigin struct {
path Path

View File

@@ -4,7 +4,7 @@ import (
"reflect"
"testing"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
"go.maximumdirect.net/configkit/internal/document"
)
func TestHistorySourceObservationsPreserveRawAndCompositeDefinitions(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"io/fs"
"strconv"
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
"go.maximumdirect.net/configkit/internal/document"
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
)
type importAdmissionOutcome uint8

View File

@@ -1,6 +1,6 @@
package engine
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
import "go.maximumdirect.net/configkit/internal/document"
func prependCompositionDiagnosticPaths(diagnostics []Diagnostic, prefix Path) []Diagnostic {
cloned := append([]Diagnostic(nil), diagnostics...)

Some files were not shown because too many files have changed in this diff Show More