Migrate ConfigKit to its vanity module path
This commit is contained in:
@@ -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).
|
and [ADR 0019](docs/adr/0019-explicit-configuration-discovery.md).
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
import "go.maximumdirect.net/configkit"
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Enabled bool `yaml:"enabled"`
|
Enabled bool `yaml:"enabled"`
|
||||||
Workers int `yaml:"workers"`
|
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
|
## Design philosophy
|
||||||
|
|
||||||
ConfigKit favors one coherent, predictable configuration model over flexibility
|
ConfigKit favors one coherent, predictable configuration model over flexibility
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package configkit
|
package configkit
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
|
import "go.maximumdirect.net/configkit/internal/engine"
|
||||||
|
|
||||||
func fromEngineLocation(value engine.Location) Location {
|
func fromEngineLocation(value engine.Location) Location {
|
||||||
return Location{SourceID: value.SourceID, Line: value.Line, Column: value.Column}
|
return Location{SourceID: value.SourceID, Line: value.Line, Column: value.Column}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package configkit
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
|
"go.maximumdirect.net/configkit/internal/engine"
|
||||||
)
|
)
|
||||||
|
|
||||||
// LoadError reports safe structured diagnostics for a failed configuration load.
|
// LoadError reports safe structured diagnostics for a failed configuration load.
|
||||||
|
|||||||
2
diff.go
2
diff.go
@@ -1,6 +1,6 @@
|
|||||||
package configkit
|
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
|
// Difference describes one canonical changed region between two successful
|
||||||
// loads. Left is the earlier value and Right is the later value. Each snapshot
|
// loads. Left is the earlier value and Right is the later value. Each snapshot
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package configkit
|
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.
|
// Search is an immutable ordered description of possible host-file inputs.
|
||||||
// It is consumed only when passed to SearchConfig and used by a load.
|
// It is consumed only when passed to SearchConfig and used by a load.
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ applications. Consumers still own their configuration structs, defaults, semanti
|
|||||||
validation, schema-version policy, CLI parsing, runtime matching and conversion,
|
validation, schema-version policy, CLI parsing, runtime matching and conversion,
|
||||||
resource checks, remote acquisition, and service initialization.
|
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
|
## Choosing a loading entry point
|
||||||
|
|
||||||
- Use [`Load`](../../lifecycle.go) with one source for an ordinary configuration.
|
- 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
|
blocked empty variables remain blocked, and ordinary `Load` never changes the
|
||||||
process environment.
|
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
|
### Pre-v1 public API cleanup
|
||||||
|
|
||||||
The pre-v1 API cleanup replaces these names outright; it does not retain
|
The pre-v1 API cleanup replaces these names outright; it does not retain
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ container image, generated package, or separate registry publication.
|
|||||||
|
|
||||||
## Release identity and support
|
## Release identity and support
|
||||||
|
|
||||||
- Module: `gitea.maximumdirect.net/eric/ConfigKit`
|
- Module: `go.maximumdirect.net/configkit`
|
||||||
- Primary branch: `main`
|
- Primary branch: `main`
|
||||||
- Authoritative remote: `origin`
|
- 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
|
- 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
|
- 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
|
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
|
and CGO-disabled package compilation for both Linux targets. macOS and CI are
|
||||||
not release gates; do not wait for or poll CI.
|
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
|
## 1. Select Go and prepare the tool
|
||||||
|
|
||||||
Use a clean checkout with Git, Bash 3.2 or newer, and a native compiler for race
|
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:
|
Verify access to the authoritative remote without displaying credentials:
|
||||||
|
|
||||||
```sh
|
```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
|
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:
|
`# ConfigKit <version>`, and it must end with the license and attribution footer:
|
||||||
|
|
||||||
```markdown
|
```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
|
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:
|
not follow local tags:
|
||||||
|
|
||||||
```sh
|
```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
|
ReleaseKit requires authoritative `main` to equal this candidate before it
|
||||||
@@ -228,8 +231,8 @@ consumer_dir=$(mktemp -d)
|
|||||||
(
|
(
|
||||||
cd "$consumer_dir"
|
cd "$consumer_dir"
|
||||||
go mod init example.invalid/configkit-release-check
|
go mod init example.invalid/configkit-release-check
|
||||||
GOPRIVATE=gitea.maximumdirect.net GOPROXY=direct go get "gitea.maximumdirect.net/eric/ConfigKit@$release_version"
|
GOWORK=off GOPROXY=direct go get "go.maximumdirect.net/configkit@$release_version"
|
||||||
go list -m -f '{{.Path}} {{.Version}}' gitea.maximumdirect.net/eric/ConfigKit
|
GOWORK=off go list -m -f '{{.Path}} {{.Version}}' go.maximumdirect.net/configkit
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# Vanity Module Path Migration
|
# 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`.
|
Planning baseline: `21c9bc0ad0315c4ac96268b487a52376558a18d7`.
|
||||||
|
|
||||||
This roadmap defines the target and work needed to adopt
|
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.
|
tag, or downstream change is authorized merely by completing this roadmap.
|
||||||
|
|
||||||
No significant open decision remains for this migration.
|
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.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ExampleLoad() {
|
func ExampleLoad() {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Artifact is a Narratio-shaped generated output declaration.
|
// Artifact is a Narratio-shaped generated output declaration.
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_narratio() {
|
func Example_narratio() {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"io/fs"
|
"io/fs"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CollectionBundleConfig is a representative application-owned collection
|
// CollectionBundleConfig is a representative application-owned collection
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_inputDestination() {
|
func Example_inputDestination() {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FileComparisonConfig is a small application-owned shape for comparing
|
// FileComparisonConfig is a small application-owned shape for comparing
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ExampleCompareFiles() {
|
func ExampleCompareFiles() {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type workingDirectoryPresetConfig struct {
|
type workingDirectoryPresetConfig struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package consumers
|
package consumers
|
||||||
|
|
||||||
import configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
import configkit "go.maximumdirect.net/configkit"
|
||||||
|
|
||||||
// PresetCatalog is ordinary application data; no inheritance fields or
|
// PresetCatalog is ordinary application data; no inheritance fields or
|
||||||
// registration hooks are required in the typed configuration.
|
// registration hooks are required in the typed configuration.
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package consumers_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPresetCatalogOneLoadAndDerivation(t *testing.T) {
|
func TestPresetCatalogOneLoadAndDerivation(t *testing.T) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"io/fs"
|
"io/fs"
|
||||||
"path"
|
"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
|
//go:embed testdata/native-source testdata/layered-bundle testdata/collection-bundle testdata/ordinary-imports testdata/source-version
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_nativeFilesystem() {
|
func Example_nativeFilesystem() {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package consumers
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PromptCatalogConfig is an application-owned prompt collection shape.
|
// PromptCatalogConfig is an application-owned prompt collection shape.
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_identifiedPromptCatalog() {
|
func Example_identifiedPromptCatalog() {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SequenceCatalogConfig is a source-backed prompt catalog with an application
|
// SequenceCatalogConfig is a source-backed prompt catalog with an application
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/examples/consumers"
|
"go.maximumdirect.net/configkit/examples/consumers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_sequenceCatalog() {
|
func Example_sequenceCatalog() {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
// VersionedServiceConfig demonstrates a mounted main input whose source-local
|
// VersionedServiceConfig demonstrates a mounted main input whose source-local
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -23,7 +23,7 @@ var (
|
|||||||
|
|
||||||
func TestFacadeValuesRemainRootOwned(t *testing.T) {
|
func TestFacadeValuesRemainRootOwned(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
const packagePath = "gitea.maximumdirect.net/eric/ConfigKit"
|
const packagePath = "go.maximumdirect.net/configkit"
|
||||||
for _, candidate := range []reflect.Type{
|
for _, candidate := range []reflect.Type{
|
||||||
reflect.TypeFor[configkit.Path](), reflect.TypeFor[configkit.Source](),
|
reflect.TypeFor[configkit.Path](), reflect.TypeFor[configkit.Source](),
|
||||||
reflect.TypeFor[configkit.Secret](), reflect.TypeFor[configkit.Diagnostic](),
|
reflect.TypeFor[configkit.Secret](), reflect.TypeFor[configkit.Diagnostic](),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOverlayExplanationUsesQueryScopedOrigin(t *testing.T) {
|
func TestOverlayExplanationUsesQueryScopedOrigin(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package configkit_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeInactiveContextsPreserveClosedFailure(t *testing.T) {
|
func TestFacadeInactiveContextsPreserveClosedFailure(t *testing.T) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeInputDestinationsAcrossSourceKinds(t *testing.T) {
|
func TestFacadeInputDestinationsAcrossSourceKinds(t *testing.T) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeCompositionConflictKeepsClaimantOrder(t *testing.T) {
|
func TestFacadeCompositionConflictKeepsClaimantOrder(t *testing.T) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type facadeDiffConfig struct {
|
type facadeDiffConfig struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFinalDynamicTagRedactsEqualValuedResolution(t *testing.T) {
|
func TestFinalDynamicTagRedactsEqualValuedResolution(t *testing.T) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type equivalentConfig struct {
|
type equivalentConfig struct {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed testdata/filesystem
|
//go:embed testdata/filesystem
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit"
|
"go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFinalSequenceIdentityTreatsLateExtendsFieldsAsPayload(t *testing.T) {
|
func TestFinalSequenceIdentityTreatsLateExtendsFieldsAsPayload(t *testing.T) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPublicHistoricalPathsEnumerateContextualShapes(t *testing.T) {
|
func TestPublicHistoricalPathsEnumerateContextualShapes(t *testing.T) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeNativeDiscoveryPreservesAliasIdentity(t *testing.T) {
|
func TestFacadeNativeDiscoveryPreservesAliasIdentity(t *testing.T) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeDirectoryRootBelowContainedAbsoluteSymlink(t *testing.T) {
|
func TestFacadeDirectoryRootBelowContainedAbsoluteSymlink(t *testing.T) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type inheritedEntry struct {
|
type inheritedEntry struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeItemScopesDoNotReinterpretGlobalRegistrations(t *testing.T) {
|
func TestFacadeItemScopesDoNotReinterpretGlobalRegistrations(t *testing.T) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeItemDomainVersionsKeepEffectiveScope(t *testing.T) {
|
func TestFacadeItemDomainVersionsKeepEffectiveScope(t *testing.T) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type layeredFacadeConfig struct {
|
type layeredFacadeConfig struct {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type mappingFacadeConfig struct {
|
type mappingFacadeConfig struct {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeResolutionPresenceUsesDynamicEntryShape(t *testing.T) {
|
func TestFacadeResolutionPresenceUsesDynamicEntryShape(t *testing.T) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type observedResourceFS struct {
|
type observedResourceFS struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeSequenceIdentitySnapshotsSelectorsAndFields(t *testing.T) {
|
func TestFacadeSequenceIdentitySnapshotsSelectorsAndFields(t *testing.T) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeNoSourcePreservesAbsenceWithSequencePolicy(t *testing.T) {
|
func TestFacadeNoSourcePreservesAbsenceWithSequencePolicy(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type movedVersionItem struct {
|
type movedVersionItem struct {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFacadeSourceVersionEvidenceFollowsAssembledSequenceRanges(t *testing.T) {
|
func TestFacadeSourceVersionEvidenceFollowsAssembledSequenceRanges(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package configkit_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTierHistoryRecordsEachContributionOnce(t *testing.T) {
|
func TestTierHistoryRecordsEachContributionOnce(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUnderlaySequenceDescendantOrigins(t *testing.T) {
|
func TestUnderlaySequenceDescendantOrigins(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
configkit "go.maximumdirect.net/configkit"
|
||||||
)
|
)
|
||||||
|
|
||||||
type versionCountingReader struct {
|
type versionCountingReader struct {
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -1,4 +1,4 @@
|
|||||||
module gitea.maximumdirect.net/eric/ConfigKit
|
module go.maximumdirect.net/configkit
|
||||||
|
|
||||||
go 1.26.0
|
go 1.26.0
|
||||||
|
|
||||||
|
|||||||
@@ -44,10 +44,10 @@ func TestDependencyImportBoundary(t *testing.T) {
|
|||||||
production := !strings.HasSuffix(path, "_test.go")
|
production := !strings.HasSuffix(path, "_test.go")
|
||||||
rootProduction := production && filepath.Dir(path) == "."
|
rootProduction := production && filepath.Dir(path) == "."
|
||||||
internalProduction := production && strings.HasPrefix(filepath.ToSlash(path), "internal/")
|
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)
|
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)
|
t.Errorf("%s imports the public root package", path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package configkit
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
|
"go.maximumdirect.net/configkit/internal/engine"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValueSnapshot is a detached, deterministic YAML representation of one value.
|
// ValueSnapshot is a detached, deterministic YAML representation of one value.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkComposeWideMappings(b *testing.B) {
|
func BenchmarkComposeWideMappings(b *testing.B) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOverlayBroadCollectionPoliciesAndRetainedDeclarations(t *testing.T) {
|
func TestOverlayBroadCollectionPoliciesAndRetainedDeclarations(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type collectionPolicyScope struct {
|
type collectionPolicyScope struct {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCollectionPolicyWithoutValueRetainsIdentityAndMode(t *testing.T) {
|
func TestCollectionPolicyWithoutValueRetainsIdentityAndMode(t *testing.T) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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;
|
// A true entry replaces the collection itself as well as its descendants;
|
||||||
// false records ordinary ancestor replacement without selecting a collection
|
// false records ordinary ancestor replacement without selecting a collection
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSourceReplacementRetiresIdentityForEveryValueKind(t *testing.T) {
|
func TestSourceReplacementRetiresIdentityForEveryValueKind(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"maps"
|
"maps"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
// composedDocument is the private handoff between source assembly and later
|
// composedDocument is the private handoff between source assembly and later
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestComposeWideRegisteredCollectionsPreservesEvidenceAndReplay(t *testing.T) {
|
func TestComposeWideRegisteredCollectionsPreservesEvidenceAndReplay(t *testing.T) {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
|
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
func FuzzCompositionAndOverlay(f *testing.F) {
|
func FuzzCompositionAndOverlay(f *testing.F) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
var integerPattern = regexp.MustCompile(`^-?(0|[1-9][0-9]*)$`)
|
var integerPattern = regexp.MustCompile(`^-?(0|[1-9][0-9]*)$`)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type namedSmall int8
|
type namedSmall int8
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDestinationPlacementCountsAgainstSharedNodeBudget(t *testing.T) {
|
func TestDestinationPlacementCountsAgainstSharedNodeBudget(t *testing.T) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"testing/fstest"
|
"testing/fstest"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type importDestinationConfig struct {
|
type importDestinationConfig struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNormalizeDestinationUsesLiteralMappingKeys(t *testing.T) {
|
func TestNormalizeDestinationUsesLiteralMappingKeys(t *testing.T) {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
|
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
var errDiffInspectionUnavailable = errors.New("configkit: diff inspection unavailable")
|
var errDiffInspectionUnavailable = errors.New("configkit: diff inspection unavailable")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPreparePairedDiffSnapshotReportsWhollyMaskedChanges(t *testing.T) {
|
func TestPreparePairedDiffSnapshotReportsWhollyMaskedChanges(t *testing.T) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type diffIntegrationConfig struct {
|
type diffIntegrationConfig struct {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type pairedDiffSnapshot struct {
|
type pairedDiffSnapshot struct {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPreparePairedDiffSnapshotRedactsAlignedMappingFromEitherSide(t *testing.T) {
|
func TestPreparePairedDiffSnapshotRedactsAlignedMappingFromEitherSide(t *testing.T) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPrepareDiffRegionsUsesCanonicalConfigurationComparison(t *testing.T) {
|
func TestPrepareDiffRegionsUsesCanonicalConfigurationComparison(t *testing.T) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
const directiveKey = "configkit"
|
const directiveKey = "configkit"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package engine
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"cmp"
|
"cmp"
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
"slices"
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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.
|
// documentLookup contains read-only mapping positions for a completed document.
|
||||||
type documentLookup struct {
|
type documentLookup struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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
|
// walkDocument visits value nodes in preorder, preserving stored mapping order
|
||||||
// and sequence index order. Mapping keys are not separate nodes in this walk.
|
// and sequence index order. Mapping keys are not separate nodes in this walk.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type unsupportedDynamicRoot struct {
|
type unsupportedDynamicRoot struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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.
|
// ValueSnapshot is a detached, deterministic YAML representation of one value.
|
||||||
// Present distinguishes absence or deletion from an explicit null value.
|
// Present distinguishes absence or deletion from an explicit null value.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type explanationConcurrency struct {
|
type explanationConcurrency struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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 {
|
func validateFinalSequenceIdentities(root *document.Node, policy sequencePolicy) []Diagnostic {
|
||||||
if root == nil || policy.selectorTrie == nil {
|
if root == nil || policy.selectorTrie == nil {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
const historyNodeLimit = 4_000_000
|
const historyNodeLimit = 4_000_000
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type historyBudgetSimpleConfig struct {
|
type historyBudgetSimpleConfig struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
import "go.maximumdirect.net/configkit/internal/document"
|
||||||
|
|
||||||
type historyCheckpointPayload struct {
|
type historyCheckpointPayload struct {
|
||||||
root *document.Node
|
root *document.Node
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package engine
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCLIOverrideRecordsTrackConcreteShapeChanges(t *testing.T) {
|
func TestCLIOverrideRecordsTrackConcreteShapeChanges(t *testing.T) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
import "go.maximumdirect.net/configkit/internal/document"
|
||||||
|
|
||||||
type historyInheritancePayload struct {
|
type historyInheritancePayload struct {
|
||||||
operations []inheritanceOperation
|
operations []inheritanceOperation
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
import "go.maximumdirect.net/configkit/internal/document"
|
||||||
|
|
||||||
type historyPhase uint8
|
type historyPhase uint8
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
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
|
// resolutionReplayGroup is the explanation projection of one or more ordered
|
||||||
// resolution records. The covering record identifies the before/after roots;
|
// resolution records. The covering record identifies the before/after roots;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestResolutionSensitivityKeepsLogicalEdgesWithoutSubtreeDuplication(t *testing.T) {
|
func TestResolutionSensitivityKeepsLogicalEdgesWithoutSubtreeDuplication(t *testing.T) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
type historySelection struct {
|
type historySelection struct {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSensitivityCandidatesMergeRepeatedParsedPaths(t *testing.T) {
|
func TestSensitivityCandidatesMergeRepeatedParsedPaths(t *testing.T) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSequenceHistoryReplaysAppendAtAssignedIndexes(t *testing.T) {
|
func TestSequenceHistoryReplaysAppendAtAssignedIndexes(t *testing.T) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
import "go.maximumdirect.net/configkit/internal/document"
|
||||||
|
|
||||||
type historyPathOrigin struct {
|
type historyPathOrigin struct {
|
||||||
path Path
|
path Path
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestHistorySourceObservationsPreserveRawAndCompositeDefinitions(t *testing.T) {
|
func TestHistorySourceObservationsPreserveRawAndCompositeDefinitions(t *testing.T) {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"io/fs"
|
"io/fs"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
"go.maximumdirect.net/configkit/internal/document"
|
||||||
yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
|
yamladapter "go.maximumdirect.net/configkit/internal/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
type importAdmissionOutcome uint8
|
type importAdmissionOutcome uint8
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package engine
|
package engine
|
||||||
|
|
||||||
import "gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
import "go.maximumdirect.net/configkit/internal/document"
|
||||||
|
|
||||||
func prependCompositionDiagnosticPaths(diagnostics []Diagnostic, prefix Path) []Diagnostic {
|
func prependCompositionDiagnosticPaths(diagnostics []Diagnostic, prefix Path) []Diagnostic {
|
||||||
cloned := append([]Diagnostic(nil), diagnostics...)
|
cloned := append([]Diagnostic(nil), diagnostics...)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user