What's Changed
⚠️ Breaking IDL change (deliberate)
ArtifactSpec.parent_artifactandProducedArtifact.parent_artifactare replaced in place byrepeated parent_artifacts(same field numbers,max_items = 32) by #7972. The singular field shipped in v2.0.47 days ago with no consumers, so it is replaced rather than deprecated.
Artifact lineage: multiple parents (git-like merge DAG)
- An artifact version can now declare several parent versions: one entry is plain derivation, several record a merge, making version history a full DAG. Order is preserved (first entry = primary parent); duplicates after scope/name inheritance are rejected. Per-entry semantics are unchanged from v2.0.47: parents live in the child's own org/project/domain, empty key fields inherit the child's scope/name (bare
{version}= same-name parent), stored as given, dangling parents legal, immutable. buf.validatelength bounds oncore.ArtifactKey(project/domain 64, name 255, org 63) andArtifactVersionId.version(255).- The
ListArtifactsparent_name+parent_versionfilter pair now matches artifacts having the given version among their parents.
Full Changelog: v2.0.47...v2.0.48