Skip to content

Add promotion record predicate type - #532

Open
puerco wants to merge 4 commits into
in-toto:mainfrom
puerco:promotion_record
Open

Add promotion record predicate type#532
puerco wants to merge 4 commits into
in-toto:mainfrom
puerco:promotion_record

Conversation

@puerco

@puerco puerco commented Mar 4, 2026

Copy link
Copy Markdown
Member

This adds the Container Image Promotion Record predicate type. A predicate that records copies of container images between registries to ensure automated parties uploaded an image into an OCI registry. As per the spec:

This predicate type records the promotion of a container image from a staging
registry to a production registry mirror. It provides an auditable record of
when, where, and by what system an image was copied, enabling consumers to
verify the provenance chain of images served from production registries.

/cc @saschagrunert @cpanato @xmudrii

Signed-off-by: Adolfo García Veytia (Puerco) puerco@carabiner.dev

@puerco
puerco requested a review from a team as a code owner March 4, 2026 00:01
@puerco puerco changed the title Add promotion record pred type Add promotion record predicate type Mar 4, 2026

@saschagrunert saschagrunert left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • docs/new_predicate_guidelines.md require adding the new predicate to spec/predicates/README.md
  • The docs/new_predicate_guidelines.md explicitly say 'a field named timestamp is too ambiguous; a better name would be builtAt or allowedAt or scannedAt'. A more descriptive name like promotedAt would follow the guidelines.

Comment thread protos/in_toto_attestation/predicates/promotion_record/v1/promotion_record.proto Outdated
Comment thread spec/predicates/promotion-record.md Outdated
"subject": [{ ... }],

// Predicate:
"predicateType": "https://in-toto.io/attestation/promotion-record/v0.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The spec header says:

Type URI: https://k8s.io/promo-tools/promotion/v1

But the schema example uses: "predicateType": "https://in-toto.io/attestation/promotion-record/v0.1"

One needs to be picked and used consistently. If this is intended to live in the in-toto.io/attestation namespace, use the latter. If it's a Kubernetes-specific namespace, use the former. But then the version also needs to be consistent (v1 vs v0.1).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I've evened them all to v1. I don't see a need to change this a lot in the foreseeable future. WDYT?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good!

@puerco

puerco commented Mar 4, 2026

Copy link
Copy Markdown
Member Author

I've pushed a last commit that reorganizes the readme and adds this predicate. I also added SVR whcih was missing.

puerco and others added 4 commits April 10, 2026 14:42
This adds the promotion precord predicate type. A predicate  that
records copies of container images between registries.

Signed-off-by: Adolfo García Veytia (Puerco) <puerco@carabiner.dev>
Signed-off-by: Adolfo García Veytia (Puerco) <puerco@carabiner.dev>
Signed-off-by: Adolfo García Veytia (Puerco) <puerco@carabiner.dev>
Signed-off-by: Adolfo García Veytia (Puerco) <adolfo.garcia@uservers.net>
@puerco
puerco force-pushed the promotion_record branch from 05d6ffe to bdb4a14 Compare April 10, 2026 20:45
@puerco

puerco commented Apr 10, 2026

Copy link
Copy Markdown
Member Author

I had forgotten to rebase this, @in-toto/attestation-maintainers please take another look. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants