Decode typed configuration over defaults
This commit is contained in:
@@ -170,6 +170,19 @@ Assigned across schema, decoding, resolution, validation, and consumer examples:
|
||||
application-owned; every domain mutation is recorded. Campaign/session fallback,
|
||||
search paths, fetching, storage, and concrete default values remain in Narratio.
|
||||
|
||||
Implementation record (2026-09-06): ConfigKit generalized Narratio's fresh-default,
|
||||
strict nested-type, and explicit-presence cases into `decode.go` and
|
||||
`decode_test.go`. The decoder applies the owned document tree over a detached typed
|
||||
baseline, treats mappings recursively and sequences atomically, preserves explicit
|
||||
false/zero/empty/null, rejects unknown nested fields, and returns private presence
|
||||
and default/input origin artifacts. Unlike Narratio's custom YAML hooks and
|
||||
pointer/zero inference, presence comes directly from the parsed tree and equal-valued
|
||||
input remains explicit. ConfigKit also adds destination-width numeric checks,
|
||||
dynamic `int64`/`float64`, exact arrays, duration strings, paired text codecs, safe
|
||||
multi-error collection, and repeated-result isolation. Resolution, validation,
|
||||
consumer defaults, and all campaign/session algorithms remain assigned to later
|
||||
work.
|
||||
|
||||
### Secrets bootstrap
|
||||
|
||||
Assigned to the explicit bootstrap operation:
|
||||
|
||||
@@ -7,18 +7,21 @@ module and package documentation boundary. Its implemented public primitives are
|
||||
- detached provenance and diagnostic record types with empty `Metadata` queries;
|
||||
- canonical, control-safe diagnostic rendering and structured `LoadError` access;
|
||||
- opaque file, byte, reader, and no-input source construction and bounded reads;
|
||||
- a parser-independent ordered tree in `internal/document`; and
|
||||
- a parser-independent ordered tree in `internal/document`;
|
||||
- the sole upstream YAML integration in `internal/yaml`, which translates validated
|
||||
input into that owned tree and exposes no parser types outside its boundary; and
|
||||
input into that owned tree and exposes no parser types outside its boundary;
|
||||
- a per-operation private reflection descriptor graph in `schema.go` for supported
|
||||
types, YAML field binding, inlining, secret tags, recursion, and semantic paths;
|
||||
and
|
||||
- descriptor-driven canonical projection, detached typed cloning, cycle/limit
|
||||
enforcement, and structural comparison in `projection.go`.
|
||||
enforcement, and structural comparison in `projection.go`; and
|
||||
- strict schema-driven decoding over detached defaults in `decode.go`, including
|
||||
mapping/sequence semantics, null and numeric policy, safe codec errors, presence,
|
||||
baseline/final trees, and initial default/input origins.
|
||||
|
||||
The [configuration contract](../config.md) owns implemented input, schema, and
|
||||
ownership behavior. ConfigKit intentionally exposes no typed loading or decoding API yet.
|
||||
Private metadata population will be integrated when that lifecycle exists.
|
||||
The [configuration contract](../config.md) owns implemented input, schema, decoding,
|
||||
and ownership behavior. ConfigKit intentionally exposes no typed loading API yet;
|
||||
the decoder and its initial metadata artifacts remain private until that lifecycle
|
||||
exists.
|
||||
|
||||
The source-extraction inventory records the application foundations assigned to
|
||||
future implementation work:
|
||||
|
||||
Reference in New Issue
Block a user