59 lines
2.8 KiB
Markdown
59 lines
2.8 KiB
Markdown
# 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](../config.md#application-schema-versions).
|
|
|
|
## 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](../policy/release.md#policy-exceptions).
|
|
|
|
## Upgrade
|
|
|
|
```sh
|
|
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.
|