Complete artifact provenance reporting

This commit is contained in:
2026-09-07 12:08:19 +00:00
parent 3ec54b8c72
commit 0ac8072a9a
5 changed files with 144 additions and 6 deletions

View File

@@ -50,7 +50,7 @@ func EffectiveArtifactCatalog(cfg *PipelineConfig, party ResolvedParty) ([]Effec
Dependencies: append([]string(nil), artifact.DependsOn...),
}
if member, ok := cfg.familyCatalog.Members[key]; ok {
record.DefinitionSources = nonEmptySortedStrings([]string{member.Source})
record.DefinitionSources = artifactFamilyDefinitionSources(cfg, member.Family)
record.FamilyKey = member.Family
record.CharacterID = member.CharacterID
record.FamilySource = member.Source
@@ -65,7 +65,21 @@ func EffectiveArtifactCatalog(cfg *PipelineConfig, party ResolvedParty) ([]Effec
}
func artifactDefinitionSources(cfg *PipelineConfig, key string) []string {
if cfg.resolution == nil {
return declarationDefinitionSources(cfg,
configkit.Keys("scriptorium", "artifacts", key),
"scriptorium.artifacts."+key,
)
}
func artifactFamilyDefinitionSources(cfg *PipelineConfig, key string) []string {
return declarationDefinitionSources(cfg,
configkit.Keys("scriptorium", "artifact_families", key),
"scriptorium.artifact_families."+key,
)
}
func declarationDefinitionSources(cfg *PipelineConfig, declaration configkit.Path, prefix string) []string {
if cfg == nil || cfg.resolution == nil {
return nil
}
pathsByID := make(map[string]string, len(cfg.resolution.configkitSources))
@@ -78,7 +92,6 @@ func artifactDefinitionSources(cfg *PipelineConfig, key string) []string {
}
seen := map[string]struct{}{}
declaration := configkit.Keys("scriptorium", "artifacts", key)
for _, change := range cfg.resolution.configkitMetadata.History(declaration) {
if change.Origin.Layer != configkit.LayerBase && change.Origin.Layer != configkit.LayerProfile {
continue
@@ -92,7 +105,6 @@ func artifactDefinitionSources(cfg *PipelineConfig, key string) []string {
}
}
if len(seen) == 0 {
prefix := "scriptorium.artifacts." + key
for _, ownership := range cfg.resolution.ownership {
if ownership.path != prefix && !strings.HasPrefix(ownership.path, prefix+".") {
continue