2.8 KiB
ConfigKit v0.2.0
This release adds integer schema-version input and consistent canonical sequence path handling.
Summary
Applications can retain YAML such as version: 4 while storing and checking their
version as a Go string. The exception applies only to the path designated by
VersionRule; unrelated fields keep strict decoding. See the
configuration contract.
Compatibility
This minor release intentionally changes integer schema-version input from a
version.type rejection to invoking the application checker with its decimal text.
Plain string destinations at that path now accept it. Public Go API shapes,
minimum Go version, and supported platforms are unchanged.
Parsed sequence indices now require canonical nonnegative decimal spelling.
Signed tokens such as +0 and -0, previously accepted by some traversal paths,
no longer identify sequence elements. They remain valid literal mapping keys.
Version checking, decoding, and metadata matching now agree on this boundary.
The private YAML dependency remains pinned to go.yaml.in/yaml/v4 v4.0.0-rc.6,
confirmed as the newest available v4 release during candidate preparation. Linux
candidate checks use Go 1.25.5 and Go 1.26.7. The maintainer confirmed native macOS
checks at 244104f and approved carrying that result across the documentation-only
candidate changes under the recorded exception.
Upgrade
go get gitea.maximumdirect.net/eric/ConfigKit@v0.2.0
Existing string schema versions need no configuration changes. Applications using
integer YAML versions can retain them and use a plain string field plus a
VersionRule. Review the application checker: it now receives integer identifiers
as text, and remains responsible for rejecting unsupported versions. Fractions,
exponents, booleans, and containers remain invalid version kinds.
Replace signed sequence-index tokens in configured paths with canonical indices
(for example, /versions/+0 becomes /versions/0). Do not change signed mapping
keys. Literal integers elsewhere still do not decode into strings, and numeric
destinations retain their existing range checks.
Changes
- Added load-local, path-scoped integer-to-string schema-version decoding without mutating original input or introducing general scalar coercion.
- Preserved numeric historical input, string effective output, decoding reconciliation, source attribution, and secret redaction.
- Unified sequence path interpretation and added regression coverage for signed tokens, literal mapping keys, and explicit key/index distinctions.
- Updated maintained Notarius-shaped fixtures and migration guidance for quoted and integer version forms.
- Retired completed implementation and remediation roadmaps to Git history.