From 137769f3f18a370c68444242fb5d88e620e307e5 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sat, 17 Oct 2026 04:58:01 +0000 Subject: [PATCH] Document the ConfigKit v0.8.0 release --- docs/releases/v0.8.0.md | 70 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docs/releases/v0.8.0.md diff --git a/docs/releases/v0.8.0.md b/docs/releases/v0.8.0.md new file mode 100644 index 0000000..9af2237 --- /dev/null +++ b/docs/releases/v0.8.0.md @@ -0,0 +1,70 @@ +# 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)