Execute incremental analysis artifact plans
This commit is contained in:
@@ -291,6 +291,41 @@ func (c *ArtifactCatalog) MarkAvailableGenerated(sourceID, path string) error {
|
||||
return c.markAvailable(sourceID, path, ArtifactProvenanceGeneratedCurrentAnalyzeRun)
|
||||
}
|
||||
|
||||
// MarkAvailableGeneratedEvidence marks one source as available from the
|
||||
// current analyze invocation and retains the semantic output identity needed
|
||||
// by later scheduled dependents.
|
||||
func (c *ArtifactCatalog) MarkAvailableGeneratedEvidence(
|
||||
sourceID, path, producerRunID, checksum string,
|
||||
size int64,
|
||||
contract *artifactmodel.ContractMetadata,
|
||||
) error {
|
||||
producerRunID = strings.TrimSpace(producerRunID)
|
||||
checksum = strings.TrimSpace(checksum)
|
||||
if err := ValidateRunIdentity(producerRunID); err != nil {
|
||||
return fmt.Errorf("generated artifact producer run id: %w", err)
|
||||
}
|
||||
if err := validateSHA256(checksum); err != nil {
|
||||
return fmt.Errorf("generated artifact checksum: %w", err)
|
||||
}
|
||||
if size <= 0 {
|
||||
return fmt.Errorf("generated artifact size must be positive")
|
||||
}
|
||||
if contract == nil || strings.TrimSpace(contract.MediaType) == "" ||
|
||||
strings.TrimSpace(contract.SchemaID) == "" || strings.TrimSpace(contract.SchemaVersion) == "" {
|
||||
return fmt.Errorf("generated artifact contract is incomplete")
|
||||
}
|
||||
if err := c.markAvailable(sourceID, path, ArtifactProvenanceGeneratedCurrentAnalyzeRun); err != nil {
|
||||
return err
|
||||
}
|
||||
entry := c.entries[strings.TrimSpace(sourceID)]
|
||||
entry.ProducerRunID = producerRunID
|
||||
entry.Checksum = checksum
|
||||
entry.Size = size
|
||||
entry.Contract = cloneArtifactContract(contract)
|
||||
c.entries[entry.SourceID] = entry
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *ArtifactCatalog) markAvailableFromExtractManifest(
|
||||
sourceID, path, producerRunID, checksum string,
|
||||
size int64,
|
||||
|
||||
Reference in New Issue
Block a user