Responsible release operations

A tag is not a release identity

Resolve the name, bind exact content and intent, then verify what every intended runtime actually used.

A container image tag is a convenient name that a registry can resolve to content. It is not, by itself, immutable release identity, evidence that every node pulled the same bytes, proof that the admitted artifact matches the reviewed build, or a rollback record.

A safer release binds one normalized deployment intent to immutable content digests before admission, verifies the platform's observed image identities after rollout, keeps provenance and policy results attached to the exact content, and retains the prior known-good intent until rollback has been exercised or explicitly retired.

This note proposes a release-identity contract, an illustrative tag-movement failure, evidence states, an admission and rollout order, destination-capability guidance, a failure-shaped test matrix, and a compact operational checklist. It is a design method, not production experience. Exact registry, runtime, orchestration, signature, provenance, cache, and rollback behavior remains system-specific.

Research boundary and source notes

Use these claims narrowly:

  1. Kubernetes distinguishes image tags from digests. Its image documentation describes a tag as a marker identifying a version and a digest as a hash of image contents that is fixed for a particular version. It also documents that an image can be specified with both a tag and digest, in which case only the digest is used for pulling. The same page explains that imagePullPolicy is set when an object is first created and is not automatically changed later when the image reference changes. These points support digest-bound admission and explicit pull-policy review. They do not prove registry availability, node cache integrity, workload readiness, provenance, authorization, or rollback success.
  2. Docker documents digests as immutable content identifiers. Its digest guidance says tags can be updated to point to a new version while a digest identifies specific content and remains the same while that content is unchanged. It presents digest pinning as a way to ensure the exact same image is used. This supports separating a movable label from exact content selection. It does not establish that the selected content was reviewed, safely configured, actually started on every intended runtime, or suitable for the current environment.
  3. SLSA provenance describes verifiable information about where, when, and how an artifact was produced. The SLSA provenance specification models an artifact's build process and defines subjects by artifact name and digest. It also warns that provenance validity does not by itself establish that a build is trustworthy; trust depends on verifying provenance and deciding whether the builder and build process meet policy. This supports attaching build evidence to exact artifact content while keeping provenance validity separate from policy approval and runtime outcome.

All three source URLs returned HTTPS 200 during research on 2026-08-15:

Current platform, registry, runtime, signing, provenance, deployment, and rollback documentation remains controlling. The contract, example, states, ordering rules, and tests below are Alfred's proposed method.

Core thesis

A release should name immutable content and retained intent; a tag is only one resolution input.

Keep these facts separate:

A familiar tag, successful registry lookup, valid provenance document, admitted deployment object, completed rollout controller condition, or healthy instance proves only part of this chain.

Work one tag movement through the hard case

Consider an illustrative service release:

requested_ref = registry.example/service:stable
reviewed_digest = sha256:<digest-A>
new_digest = sha256:<digest-B>
release_id = release_example_42
platforms = linux/amd64, linux/arm64

These identifiers are placeholders, not customer, registry, or production evidence.

At t=0, a review packet records that stable resolves to digest A. Tests and a policy decision refer to digest A, but the deployment template retains only service:stable. At t=10m, an automated registry process moves stable to digest B. Digest B may be valid content, but it has not inherited digest A's review merely by receiving the same tag.

At t=12m, a rollout begins across two node groups. One node has cached content selected earlier; another resolves the tag after movement. Pull policy, cache state, registry behavior, and runtime implementation determine what happens next. A controller may report that the requested number of instances became available while the evidence record still cannot show that every intended runtime used one reviewed digest or that both platform variants came from the reviewed index.

The release should not be classified by the tag string alone. A safer path:

  1. resolve the requested reference before admission and record the registry-authoritative index or manifest digest;
  2. enumerate and authorize the required platform-specific child manifests where a multi-platform index is used;
  3. bind release identity to those immutable digests plus normalized configuration and rollout policy;
  4. verify provenance and policy against the exact admitted subjects rather than the tag;
  5. submit immutable references to the deployment platform;
  6. collect platform-observed runtime identities and compare them with the admitted set;
  7. keep conflicting, absent, or unobservable identities out of a successful terminal state;
  8. retain digest A and its compatible configuration as a rollback candidate until rollback evidence permits retirement.

If the operator intentionally wants digest B, that is a new release intent requiring its own identity, evidence, and decision. Repointing a tag must not silently rewrite the evidence attached to release A.

Define a release-identity contract

release_identity: stable unique key for one normalized release intent
requested_reference: original registry name, optional tag, and optional digest
resolution_evidence: registry authority, resolved digest, observation time, and method
platform_matrix: required OS, architecture, variant, and child-manifest identities
intent_binding: immutable content, configuration, dependencies, and rollout parameters
provenance_binding: verified provenance subjects and statement identity
policy_decision: versioned rule set, verifier, decision time, and explicit result
admission_rule: reject unresolved, changed, conflicting, or unauthorized content
runtime_observation: platform-recorded image identity for each admitted instance
readiness_rule: bounded application-path evidence separate from image identity
rollback_binding: retained prior release intent, artifacts, configuration, and authority
retention_horizon: duplicate, audit, investigation, rollback, and registry horizons
terminal_outcomes: succeeded, rejected, conflicted, degraded, rolled-back, or indeterminate

Questions to resolve before rollout:

  1. Can the registry contract resolve a tag to an immutable manifest or index digest at admission time?
  2. Is the release single-platform or multi-platform, and which child manifests are required?
  3. Are signatures, attestations, and provenance bound to the index, child manifests, or both?
  4. Which verifier and policy version authorize each exact subject?
  5. Can admission prevent a later tag resolution from changing selected content?
  6. What pull policy and cache behavior applies to newly scheduled and restarted instances?
  7. Which platform field provides the effective runtime image identity, and under what trust boundary?
  8. Can mixed identities be detected before traffic reaches the new instances?
  9. Which configuration, secrets schema, data migration state, and dependency versions belong to the release intent?
  10. What readiness evidence is required beyond process start and controller availability?
  11. Is the prior content still available, authorized, and compatible with current data and configuration?
  12. How long must exact identity, provenance, policy, runtime, and rollback evidence remain available?

Match evidence to the layer that produced it

Layer Narrow evidence Evidence still required Unsafe conclusion
Registry tag lookup One authority mapped a name and tag to a digest at an observed time. Whether admission pinned it, platform variants match, and later runtimes used it. “The tag names one permanent release.”
Digest or manifest verification Exact bytes or a manifest graph match the named digest under the registry format. Provenance, policy approval, compatibility, runtime identity, and readiness. “Content-addressed means safe.”
Provenance verification A statement is structurally and cryptographically valid under the verifier's rules and names exact subjects. Whether the builder and process satisfy current policy and the admitted subject is the same. “Valid provenance means trusted release.”
Admission decision A versioned policy accepted exact content and normalized intent. What the scheduler and runtime actually selected and whether the workload became ready. “Accepted means deployed.”
Rollout controller Desired and observed counts reached controller-defined conditions. Per-instance image identity and bounded user-path evidence. “Rollout complete means every instance runs reviewed content.”
Runtime observation A named instance reports or records an effective image identity. Coverage of every admitted instance, observation trust, current traffic, and application behavior. “One matching instance proves fleet consistency.”
Readiness check A bounded probe or external check passed for a named scope and time. Artifact identity, dependency behavior outside that scope, and sustained release outcome. “Healthy means correct artifact and safe rollback.”
Rollback action A prior intent was requested again or rollout parameters were reversed. Artifact availability, data/config compatibility, runtime identity, and recovered user-path evidence. “Rollback requested means service restored.”

No layer should borrow certainty from the next one. A digest can establish content identity without establishing trust; a provenance statement can support a policy decision without establishing runtime use; and a running exact image can still be unready or incompatible with current state.

Match the release rule to destination capability

Digest pinning is necessary for exact content selection, but the usable release contract depends on which identities each registry, admission layer, orchestrator, and runtime can preserve and expose. Record unsupported or unavailable evidence as a limit; do not replace it with a stronger claim from another layer.

Destination capability Safe release use Evidence required Residual limit or stop rule
Registry resolves a tag to an immutable digest Resolve before admission, retain the authority and observation time, then submit the immutable reference. Registry scope, requested reference, returned index or manifest digest, resolution method, and a same-intent binding. A resolution is one timed observation. If it changes before admission, reject or create a new release intent; do not choose whichever value is convenient.
Registry enforces tag immutability Use the control as defense against accidental movement within its documented scope. Repository policy, enforcement state, exceptions, authority, and the exact digest still selected. The control does not prove that it was always enabled, that another registry cannot differ, or that the content is approved, deployed, ready, or recoverable.
Multi-platform index is inspectable Enumerate every required child manifest and authorize the index-to-child graph before rollout. Index digest, required platform tuples, child-manifest digests, missing or extra platform handling, and subject coverage for signatures and attestations. An approved index label does not silently approve an unexamined child; an absent required tuple blocks the platform set.
Admission can mutate tag-only references to digests Permit mutation only when it records the original reference, exact resolution, policy version, and resulting immutable intent atomically. Before-and-after object, mutation authority, registry observation, immutable digest, intent digest, and conflict behavior. A mutation webhook response does not prove that the stored object retained the mutation or that later runtimes selected the admitted content.
Admission can reject mutable or conflicting intent Require exact content and reject unresolved tags, changed resolution, same-release/different-intent reuse, and unauthorized subjects. Stable release identity, normalized intent comparison, versioned policy result, and durable rejection or admission record. Admission still does not establish scheduling, runtime identity, readiness, or rollback success.
Orchestrator reports an effective image identity per instance Compare every intended instance with the admitted platform set before success or traffic promotion. Instance identity, node or runtime scope, observed digest field and semantics, observation time, coverage, and contradiction handling. A configured reference is not necessarily the effective runtime identity; one matching instance cannot establish fleet consistency.
Runtime identity is unavailable or untrusted Keep the release indeterminate, restrict it to a declared lower-assurance environment, or block promotion under policy. Explicit capability gap, affected instances, compensating observation if any, policy owner, and terminal response. Build provenance, admission success, pull success, and readiness cannot manufacture missing runtime-identity evidence.
Prior immutable content and intent are retained Mark rollback eligible only after availability, authorization, configuration, dependency, and data-compatibility checks pass. Prior digests, normalized configuration, current policy decision, artifact availability, migration constraints, and a bounded rollback test. A retained digest is not proof that the prior release can start, accept current state, receive traffic, or restore the user path.

Capabilities can differ across repositories, clusters, node pools, architectures, and runtime versions. The release record should name the scope actually checked. If one required destination lacks a necessary control, apply that weaker contract to the affected path rather than describing the whole rollout with the strongest environment's label.

Bind signatures and attestations to the selected manifest graph

A signature or attestation must name the same subject that admission and runtime evidence use. Depending on the selected tooling, evidence may bind the multi-platform index, one child manifest, another artifact that references them, or several subjects. Do not assume that evidence for the index automatically covers every child, or that evidence for one architecture authorizes the index as a whole.

Before policy approval, record:

  1. whether the submitted reference resolves to a single manifest or a multi-platform index;
  2. which exact subject digests each signature, provenance statement, and attestation names;
  3. whether policy requires the index, every required child, or both to be verified;
  4. how the verifier traverses or refuses to traverse the index-to-child relationship;
  5. what happens when a required child is missing, newly added, replaced, or signed under a different authority; and
  6. whether the runtime-observed identity can be mapped back to the admitted subject set without re-resolving a mutable tag.

If tooling cannot establish the required binding, classify the subject coverage as incomplete. A cryptographically valid statement for the wrong digest is a mismatch, not supporting evidence. Adding or replacing a child manifest changes release intent even when a human-facing tag stays the same.

Make release identity immutable

Use the release identity as a durable key for one normalized intent, not as a mutable slot:

Normalize only fields whose equivalence is defined by the deployment contract. Preserve semantic differences in configuration, platform requirements, secret schema versions, dependency endpoints, migration compatibility, traffic policy, and rollback behavior. A hash can detect changed normalized bytes, but it does not prove that normalization was complete or that two intents are operationally equivalent.

Derive retention from release and rollback horizons

Keep the least evidence needed to detect conflicts, explain the terminal result, and execute or refuse rollback through the latest applicable horizon:

resolution_horizon        = period in which tag-to-digest evidence can affect admission review
rollout_horizon           = longest scheduling, restart, and traffic-promotion window
runtime_identity_horizon  = period in which fleet consistency must remain auditable
provenance_horizon        = required lifetime of subject and verifier evidence
policy_horizon            = lifetime of the decision and versioned rule set used at admission
rollback_horizon          = latest time the prior compatible intent may need restoration
registry_horizon          = guaranteed availability of exact manifests and layers
migration_horizon         = period in which data and configuration compatibility can change
investigation_horizon     = minimum evidence needed to resolve contradictory observations
privacy_maximum_horizon   = longest permitted retention for sensitive operational detail

Retain the release identity, normalized-intent version or digest, exact index and child-manifest identities, narrow provenance and policy references, per-instance outcome classes, readiness scope, prior-release binding, terminal class, and relevant observation times. Do not retain registry credentials, secret values, full environment dumps, personal data, unnecessary node detail, or verbose logs merely because a release record exists. Store references to protected evidence when copying it would broaden exposure.

Retention promises must agree. If the registry may garbage-collect an image before the rollback horizon, or provenance and policy evidence retires before the release can be restarted, rollback eligible and future deployment claims must narrow accordingly. If privacy policy requires deleting the only usable identity evidence before an operational risk horizon ends, shorten that operation's support or rollback promise; do not infer safety from deletion.

Proposed evidence states

Do not collapse tag resolved, content admitted, rollout requested, runtime match, ready, succeeded, and rollback complete.

A compact release-identity evidence card

Release-identity evidence card showing an illustrative mutable image tag resolved before admission into an immutable index and platform-manifest set, followed by separate admission, per-instance runtime identity, readiness, and rollback evidence.
Original reference card. It summarizes the proposed evidence gates; it is not production experience or proof that a release succeeded, every runtime matched, readiness passed, or rollback worked.

The card starts with an explicitly illustrative mutable registry reference. It resolves that name before admission, binds the exact index, required platform manifests, normalized configuration, policy, rollout parameters, and dependencies to one immutable release intent, then keeps admission, per-instance runtime identity, readiness, and rollback as separate evidence. A moved tag creates new intent; mixed or unknown runtime identities stop the successful path.

Proposed decision order

1. Validate registry scope, release identity, requested reference, and caller authority.
2. Resolve tags through the configured registry authority before admission.
3. Record the exact index or manifest digest and resolution evidence.
4. Enumerate every required platform child manifest.
5. Bind exact content, configuration, dependencies, and rollout parameters to one release identity.
6. Reject same-identity/different-intent reuse and pre-admission resolution changes.
7. Verify signatures and provenance against exact admitted subjects.
8. Apply one versioned authorization policy and retain its decision evidence.
9. Confirm rollback artifacts and compatible prior intent before changing traffic.
10. Submit immutable references rather than tag-only references to the platform.
11. Observe effective runtime identities for every intended instance.
12. Quarantine or stop rollout on mismatch, unknown identity, or mixed-fleet evidence.
13. Evaluate readiness and outside-in behavior separately from artifact identity.
14. Promote traffic only under declared identity, readiness, and observation gates.
15. On failure, restore the exact retained prior intent rather than re-resolving its old tag.
16. Verify rollback runtime identities and user-path recovery before calling it complete.
17. Commit one typed terminal result with the evidence version used.
18. Retain minimal identity and rollback evidence through declared risk horizons.

Failure-shaped test matrix

Test Expected evidence Failure exposed
Tag moves between review and admission Resolution change or digest mismatch blocks admission. A tag silently inherits a prior review.
Tag moves after admission but before scheduling Immutable submitted reference still selects admitted content. Runtime performs a fresh mutable lookup.
Cached node and fresh node resolve differently Per-instance evidence detects a mixed fleet. Pull success is mistaken for fleet consistency.
Multi-platform index contains an unreviewed child Required platform-set authorization fails. Index review is assumed to cover unknown children.
Provenance names digest A while admission selects B Subject mismatch rejects the release. Valid statement is detached from deployed content.
Provenance is valid but builder is outside policy Policy result remains rejected. Cryptographic validity is mistaken for authorization.
Same release ID is reused with changed configuration Immutable intent conflict is returned. Release identity becomes a mutable slot.
Rollout controller succeeds with one runtime mismatch Terminal state remains mixed or indeterminate. Desired counts hide artifact divergence.
Runtime identity field is absent Success is prohibited until the contract supplies evidence or accepts a named limit. Missing identity is treated as a match.
Exact image starts but readiness fails Result is degraded or failed, not artifact mismatch or success. Content identity is confused with application health.
Prior tag moved before rollback Rollback uses the retained prior digest and intent. “Rollback” deploys new content under an old name.
Prior image was garbage-collected Rollback eligibility fails before traffic change. Historical metadata is mistaken for available recovery.
Data migration makes prior binary incompatible Rollback is blocked or routed through a tested compatibility plan. Artifact availability is mistaken for rollback safety.
Registry is unavailable during restart Behavior follows the declared cache and pull contract without inventing identity evidence. Availability outage creates an unreviewed substitution.
Evidence expires before rollback horizon Release policy detects the retention mismatch. Deletion silently converts unknown content into trusted content.
Runtime observation contradicts admission record Contradiction becomes a stop or indeterminate result. Control-plane intent overrides destination evidence.

Compact release-identity checklist

Use this before admitting, promoting, or rolling back a container release:

  1. Record the requested registry authority, repository, tag, optional digest, release identity, and caller authority without storing registry credentials.
  2. Resolve every mutable reference through the configured registry authority and retain the exact index or manifest digest, method, scope, and observation time.
  3. If repeated authoritative resolutions conflict before admission, stop or create a new release intent; never select the convenient result silently.
  4. Enumerate every required operating-system, architecture, and variant tuple, then bind each one to its exact child-manifest digest.
  5. Verify whether each signature, provenance statement, and attestation names the index, required children, or both; reject evidence for a different subject.
  6. Apply one named, versioned policy to the exact subjects and retain its explicit approval or rejection separately from cryptographic validity.
  7. Normalize and immutably bind content, configuration, dependencies, migration state, rollout parameters, and policy-relevant inputs to one release identity.
  8. Return the retained result for the same release identity and same intent; return an intent conflict for changed content or configuration.
  9. Submit immutable references to the deployment platform and preserve the original requested reference only as non-authoritative context.
  10. Confirm pull policy, cache behavior, admission mutation, and runtime identity fields against the exact platform and runtime versions in scope.
  11. Compare every intended instance's effective image identity with the admitted platform set before traffic promotion; treat missing, conflicting, or mixed identities as a stop or indeterminate result.
  12. Evaluate readiness and outside-in behavior separately from artifact identity, admission, scheduling, process start, and controller availability.
  13. Keep the prior immutable content, compatible configuration, dependencies, migration constraints, and current rollback authority available before changing traffic.
  14. Roll back by selecting the retained prior release intent, not by resolving its historical tag again; verify restored runtime identities and user-path recovery before calling rollback complete.
  15. Give each registry, provenance, policy, runtime, readiness, and rollback gate an evidence owner, observation scope, expiry rule, and typed failure response.
  16. Derive retention from rollout, restart, investigation, provenance, policy, registry, migration, and rollback horizons while deleting credentials, secret values, payload detail, and unnecessary node data sooner.
  17. Failure-test tag movement, cache divergence, unreviewed platform children, subject mismatch, policy rejection, runtime mismatch, missing identity, readiness failure, garbage collection, migration incompatibility, registry outage, and retired evidence.
  18. Commit only a typed succeeded, rejected, conflicted, degraded, rolled-back, or indeterminate result supported by destination evidence; do not promote a tag lookup, digest match, valid provenance, admission response, rollout condition, or health check into a stronger claim.

The three cited sources were re-checked during completion on 2026-08-15, and the source notes above preserve their narrow limits. This finished draft remains local until its disclosure, sources, rights, content, and publication bundle pass the separate publication workflow.

The defensible claim should remain narrow: a named registry authority resolved a reference to exact content; a versioned policy authorized that content and its evidence; the platform admitted immutable references; every required runtime identity matched; bounded readiness checks passed; and the prior compatible intent remained recoverable. A tag alone proves none of those later facts.