Add maintained consumer migration examples
This commit is contained in:
@@ -1437,7 +1437,56 @@ Acceptance:
|
||||
|
||||
## Stage 20 — Prove consumer ergonomics and migration contracts
|
||||
|
||||
Status: pending.
|
||||
Status: complete.
|
||||
|
||||
Completion evidence (2026-09-06):
|
||||
|
||||
- Added the maintained [`examples/consumers`](../../examples/consumers) package and
|
||||
sanitized local fixtures for four application shapes. The Narratio-like example
|
||||
uses fresh defaults, partial imports, artifacts, recorded inherited defaults, and
|
||||
an application model profile distinct from an optional ConfigKit profile. The
|
||||
Notarius-like example uses canonical object bindings, a string version rule,
|
||||
dynamic options, and range-checked `int64` conversion at the runtime boundary.
|
||||
- Added WeatherReporter-like defaults-only and file loads, report maps, canonical
|
||||
module objects, typed option unions, and shared loaded/constructed validation.
|
||||
Application validation—not the ConfigKit schema—rejects explicit empty module and
|
||||
path-template lists and null required module options. Recorded normalization acts
|
||||
on detached values without mutating caller-owned constructed options. Added
|
||||
independent ordered Seriatim-like speaker and autocorrect rule loaders while
|
||||
retaining matching/replacement algorithms in the example package.
|
||||
- Added executable examples for all four shapes and a WeatherReporter-shaped startup
|
||||
flow. The startup explicitly renders `SecretsReport`, demonstrates an existing
|
||||
empty variable blocking its file and a separate successful disposable lookup,
|
||||
translates only an explicitly set `--units` flag into an `Override`, and renders
|
||||
its explanation. It verifies ordinary `Load` preserves the process environment
|
||||
and never uses a real credential.
|
||||
- Generalized the assigned Narratio inspection/default/artifact outcomes and
|
||||
WeatherReporter defaults, explicit-empty, loaded/constructed consistency, and
|
||||
option-normalization cases. [`docs/internal/extraction.md`](../internal/extraction.md)
|
||||
records the rechecked clean revisions, adapted cases, intentional differences,
|
||||
and no-copy boundaries for Narratio `b68435128be1e24b94fc7ec259d6e9093669fd99`,
|
||||
WeatherReporter `5d306a202471e10fe98923a1df27d0b0fce5c666`, Notarius
|
||||
`77ae132e5609916da40dcd4fcc749c000a63cbac`, and Seriatim
|
||||
`0fc92f364316c874d366b00cdc884a33e1900b25`. No sibling checkout is a build or test
|
||||
dependency.
|
||||
- Added negative migration fixtures for integer versions, string module shorthand,
|
||||
explicit empty lists, explicit null required options, and strict unknown fields.
|
||||
They fail with stable `version.type`, `decode.type`, `validate.error`, and
|
||||
`decode.unknown_field` classifications at semantic paths without parser text.
|
||||
Dynamic options bind directly without YAML reserialization or a generic subtree
|
||||
conversion API.
|
||||
- Added the [consumer adoption guide](../consumers/README.md), current canonical
|
||||
module-options contract, README navigation, and component inventory. The guide
|
||||
maps every feature-roadmap API sketch to an executable example or focused test,
|
||||
describes removed plumbing versus retained domain code, and lists explicit
|
||||
empty/null, object, version, integer, strict-YAML, environment-overlay, CLI, and
|
||||
secret-reference migrations without claiming downstream repositories are migrated.
|
||||
- Confirmed the example package directly imports only ConfigKit and the standard
|
||||
library, then reviewed the exported surface and existing AST import-boundary test
|
||||
for aliases, generic constraints, callbacks, record fields, and safe error chains.
|
||||
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; broader hardening remains later work.
|
||||
|
||||
Read: feature consumer-fit table, module options, external values, and both criteria.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user