71 lines
4.3 KiB
Markdown
71 lines
4.3 KiB
Markdown
# ConfigKit v0.8.0
|
|
|
|
This minor release adds explicit input placement, relative import destinations,
|
|
shared source-version checking, and opt-in composition of identified sequence
|
|
records. Applications can assemble independently authored configuration fragments
|
|
into one final configuration while retaining source locations, provenance,
|
|
history, and sensitivity information.
|
|
|
|
## Changes
|
|
|
|
- Add `Destination` to ordinary load options and layered inputs. A source mapping
|
|
can contribute beneath literal application keys without being rewritten by the
|
|
consumer. Imports inherit that destination or append a relative YAML
|
|
`destination`. Physical import paths and resource contexts remain relative to
|
|
their declaring sources. See [input destinations](../config.md#input-destinations),
|
|
[import syntax](../config.md#explicit-imports), and the
|
|
[mounted collection example](../consumers/README.md#input-destinations-and-mounted-collections).
|
|
- Add `SourceVersionModeIfPresent` and `SourceVersionModeRequired` to apply one
|
|
application-owned version checker across main, underlay, imported, and selected
|
|
overlay documents. Enabled modes check source-local declarations and consume
|
|
accepted non-main headers before composition. Detached, sensitivity-aware
|
|
evidence is available through `SourceInfo.VersionCheck`. Acceptance remains
|
|
application policy; ConfigKit does not require declarations to equal the main
|
|
version. See [shared source-version checks](../config.md#shared-source-version-checks).
|
|
- Add explicit `PlacementModeSequenceItem` placement for ordinary and layered
|
|
inputs, and `placement: sequence-item` for path and glob imports. A source
|
|
mapping becomes one item at its destination; ordinary helper imports compose
|
|
within that item and can supply its identity. See
|
|
[imports](../config.md#explicit-imports).
|
|
- Add `Definition.SequenceCompositions` registrations for strict composition at
|
|
selected literal paths using one string identity field. Distinct records append
|
|
in contribution order, while duplicate identities conflict. Higher-priority
|
|
sequences still replace lower-priority sequences wholesale. Registration does
|
|
not add identity-based overlays or final identity validation after defaults and
|
|
application resolution. See the [composition contract](../config.md#strict-document-composition)
|
|
and [maintained prompt catalog](../consumers/README.md#identified-prompt-sequences).
|
|
- Extend source inspection with destination and placement evidence, including
|
|
whether a nested destination is unresolved in an intermediate or failed-load
|
|
snapshot. Preserve source-specific history, consumed-header sensitivity, and
|
|
explanations of descendants removed by sequence replacement as records are
|
|
assembled. Source locations continue to identify authored coordinates.
|
|
|
|
## Compatibility and upgrade
|
|
|
|
The new behavior is opt-in: zero-valued destinations retain root placement,
|
|
mapping placement remains the default, unregistered sequences retain strict
|
|
conflict behavior, and the default source-version mode preserves the existing
|
|
main-only version policy. Recursive mapping precedence, whole-sequence
|
|
replacement between tiers, and application-owned final validation remain intact.
|
|
|
|
Public option, definition, input, and source-information structs gain fields.
|
|
Consumers using unkeyed literals for affected structs must switch to keyed
|
|
literals or update them. `SourceInfo` now contains a `Path` and is no longer
|
|
comparable with `==` or usable directly as a map key; compare the relevant fields
|
|
or select an application-appropriate key instead. Existing keyed literals need
|
|
no changes to retain the previous loading behavior.
|
|
|
|
Select this version and rebuild:
|
|
|
|
```sh
|
|
go get gitea.maximumdirect.net/eric/ConfigKit@v0.8.0
|
|
```
|
|
|
|
The consumer minimum remains Go 1.26.0. The YAML dependency remains
|
|
`go.yaml.in/yaml/v4 v4.0.0-rc.6`, and the maintainer tool dependency remains
|
|
ReleaseKit v0.4.1. Linux amd64 and arm64 remain release-validated targets;
|
|
macOS remains best-effort. Publication follows the existing
|
|
[release procedure](../release.md).
|
|
|
|
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.8.0/COPYRIGHT) | [LICENSE](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.8.0/LICENSE) | [ATTRIBUTION](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.8.0/docs/oss/attribution.md)
|