Skip to content

docs: warn that release candidate tags are load-bearing, not clutter - #10

Merged
StoneyJackson merged 1 commit into
mainfrom
docs/ghcr-pruning-safety
Jul 27, 2026
Merged

docs: warn that release candidate tags are load-bearing, not clutter#10
StoneyJackson merged 1 commit into
mainfrom
docs/ghcr-pruning-safety

Conversation

@StoneyJackson

Copy link
Copy Markdown
Member

Housekeeping said the per-arch {sha} candidate tags were harmless and could be deleted whenever clutter bothered you. They are not harmless. publish-images assembles the multi-arch manifest for X.Y.Z / X.Y / X / latest by referencing those per-arch manifests by digest, so deleting one breaks docker pull for every tag pointing at it — including :1, the tag courses are told to pin for a semester.

Audited the live packages: ae8ba79-* and af9af44-* are referenced by the :1 and :2/:latest indexes respectively, so following the old advice would have broken both published majors.

The advice also aged badly in the wrong direction: now that plan skips builds for non-releasing commits, every candidate produced from here on belongs to a release, so none of them are ever safe to delete.

Replaced with the rule plus a command to check a digest against what the release indexes actually reference.

Housekeeping said the per-arch {sha} candidate tags were harmless and
could be deleted whenever clutter bothered you. They are not harmless.
publish-images assembles the multi-arch manifest for X.Y.Z / X.Y / X /
latest by referencing those per-arch manifests by digest, so deleting one
breaks docker pull for every tag pointing at it — including :1, the tag
courses are told to pin for a semester.

Audited the live packages: ae8ba79-* and af9af44-* are referenced by the
:1 and :2/:latest indexes respectively, so following the old advice would
have broken both published majors.

The advice also aged badly in the wrong direction: now that `plan` skips
builds for non-releasing commits, every candidate produced from here on
belongs to a release, so none of them are ever safe to delete.

Replaced with the rule plus a command to check a digest against what the
release indexes actually reference.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 27, 2026 19:29
@StoneyJackson
StoneyJackson merged commit c2099aa into main Jul 27, 2026
7 checks passed
@StoneyJackson
StoneyJackson deleted the docs/ghcr-pruning-safety branch July 27, 2026 19:30

Copilot AI 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.

Pull request overview

Updates maintainer documentation to correct prior housekeeping guidance about GHCR per-architecture candidate tags, clarifying that these tags are required inputs to the published multi-arch release manifests and must not be deleted once referenced.

Changes:

  • Replaces the “candidate tags are harmless” advice with a warning that {sha}-amd64 / {sha}-arm64 candidates are load-bearing once part of a release.
  • Adds guidance and a registry-query command intended to help determine whether a candidate digest is referenced by any release index.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/maintainer-guide.md
Comment on lines +163 to +175
REPO=ourplcc/devcontainers/plcc-ng # or plcc-ng-full
A='application/vnd.oci.image.index.v1+json,application/vnd.docker.distribution.manifest.list.v2+json'
TOK=$(curl -s "https://ghcr.io/token?scope=repository:$REPO:pull&service=ghcr.io" | jq -r .token)

# digests that releases depend on
for t in $(curl -s -H "Authorization: Bearer $TOK" "https://ghcr.io/v2/$REPO/tags/list" \
| jq -r '.tags[]' | grep -Ev -- '-amd64$|-arm64$|^pr-'); do
curl -s -H "Authorization: Bearer $TOK" -H "Accept: $A" \
"https://ghcr.io/v2/$REPO/manifests/$t" | jq -r '.manifests[]?.digest'
done | sort -u
```

Anything whose digest appears in that list must stay.
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