Retain release images and redact CI evidence #42

Open
opened 2026-11-01 20:11:59 +00:00 by viacheslavshuka · 0 comments

Cleanup must preserve deployable releases and their verification evidence. Age alone cannot make a currently deployed or pending artifact safe to delete.

Scope

Implement image and report retention against the Forgejo registry and CI artifact storage. Keep cleanup decisions reviewable and protect active references.

Acceptance criteria

  • Published production release images remain until the operator explicitly approves removal. Their production validation evidence remains associated with them.
  • Stored pull-request images expire after seven days. Unreleased main images expire after thirty days. This does not require publishing pull-request images.
  • Images currently deployed or selected for pending releases remain protected regardless of age. Shared digests cannot disappear through deletion of an unrelated tag.
  • Ordinary CI reports remain for thirty days, including failure evidence. Reports redact secrets and respect repository access policy.
  • Cleanup evaluates current deployment and pending-release references before deletion. A race with release selection cannot delete its required artifact.
  • An incomplete reference inventory or registry failure cannot produce a successful destructive cleanup result.
  • A preview identifies eligible artifacts and protected reasons. Published-release removal requires the operator's explicit approval of the selected artifacts.

Validation

Use a disposable registry/artifact fixture with objects immediately before and after each age boundary. Cover shared digests, active deployments, pending releases, missing reference data, and simultaneous release selection.

Dependencies

Cleanup must preserve deployable releases and their verification evidence. Age alone cannot make a currently deployed or pending artifact safe to delete. ## Scope Implement image and report retention against the Forgejo registry and CI artifact storage. Keep cleanup decisions reviewable and protect active references. ## Acceptance criteria - Published production release images remain until the operator explicitly approves removal. Their production validation evidence remains associated with them. - Stored pull-request images expire after seven days. Unreleased `main` images expire after thirty days. This does not require publishing pull-request images. - Images currently deployed or selected for pending releases remain protected regardless of age. Shared digests cannot disappear through deletion of an unrelated tag. - Ordinary CI reports remain for thirty days, including failure evidence. Reports redact secrets and respect repository access policy. - Cleanup evaluates current deployment and pending-release references before deletion. A race with release selection cannot delete its required artifact. - An incomplete reference inventory or registry failure cannot produce a successful destructive cleanup result. - A preview identifies eligible artifacts and protected reasons. Published-release removal requires the operator's explicit approval of the selected artifacts. ## Validation Use a disposable registry/artifact fixture with objects immediately before and after each age boundary. Cover shared digests, active deployments, pending releases, missing reference data, and simultaneous release selection. ## Dependencies - [#36: Promote published releases without rebuilding their images](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/36). Retention must recognize deployed releases and pending promotion artifacts. ## Related work - [#34: Deploy validated main images to development](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/34)
Sign in to join this conversation.
No description provided.