Add single-source loading and version checks
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## Status and ownership
|
||||
|
||||
Status: implementation in progress; Stages 1–6 are complete and later stages are
|
||||
Status: implementation in progress; Stages 1–7 are complete and later stages are
|
||||
pending.
|
||||
|
||||
Audience: a `gpt-5.6-terra` coding agent implementing one stage per prompt, in
|
||||
@@ -619,7 +619,37 @@ Acceptance:
|
||||
|
||||
## Stage 7 — Assemble single-source loading and schema-version checks
|
||||
|
||||
Status: pending.
|
||||
Status: complete.
|
||||
|
||||
Completion evidence (2026-09-06):
|
||||
|
||||
- Added the public generic `Load`, `Definition`, `Options`, `Result`, version,
|
||||
filesystem-context, override, validation-context, and reserved resolution
|
||||
declarations in [`load.go`](../../load.go) and [`validation.go`](../../validation.go).
|
||||
The active lifecycle validates options, parses one source, rejects reserved
|
||||
directives, builds the schema, checks an optional application version, creates
|
||||
fresh defaults, decodes, and captures detached state.
|
||||
- Added absent/null/string version handling, non-string rejection, exact/nearest
|
||||
primary and related input locations, safe application reports, warning retention,
|
||||
and generic value-free hook failure only when no explicit error was reported.
|
||||
Defaults run only after version success and exactly once for a continuing load.
|
||||
- Populated effective base/default `Metadata` and chronological definition history
|
||||
in [`load_metadata.go`](../../load_metadata.go), with explicit and null state,
|
||||
synthetic default origins, base coordinates, equal-valued input records, and
|
||||
defensive result/source/diagnostic copies. `NoSource` performs the same schema,
|
||||
version, defaults, decode, and projection lifecycle without a source record.
|
||||
- Added explicit `options.unavailable` gates for resolution, semantic validation,
|
||||
imports, active profiles, filesystem context, overrides, and secret classification;
|
||||
invalid `NoSource` combinations and `_configkit` directives fail rather than being
|
||||
ignored. The [current single-source contract](../config.md#single-source-loading),
|
||||
package documentation, README, and component inventory own the implemented API.
|
||||
- Integration tests cover File/Bytes/Reader/NoSource, schema-version states and
|
||||
warnings, related locations, raw hook-error suppression, fresh-default ordering,
|
||||
metadata agreement and detachment, source lists, unavailable options, reserved
|
||||
directives, and nil results for source/schema/version/decode failures. Verified
|
||||
`go test ./...`, `go test -race ./...`, `go vet ./...`, `go build ./...`,
|
||||
`go mod tidy -diff`, and `git diff --check` with Go 1.26.7 on linux/amd64. No
|
||||
deviations were required; resolution and semantic validation remain later work.
|
||||
|
||||
Read: feature [lifecycle](initial.md#resolution-lifecycle),
|
||||
[version hook](initial.md#schema-checking-and-secret-classification),
|
||||
|
||||
Reference in New Issue
Block a user