Files
ConfigKit/docs/releases/v0.8.0.md

4.3 KiB

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, import syntax, and the mounted collection example.
  • 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.
  • 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.
  • 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 and maintained prompt catalog.
  • 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:

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.

COPYRIGHT | LICENSE | ATTRIBUTION