# ConfigKit v0.4.0 This release renames selected configuration profiles to overlays, intentionally breaking the previous naming contract without compatibility aliases or fallback. ## Summary Selected configuration now uses `Options.Overlay` and `overlays/.yml`. Selection, merge rules, input precedence, and lifecycle behavior are unchanged. See the [selected-overlay contract](../config.md#selected-overlays). ## Compatibility This is a breaking minor release before v1.0.0. Four surfaces change: - Go API: `Options.Profile` becomes `Options.Overlay`, `LayerProfile` becomes `LayerOverlay`, and all seven `CodeProfile*` constants become `CodeOverlay*`. - Selected files: `profiles/.yml` becomes `overlays/.yml`; there is no legacy-directory fallback. - Provenance: the layer string changes from `profile` to `overlay`. - Structured diagnostics: the `profile.*` code prefix becomes `overlay.*`. The old Go identifiers are removed. Application-owned concepts such as `ModelProfile` and `model_profile` are unchanged. Ordinary explicit imports from a directory named `profiles` remain valid base inputs. The minimum Go version remains 1.25. Linux remains release-validated and macOS remains best-effort. The YAML dependency remains pinned to `go.yaml.in/yaml/v4 v4.0.0-rc.6`; this release does not change parser dependencies. ## Upgrade Update the dependency: ```sh go get gitea.maximumdirect.net/eric/ConfigKit@v0.4.0 ``` Rename the affected Go identifiers, move selected files into `overlays/`, update any handling of provenance-layer and diagnostic-code strings, and rebuild. The maintained example helper is now `LoadNarratioOverlay` rather than `LoadNarratioProfile`. Application CLI flag names remain application-owned; ConfigKit does not require renaming domain-specific profile concepts. See the [migration guide](../consumers/README.md#selected-overlay-migration). ## Changes - Rename the selected feature consistently across the public facade, internal engine, diagnostics, source labels, examples, and current documentation. - Add regression coverage for the new directory, absence of legacy fallback, public values, explanations, and preservation of application profile fields. - Align contributor policies with the current shared standard. - Simplify release validation to one local minimum-toolchain check. CI is not a release gate; successful publication of the intended tag completes the source-only release. See the [release procedure](../release.md). - Retire completed overlay and release-workflow planning documents to Git history.