Skip to content

fix(registryctl): bind generated projects to release image lock#339

Merged
jeremi merged 1 commit into
mainfrom
agent/278-release-image-lock
Jul 10, 2026
Merged

fix(registryctl): bind generated projects to release image lock#339
jeremi merged 1 commit into
mainfrom
agent/278-release-image-lock

Conversation

@jeremi

@jeremi jeremi commented Jul 10, 2026

Copy link
Copy Markdown
Member

Summary

  • replace registryctl's embedded Relay and Notary digests with a strict, versioned release image lock
  • render the lock from exact tag-built image digest evidence and carry it through checksums, file SBOM, capsule, cosign, SLSA provenance, upload, and reconciliation
  • install the lock atomically beside registryctl for v0.9.0+ while preserving truthful binary-only v0.8.4 behavior
  • fail init and add before mutation when the matching lock is missing or invalid; existing project runtime commands remain lock-independent
  • document v0.8.4's immutable digest workaround and the v0.9.0+ verification/migration path

Release safety

  • the current release workflow rejects lock-bearing releases below v0.9.0 before builds or image pushes
  • the built registryctl version is verified before artifact upload and rechecked before lock rendering
  • lock JSON denies unknown fields and binds the release tag, manifest source ref, tag target, linux/amd64 platform, and exact GHCR repositories/digests
  • the installer validates both checksums, moves the lock first and binary last, and restores the prior pair on failure or termination
  • no mutable tag or live registry lookup is used for project generation

Verification

  • cargo test -p registryctl --locked (104 tests)
  • cargo clippy -p registryctl --all-targets --locked -- -D warnings
  • python3 -m unittest release/scripts/test_registry_release.py (42 tests)
  • actionlint .github/workflows/release.yml
  • bash -n and shellcheck for the installer and tutorial gate
  • docs content, Markdown, style, and build checks
  • full Docker-backed npm run check:tutorial:registryctl for Relay and Notary
  • independent release-contract and integration reviews

Refs #278. Do not close #278 until the v0.9.0 published binary and image lock pass the fresh-reader release proof.

Hosted/public first-run publication remains held pending #198 and #330; this PR does not lift that hold.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
@jeremi jeremi marked this pull request as ready for review July 10, 2026 12:55
@jeremi jeremi enabled auto-merge (squash) July 10, 2026 12:56
@jeremi jeremi merged commit 0ec1063 into main Jul 10, 2026
11 checks passed
@jeremi jeremi deleted the agent/278-release-image-lock branch July 10, 2026 13:04
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.

registryctl v0.8.4 pins pre-0.8.4 service image digests; generated Relay project fails at first start

1 participant