Implement canonical projection and detached copies
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## Status and ownership
|
||||
|
||||
Status: implementation in progress; Stages 1–4 are complete and later stages are
|
||||
Status: implementation in progress; Stages 1–5 are complete and later stages are
|
||||
pending.
|
||||
|
||||
Audience: a `gpt-5.6-terra` coding agent implementing one stage per prompt, in
|
||||
@@ -512,7 +512,30 @@ Acceptance:
|
||||
|
||||
## Stage 5 — Implement canonical projection and detached copies
|
||||
|
||||
Status: pending.
|
||||
Status: complete.
|
||||
|
||||
Completion evidence (2026-09-06):
|
||||
|
||||
- Added descriptor-driven canonical typed projection and independently owned cloning
|
||||
in [`projection.go`](../../projection.go), without YAML serialization or a second
|
||||
binding model. Zero values, nil/empty distinctions, exact integers, destination-
|
||||
precision finite floats, durations, text scalars, dynamic concrete values, and
|
||||
recursive acyclic objects retain their configuration meaning.
|
||||
- Added active-graph cycle detection, private depth/node enforcement, safe custom
|
||||
codec and dynamic-type failures, zeroing of ignored state, reconstruction of text
|
||||
scalars into fresh instances, and non-preservation of shared pointer identity.
|
||||
- Added canonical-tree structural comparison with semantic mapping additions,
|
||||
removals and replacements, cross-kind replacement, and whole-sequence atomicity.
|
||||
The [current ownership contract](../config.md#typed-projection-and-ownership) and
|
||||
component inventory now own the implemented behavior.
|
||||
- Focused tests mutate every source alias after cloning, cover nil versus empty,
|
||||
wide integers, duration/text canonicalization, recursive acyclic values and cycles,
|
||||
unsupported dynamic types, non-finite floats, value-free codec failures, inline
|
||||
physical members/conflicts, projection bounds, ignored state, and meaningful
|
||||
comparison paths without index-wise sequence matching. Verified `go test ./...`,
|
||||
`go vet ./...`, `go build ./...`, `go mod tidy -diff`, and `git diff --check` with
|
||||
Go 1.26.7 on linux/amd64. No deviations were required; defaults and typed decoding
|
||||
remain later work.
|
||||
|
||||
Read: feature [ownership](initial.md#recorded-resolution-and-validation) and
|
||||
[type/projection contract](initial.md#supported-types-and-projection).
|
||||
|
||||
Reference in New Issue
Block a user