Normalize projected collection history evidence

This commit is contained in:
2026-10-26 15:09:12 +00:00
parent 3828b117e8
commit 11f7154874
4 changed files with 222 additions and 6 deletions

View File

@@ -445,11 +445,12 @@ func applyOverlaySequenceEvidence(
}
}
if lower != nil {
introduced := overlayPathOrigins(higher, incomingOrigins, path, layer)
result.overlays = append(result.overlays, overlayRecord{
change: Change{
Path: path.clone(), Origin: incomingOrigin(incomingOrigins, path, higher, layer),
Previous: previousOrigins(previous),
}, displaced: displaced,
}, displaced: displaced, introduced: introduced,
})
}
} else {
@@ -468,12 +469,13 @@ func applyOverlaySequenceEvidence(
previous := cloneOrigin(result.origins[lowerPath.String()])
deleteOriginSubtree(result.origins, lowerPath, lowerItem)
collectOverlayOriginsAt(result.origins, incomingOrigins, higherItem, higherPath, outputPath, layer)
introduced := overlayPathOriginsAt(higherItem, incomingOrigins, higherPath, outputPath, layer)
result.overlays = append(result.overlays, overlayRecord{
change: Change{
Path: outputPath.clone(), Origin: incomingOrigin(incomingOrigins, higherPath, higherItem, layer),
Previous: previousOrigins(previous),
},
displaced: displaced,
displaced: displaced, introduced: introduced,
})
}
for _, projection := range combined.higherItems {
@@ -521,10 +523,16 @@ func collectOverlayOriginsFrom(origins, incomingOrigins map[string]Origin, node
}
func overlayPathOrigins(node *document.Node, incomingOrigins map[string]Origin, path Path, layer Layer) []historyPathOrigin {
return overlayPathOriginsAt(node, incomingOrigins, path, path, layer)
}
func overlayPathOriginsAt(node *document.Node, incomingOrigins map[string]Origin, from, to Path, layer Layer) []historyPathOrigin {
var introduced []historyPathOrigin
walkDocument(node, path, func(affected Path, value *document.Node) {
walkDocument(node, Path{}, func(relative Path, value *document.Node) {
source := appendDestination(from, relative)
affected := appendDestination(to, relative)
introduced = append(introduced, historyPathOrigin{
path: affected.clone(), origin: incomingOrigin(incomingOrigins, affected, value, layer),
path: affected.clone(), origin: incomingOrigin(incomingOrigins, source, value, layer),
sensitive: value.Sensitive,
})
})