Skip to content

Remove the manifest-list-unsafe image cleanup step - #23

Merged
TomProkop merged 1 commit into
masterfrom
fix-cleanup-manifest-lists
Aug 20, 2026
Merged

Remove the manifest-list-unsafe image cleanup step#23
TomProkop merged 1 commit into
masterfrom
fix-cleanup-manifest-lists

Conversation

@TomProkop

Copy link
Copy Markdown
Member

Summary

actions/delete-package-versions has no concept of a multi-arch manifest list's child manifests —
each platform image and its attestation manifest are separate untagged "versions" to it, deleted
by a simple keep-N-most-recent-untagged count. That can delete the very children a build just
created and latest/the release tag now point to.

Confirmed directly while verifying the v1.2.0 release: the published image broke within minutes —
docker pull ghcr.io/talxis/tools-agentbox/image:1.2.0 failed with a missing manifest, because
min-versions-to-keep: 1 in publish-image.yaml's own routine cleanup step (and, worse, a manual
re-run of the one-off cleanup-image-history.yaml) deleted 3 of the 4 fresh untagged children
(2 platform manifests + 2 attestation manifests) that build had just created.

  • Removed the automatic cleanup step from publish-image.yaml's merge job.
  • Deleted cleanup-image-history.yaml entirely — its one-time job (clearing the pre-redesign
    sha/date tag backlog) is done, and re-running it is what broke things a second time.

Releases are rare and deliberate now (no more weekly-cron-driven sprawl), so a few untagged
versions accumulating between them isn't worth risking the published image over. If cleanup is
ever wanted again, it needs a manifest-list-aware tool (e.g. dataaxiom/ghcr-cleanup-action), not
this one.

Test plan

  • YAML validated locally.
  • Merge, then re-run publish-image.yaml's v1.2.0 run and confirm docker pull ghcr.io/talxis/tools-agentbox/image:1.2.0 succeeds and stays working afterward (no cleanup
    step left to break it).

Generated by Claude Code

actions/delete-package-versions has no concept of a multi-arch
manifest list's child manifests - each platform image and its
attestation manifest are separate untagged "versions" to it, deleted
by a simple keep-N-most-recent-untagged count. That can delete the
very children a build just created and latest/the release tag now
point to. Confirmed directly: it broke the v1.2.0 image within
minutes of publishing it (min-versions-to-keep: 1 kept only one of
four fresh untagged children). Removed the automatic cleanup step
from publish-image.yaml's merge job, and retired
cleanup-image-history.yaml entirely - its one-time job (clearing the
pre-redesign sha/date tag backlog) is done, and re-running it is what
broke things a second time. Releases are rare and deliberate now, so
a few untagged versions accumulating between them isn't worth risking
the published image over.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PeQipf4QUFGFaVceX8NcEP
@TomProkop
TomProkop merged commit 03833ab into master Aug 20, 2026
2 checks passed
@TomProkop
TomProkop deleted the fix-cleanup-manifest-lists branch August 24, 2026 13:44
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