Summary
When an image is acquired (mirrored) from an external registry into quarantine/<image>, attach a new OCI 1.1 referrer artifact to the mirrored image that records acquisition details — where the image came from and how it was acquired.
Motivation
Today the mirror flow copies the upstream image (and optionally its referrers) into ghcr.io/<owner>/quarantine/<image>, but it does not record any first-party provenance about the acquisition itself. Once an image sits in quarantine we lose the context of:
- the source registry / repository / tag it came from (e.g.
docker.io/library/python:3.14-slim),
- the source digest at acquisition time,
- when it was acquired and by which workflow run,
- whether referrers were copied, force was used, etc.
This makes it hard to answer "where did this image come from, and when did we pull it?" from the artifact itself, in a portable, registry-native way.
Design
Settled and documented in docs/architecture/acquire/acquisition-provenance.md:
- Artifact: in-toto Statement (
application/vnd.in-toto+json), predicate type https://toddysm.com/acquisition-provenance/v0.1.
- Subjects: both the tag/index and each per-platform child manifest.
- Scope: external → quarantine acquisition only (via
_mirror-image.yml, never promotion).
- Trigger: only when
mirror-image reports copied == true.
- Shape: new
attach-acquisition-provenance composite action + record_acquisition_provenance input (default true) on _mirror-image.yml.
Work items
Summary
When an image is acquired (mirrored) from an external registry into
quarantine/<image>, attach a new OCI 1.1 referrer artifact to the mirrored image that records acquisition details — where the image came from and how it was acquired.Motivation
Today the mirror flow copies the upstream image (and optionally its referrers) into
ghcr.io/<owner>/quarantine/<image>, but it does not record any first-party provenance about the acquisition itself. Once an image sits in quarantine we lose the context of:docker.io/library/python:3.14-slim),This makes it hard to answer "where did this image come from, and when did we pull it?" from the artifact itself, in a portable, registry-native way.
Design
Settled and documented in docs/architecture/acquire/acquisition-provenance.md:
application/vnd.in-toto+json), predicate typehttps://toddysm.com/acquisition-provenance/v0.1._mirror-image.yml, never promotion).mirror-imagereportscopied == true.attach-acquisition-provenancecomposite action +record_acquisition_provenanceinput (defaulttrue) on_mirror-image.yml.Work items
attach-acquisition-provenancecomposite action_mirror-image.yml(depends on Acquisition provenance: attach-acquisition-provenance composite action #141)