71 lines
3.6 KiB
Markdown
71 lines
3.6 KiB
Markdown
# ConfigKit v0.3.0
|
|
|
|
This release adds source provenance during application resolution, separates the
|
|
public API from its internal engine, and moves macOS to best-effort support.
|
|
|
|
## Summary
|
|
|
|
Resolvers can query fixed entry-state metadata and already-acquired sources using
|
|
`Resolution.InputInfo` and `Resolution.Source`. This supports application-owned
|
|
decisions such as resolving relative paths against their declaring configuration
|
|
files. See the [resolution contract](../config.md#recorded-application-resolution)
|
|
and the maintained [source-aware path example](../consumers/README.md#source-aware-application-path-policy).
|
|
|
|
The root `configkit` package now owns public types and explicit wrappers around a
|
|
single private engine. Internal changes no longer automatically expand public
|
|
method sets through shared type aliases. See the [component overview](../internal/overview.md)
|
|
and [facade decision](../adr/0006-public-facade.md).
|
|
|
|
## Compatibility
|
|
|
|
Existing consumer imports, exported API signatures, configuration syntax,
|
|
precedence, secret handling, callback lifetime, and ownership behavior are
|
|
preserved. The two resolution query methods are additive and available only
|
|
during an active resolution callback; returned records remain detached. The
|
|
library supplies provenance, not a new filesystem normalization policy.
|
|
|
|
macOS on amd64 and arm64 is now best-effort rather than release-validated.
|
|
Neither native macOS evidence nor Darwin cross-builds are required for publication,
|
|
and macOS-specific failures do not by themselves block a release. Linux on amd64
|
|
and arm64 retains release-gated builds and native Linux validation. See the
|
|
[platform support policy](../policy/release.md#platform-support).
|
|
|
|
The module still requires Go 1.25 or newer. 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 preparation. It is still a prerelease dependency, isolated behind
|
|
the existing private parser boundary; no dependency upgrade is included.
|
|
|
|
Linux candidate validation uses Go 1.25.14 and Go 1.26.8, including the complete
|
|
release checker, race tests, consumer examples, filesystem fixtures, and Linux
|
|
cross-builds. No native macOS validation is claimed for this candidate.
|
|
|
|
## Upgrade
|
|
|
|
```sh
|
|
go get gitea.maximumdirect.net/eric/ConfigKit@v0.3.0
|
|
```
|
|
|
|
No code or configuration migration is required for the facade refactor. Adopt the
|
|
new provenance queries only if your resolver needs them. Applications retain
|
|
ownership of relative-path bases and fallback/error behavior.
|
|
|
|
macOS consumers should account for the reduced validation commitment and perform
|
|
their own application checks when upgrading if macOS behavior is important to
|
|
their deployment.
|
|
|
|
## Changes
|
|
|
|
- Added callback-scoped, fixed entry metadata and source lookup without additional
|
|
filesystem access or credential resolution.
|
|
- Added a maintained Notarius-shaped path-normalization example with provenance,
|
|
frozen effective output, and explanation coverage.
|
|
- Moved loading, schema, resolution, provenance/history, secret, and rendering
|
|
machinery into one internal engine while keeping public named types root-owned.
|
|
- Added exact-type secret and callback adapters, with regression coverage for
|
|
missing version checkers and nil/zero closed-context failures.
|
|
- Added type-aware public-boundary checks covering aliases, collections, generic
|
|
constraints, and exported method sets; restored public reference documentation.
|
|
- Removed macOS release gates and retained required Linux validation.
|
|
- Retired completed feature, implementation, and remediation documents to Git
|
|
history and repaired navigation to current contract and component owners.
|