Add selected profile overlays
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## Status and ownership
|
||||
|
||||
Status: implementation in progress; Stages 1–9 are complete and later stages are
|
||||
Status: implementation in progress; Stages 1–13 are complete and later stages are
|
||||
pending.
|
||||
|
||||
Audience: a `gpt-5.6-terra` coding agent implementing one stage per prompt, in
|
||||
@@ -982,7 +982,31 @@ Acceptance:
|
||||
|
||||
## Stage 13 — Implement profile overlays
|
||||
|
||||
Status: pending.
|
||||
Status: complete.
|
||||
|
||||
Completion evidence (2026-09-06):
|
||||
|
||||
- Added a private non-aliasing recursive overlay that merges mappings by key and
|
||||
atomically replaces scalars, sequences, empty sequences, nulls, and cross-kind
|
||||
subtrees. Replacement deletes stale descendant origins and records every displaced
|
||||
definition plus the parent operation for later history.
|
||||
- Added exact selected-profile loading from `profiles/<name>.yml`, with constrained
|
||||
names, inactive empty/`default` selection, canonical root containment, base-graph
|
||||
duplicate rejection, deterministic profile source ownership, and shared aggregate
|
||||
source/byte/node limits. No path selection, extension fallback, inheritance, or
|
||||
implicit default file is supported.
|
||||
- Applied profiles only after base import composition and version checking and before
|
||||
defaults and strict decoding. Profiles reject `_configkit` at any depth, direct
|
||||
version contributions, and scalar/null replacements of version ancestors; base
|
||||
parse and version failures therefore cannot be masked.
|
||||
- Tests cover recursive siblings, scalar/full/empty-sequence/null/cross-kind
|
||||
replacement, lower defaults, profile source and origin attribution, removed-child
|
||||
and stale-index history, selection errors, fixed extension, directives, version
|
||||
placement, base aliases, parse ordering, filesystem context, symlink escape, input
|
||||
budgets, and non-aliasing. The
|
||||
[current profile contract](../config.md#selected-profiles) owns the behavior.
|
||||
Verified `go test ./...`, `go test -race ./...`, `go vet ./...`, `go build ./...`,
|
||||
and `git diff --check` with Go 1.26.7 on linux/amd64.
|
||||
|
||||
Read: feature [profiles](initial.md#profiles), composition/overlay table.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user