GHCR images

Primary runtime

ghcr.io/bbartling/openfdd-edge-rust:${OPENFDD_IMAGE_TAG:-nightly}

Channel policy: Release channels.

Tag reference

Tag Type Description
nightly Floating Latest green master build
beta Floating Last promoted beta pre-release
latest Floating Last promoted stable release
3.3.0-beta.1 Immutable Pinned beta semver
3.3.0 Immutable Pinned stable semver
v3.3.0 Immutable Release tag alias
sha-abc1234 Immutable Short git SHA (traceability)

MCP sidecar

ghcr.io/bbartling/openfdd-mcp:${OPENFDD_IMAGE_TAG:-nightly}

Same channel tags as edge. Prefer the edge image with --entrypoint openfdd-mcp when possible.

Multi-arch

Images publish linux/amd64 and linux/arm64:

./scripts/openfdd_rust_check_ghcr_platform.sh
docker manifest inspect ghcr.io/bbartling/openfdd-edge-rust:nightly

OCI labels

Release images include org.opencontainers.image.version, revision, source, and title Open-FDD Rust Edge.

Retention

Trigger Policy
After master publish Protect nightly, beta, latest; keep 3 semver lines; prune old sha-* > 7 days
After rust-release Same, protecting the released semver
Weekly (Sundays 06:00 UTC) Scheduled prune (ghcr-prune.yml)

Manual dry-run:

gh workflow run "Prune old GHCR images" -f dry_run=true

Diagnose pulls:

./scripts/openfdd_ghcr_diagnose.sh nightly
./scripts/openfdd_ghcr_diagnose.sh 3.3.0-beta.1

Do not delete package versions manually in the GitHub UI — use the prune workflow.