Document field-level resolution and matched sequence history

This commit is contained in:
2026-11-03 01:01:25 +00:00
parent 43ac34d10e
commit c2b3cb32da
10 changed files with 59 additions and 21 deletions

View File

@@ -1,5 +1,7 @@
# Sequence resolution and inspection implementation plan
Status: complete.
## Scope and execution
Implement the agreed [feature roadmap](resolution-sequences.md) from baseline
@@ -423,6 +425,8 @@ no exported type, selector, or callback lifecycle change is needed.
## Stage 13 — Document the implemented contract and validate the sprint
**Status:** Complete. Focused engine, facade, and consumer checks, `go test -race ./...`, and `./scripts/check.sh` passed with Go 1.27.0 on Linux.
**Scope:** canonical documentation and final integration checks.
1. Update `docs/config.md` resolution, layered metadata, historical explanation,

View File

@@ -1,6 +1,6 @@
# Field-level resolution and identity-aware sequence history
Status: agreed direction; not implemented. This roadmap describes field-level
Status: implemented. This roadmap records field-level
resolution auditing and identity-aware inspection of registered collections.
The [implementation plan](implementation.md) owns execution order and verification.
@@ -17,27 +17,25 @@ inspection. For ordinary lists, position is the only available correspondence;
compare positions as addresses without inferring which application object an
element represents.
## Current baseline
## Prior baseline
The [resolution contract](../config.md#recorded-application-resolution) audits
the typed configuration before and after `Definition.Resolve`. Mappings are
compared recursively, while the private structural comparator reports any list
change at the whole-list path. A field-level record inside a changed list
therefore fails to cover that list-level delta. Recording the whole list works.
At the planning baseline, the resolution contract audited the typed configuration
before and after `Definition.Resolve`. Mappings were compared recursively, while
the private structural comparator reported any list change at the whole-list
path. A field-level record inside a changed list therefore failed to cover that
list-level delta. Recording the whole list worked.
For example, changing `/resources/0/path` and recording only that path currently
produces an unrecorded-change diagnostic at `/resources`. This is established
For example, changing `/resources/0/path` and recording only that path previously
produced an unrecorded-change diagnostic at `/resources`. That was established
behavior rather than a new regression associated with v1.0.0.
The comparator also serves other inspection and metadata operations. Making
resolution auditing more precise must account for those callers rather than
silently changing the public diff contract.
Resolution currently captures before and after values at the same numeric path.
Its metadata refresh also consults entry metadata at that path. Following a
registered record through a move therefore requires more than changing which
deltas pass the coverage audit: the retained evidence must identify the matching
entry and final record.
The prior resolution implementation captured before and after values at the
same numeric path and refreshed metadata at that path. Following a registered
record through a move requires the matching entry and final record evidence.
Application registrations already define identities for collections and constrain
their final values. YAML-only declarations have a shorter lifetime. The