Replay explanations through shared history selections

This commit is contained in:
2026-10-26 17:01:32 +00:00
parent 4b4e15fc58
commit 738c8a9cc7
12 changed files with 386 additions and 135 deletions

View File

@@ -389,6 +389,11 @@ func TestExplanationReconcilesDefaultsAfterInputReplacement(t *testing.T) {
if last.Origin.Layer != info.Origin.Layer {
t.Fatal("decoding lost effective origin")
}
for _, metadataChange := range result.Metadata().History(path) {
if metadataChange.Origin.Operation == ChangeDecoding {
t.Fatal("typed reconciliation leaked into metadata history")
}
}
}
})
}
@@ -535,6 +540,25 @@ func TestExplanationReplaysResolutionAdditionsAndOverlappingIntent(t *testing.T)
if overlap && count != 1 {
t.Fatalf("overlapping records applied %d times", count)
}
if overlap && path.String() == "/m" {
metadataHistory := result.Metadata().History(path)
var sharedResolutionOrigin bool
for _, metadataChange := range metadataHistory {
if metadataChange.Origin.Layer != LayerResolution {
continue
}
for _, explanationChange := range x.History {
if explanationChange.Origin.Layer == metadataChange.Origin.Layer &&
explanationChange.Origin.Operation == metadataChange.Origin.Operation &&
reflect.DeepEqual(explanationChange.Origin.Locations, metadataChange.Origin.Locations) {
sharedResolutionOrigin = true
}
}
}
if !sharedResolutionOrigin {
t.Fatalf("metadata and explanation disagree on overlapping resolution attribution: metadata %#v, explanation %#v", metadataHistory, x.History)
}
}
last := x.History[len(x.History)-1]
if last.After != x.Effective {
t.Fatalf("incorrect replay for %s: %#v", path, x)