Separate projection cloning and value comparison

This commit is contained in:
2026-09-07 01:08:43 +00:00
parent 633c5cd519
commit 1cc645f30f
15 changed files with 447 additions and 406 deletions

View File

@@ -23,8 +23,10 @@ module and package documentation boundary. Its implemented public primitives are
in `override.go`, sharing overlay, source, byte, node, and depth policies;
- a per-operation private reflection descriptor graph in `schema.go` for supported
types, YAML field binding, inlining, secret tags, recursion, and semantic paths;
- descriptor-driven canonical projection, detached typed cloning, cycle/limit
enforcement, and structural comparison in `projection.go`;
- descriptor-driven canonical projection in `projection.go`, detached typed
cloning with explicit secret-state modes in `clone.go`, shared reflection and
cycle/limit state in `value_operation.go`, and configuration-value comparison
in `document_compare.go`; validation separately audits sensitivity and secrets;
- strict schema-driven decoding over detached defaults in `decode.go`, including
mapping/sequence semantics, null and numeric policy, safe codec errors, presence,
baseline/final trees, and initial default/input origins;

View File

@@ -204,7 +204,16 @@ or predicate coverage changes. Do not add tests that assert walker call counts.
## Stage 5 — Separate typed projection, cloning, and comparison
Status: pending.
Status: complete.
Completion: projection, detached cloning, shared reflection state, and value-only
comparison now have separate owners. Named secret clone modes preserve the two
ownership barriers. Validation combines value and sensitivity comparison in a
named helper and separately audits resolved secret state. Standard `cmp.Compare`
replaces the custom comparator; tests changed only for private symbol renames.
Full offline baseline and race suites passed with Go 1.26.7 on Linux/amd64,
including codec/cycle/limit, callback ownership, sensitivity, and secret-state
regressions.
Evidence: [projection.go](../../projection.go) combines roughly 622 lines of
projection, detached cloning, dynamic schema handling, cycle/limit enforcement,