Skip to content

Enforce GHCR release tag immutability safeguards#53

Merged
mark-e-deyoung merged 1 commit intomainfrom
fix/release-tag-immutability-21
Feb 21, 2026
Merged

Enforce GHCR release tag immutability safeguards#53
mark-e-deyoung merged 1 commit intomainfrom
fix/release-tag-immutability-21

Conversation

@mark-e-deyoung
Copy link
Contributor

Summary

Implements release tag immutability safeguards for GHCR publish flow (issue #21).

What changed

  • Added scripts/release-tag-immutability.sh:
    • resolve-existing <image_ref> resolves existing tag digest (empty when tag missing)
    • evaluate <image_ref> <existing_digest> <candidate_digest> enforces:
      • allow when tag missing
      • allow when digest is identical (idempotent re-run)
      • fail on digest mismatch by default
      • allow with explicit override SUPRAGOFLOW_ALLOW_TAG_OVERWRITE=true
  • Updated release workflow to:
    • build/push temporary tags first
    • resolve existing release-tag digest
    • enforce immutability check before assigning release tags
    • assign release tags via docker buildx imagetools create only after check passes
  • Added tests: scripts/test-release-tag-immutability.sh
  • Wired test into ./scripts/gg self-test
  • Updated docs/policy:
    • POLICY.md release tag immutability + explicit override note
    • README.md canonical releases note
  • Tightened policy conformance check to require immutability policy statement.

Validation

  • ./scripts/test-release-tag-immutability.sh
  • ./scripts/check-policy-conformance.sh
  • ./scripts/gg self-test
  • ./scripts/gg lint
  • ./scripts/gg test

Closes #21

@mark-e-deyoung mark-e-deyoung merged commit dbfe0e6 into main Feb 21, 2026
3 checks passed
@mark-e-deyoung mark-e-deyoung deleted the fix/release-tag-immutability-21 branch February 21, 2026 10:24
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.

[DEFER] Enforce release tag immutability safeguards in GHCR publish flow

1 participant