Persist partial analysis artifact results

This commit is contained in:
2026-08-29 18:36:21 +00:00
parent 23c714da66
commit 903dc70682
7 changed files with 562 additions and 4 deletions

View File

@@ -84,6 +84,25 @@ func ValidateAnalyzeArtifactCollection(version int, records map[string]AnalyzeAr
return nil
}
// CloneAnalyzeArtifactCollection returns a deep copy in canonical dependency
// order so projections cannot be mutated after application.
func CloneAnalyzeArtifactCollection(records map[string]AnalyzeArtifactRecord) map[string]AnalyzeArtifactRecord {
if records == nil {
return nil
}
cloned := make(map[string]AnalyzeArtifactRecord, len(records))
for key, record := range records {
record.Dependencies = cloneStrings(record.Dependencies)
record.Logs = cloneStrings(record.Logs)
record.GeneratedConfigs = cloneStrings(record.GeneratedConfigs)
record.Output = cloneArtifactRecord(record.Output)
record.Scriptorium = cloneAnalyzeProvenance(record.Scriptorium)
cloned[key] = record
}
normalizeAnalyzeArtifactCollection(cloned)
return cloned
}
func validateAnalyzeStageState(stageName string, version int, records map[string]AnalyzeArtifactRecord) error {
if stageName != "analyze" {
if version != 0 || records != nil {