Activate selected overlay collection policies
This commit is contained in:
@@ -824,12 +824,13 @@ headers are consumed before strict composition and cannot supply a registered
|
||||
record identity. Final typed decoding and application validation still run on the
|
||||
completed configuration.
|
||||
|
||||
Ordinary source documents may also declare collection behavior under the root
|
||||
`configkit.sequences` key. Each entry has a required literal `destination` and may
|
||||
specify `key` as one string or a nonempty list of strings, plus a `mode` of
|
||||
`replace`, `append`, or `upsert`. These controls are removed before application
|
||||
decoding. A declaration destination is relative to that source's placement, so a
|
||||
mounted fragment's declaration is mounted with its values. Declarations from
|
||||
Ordinary sources and selected overlays may declare collection behavior under
|
||||
`configkit.sequences` at the document root. Each entry has a required literal
|
||||
`destination` and may specify `key` as one string or a nonempty list of strings,
|
||||
plus a `mode` of `replace`, `append`, or `upsert`. These controls are removed
|
||||
before application decoding. A declaration destination is relative to that
|
||||
source's placement, so a mounted fragment's declaration is mounted with its
|
||||
values. Declarations from
|
||||
strict peers must agree on identity fields and on any explicitly supplied mode;
|
||||
they apply even when the declaring source has no value at that destination.
|
||||
Singleton sequence contributions are validated as well as peers. A key supplies
|
||||
@@ -839,9 +840,11 @@ a keyed collection uses `upsert`, while an unkeyed collection uses `replace`.
|
||||
replaces a complete matched record at its existing position and appends new
|
||||
identities in incoming order; it does not merge record fields.
|
||||
|
||||
At this boundary, declarations govern ordinary strict source composition,
|
||||
including loads with imports disabled. They do not change selected-overlay or
|
||||
layered precedence, inheritance, or CLI behavior. A root `configkit.imports`
|
||||
Declarations govern ordinary strict source composition, including loads with
|
||||
imports disabled, and selected-overlay precedence. Overlay declarations apply
|
||||
after the base source graph is composed and must agree with retained collection
|
||||
identity and any application registration. They do not change layered
|
||||
precedence, inheritance, or CLI behavior. A root `configkit.imports`
|
||||
declaration still requires `Options.Imports`; `NoSource` has no declaration scope.
|
||||
|
||||
An empty mapping contributes no child definitions. Two empty mappings compose, and
|
||||
@@ -885,10 +888,15 @@ origin data; history retains the displaced definitions and identifies the parent
|
||||
replacement. Surviving overlay paths have overlay origins, while recursively shared
|
||||
mapping containers retain their contributing locations.
|
||||
|
||||
An overlay may not contain `configkit` anywhere, contribute the configured schema
|
||||
version, or replace an ancestor of that version with a scalar or null. These rules
|
||||
apply even if the supplied version text would be unchanged. Overlays cannot mask a
|
||||
base parse, composition, or version failure because those checks run first.
|
||||
An overlay may contain only root `configkit.sequences` declarations; overlay
|
||||
imports and nested directives are rejected. Sequence declarations are removed
|
||||
before application decoding. At declared or registered sequence destinations,
|
||||
`replace`, `append`, and `upsert` use the same identity and policy rules as source
|
||||
composition. Other overlay sequences remain atomic replacements. An overlay may
|
||||
not contribute the configured schema version or replace an ancestor of that
|
||||
version with a scalar or null. These rules apply even if the supplied version
|
||||
text would be unchanged. Overlays cannot mask a base parse, composition, or
|
||||
version failure because those checks run first.
|
||||
|
||||
## Explicit CLI overrides
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Sequence Identity And Combination Implementation Plan
|
||||
|
||||
Status: implementation in progress; Stages 1–13 complete.
|
||||
Status: implementation in progress; Stages 1–14 complete.
|
||||
|
||||
Audience: a Luna coding agent implementing one numbered stage per prompt, in
|
||||
order. This plan starts at commit
|
||||
@@ -519,6 +519,10 @@ using the source/declaration handoff already active in Stage 13.
|
||||
Validation: ordinary-load, overlay, composition, policy, and metadata tests plus
|
||||
the everyday check.
|
||||
|
||||
**Completion:** Implemented and verified with ordinary overlay-operation,
|
||||
sequence-policy, source-version, and metadata tests. Validation commands:
|
||||
`go test ./internal/engine -count=1` and `./scripts/check.sh`.
|
||||
|
||||
## Stage 15 — Integrate Lower Policy Across Layered Assembly
|
||||
|
||||
Scope: source-backed underlay coordination and the layered selected-overlay path,
|
||||
|
||||
Reference in New Issue
Block a user