Skip to content

Release operations

An Atlas release is a consumer-verifiable set of binaries, chart material, policies, software bills of materials, evidence, and source identity. Build success is only the first custody event. Distribution and promotion require the same immutable candidate to remain attributable across every handoff.

Custody chain

flowchart LR
    Source[Source + dependencies] --> Build[Build receipt]
    Build --> Packet[Packet + provenance + SBOMs]
    Packet --> Channel[Immutable channel receipts]
    Channel --> Consumer[Consumer verification]
    Consumer --> Target[Target qualification]
    Target --> Decision{promote, hold, withdraw}
Custodian Must verify Emits
builder Revision, toolchain, dependencies, and build inputs Artifacts and build receipt
assembler Membership, schemas, policy, and shared release identity Packet, provenance, SBOMs, and checksums
publisher Candidate acceptance, channel policy, reference, and remote digest Channel receipt or partial-publication record
consumer Retrieved bytes, trust policy, compatibility, and target policy Consumer verification receipt
operator Render, admission, dataset correctness, capacity, security, and recovery Target qualification packet
decision owner Producer evidence, target evidence, exceptions, and reversal authority Promotion, hold, or withdrawal record

A custodian can reject or hold a candidate but must not silently repair an upstream receipt. Changed bytes create a new candidate. A changed target, profile, dataset, dependency, or policy creates a new target qualification.

Release states

stateDiagram-v2
    [*] --> Assembled
    Assembled --> ProducerVerified: fresh packet verification passes
    ProducerVerified --> Publishing: channel uploads begin
    Publishing --> Published: required channels agree
    Publishing --> Partial: a required channel fails or differs
    Published --> ConsumerVerified: retrieval and trust checks pass
    ConsumerVerified --> Promoted: target qualification passes
    Partial --> Held
    Published --> Held: integrity concern
    Promoted --> Held: incident or withdrawal

Partial publication is a first-class state. Preserve successful immutable references, failed operations, and the retry or withdrawal decision. Reconcile remote state before retrying mutable tags. Never replace suspect bytes under a published version.

Match evidence to the decision

Decision Producer evidence Consumer evidence
bytes arrived intact Inventory, checksums, provenance, and channel digest Fresh hashes and trust-policy verdict
release can be installed Chart, images, values, schemas, and compatibility declarations Target render, admission, dependencies, and rollback target
release serves correctly Product contracts, dataset schemas, and test results Resolved dataset identity, representative requests, readiness, and responses
release meets its envelope SLO, load, security, failure, and recovery contracts Target telemetry, capacity, fault, rollout, and recovery results
release may be promoted Complete packet and producer acceptance Owned decision, exceptions, observation window, and reversal authority

Packet integrity, installability, operating fitness, and promotion are separate claims. Immutable producer evidence can be reused unchanged; target evidence cannot be reused after its environment identity changes.

Delivery and rollback planes

Software rollback, deployment rollback, dataset-pointer rollback, and durable data recovery change different authorities. A release record must name which plane moved and which remained immutable. “Rollback succeeded” is not an auditable conclusion without that distinction.

The current GitHub Container Registry workflow publishes compressed release bundles as OCI artifacts. That demonstrates transport for those bundles; it is not evidence of runnable Atlas container images. Consumers must verify the actual artifact type, media, digest, and installation path they depend on.

Current checked-in evidence

The repository includes release-contract examples and generated evidence for workspace version 0.2.0. They are validation material, not a production release. Fresh verification of that checked-in bundle currently fails: required audit, governance, performance, and ingest assets are absent, some policy and SBOM checksums differ, and the transport packet digests do not match current release files. Placeholder image digests and empty drill, simulation, and scan collections further limit the packet.

The checked-in release-verify.json status is historical and does not override the current file set. Generate and verify one coherent candidate before distribution.

Route by decision

Decision Read
Establish one release identity Version Manifests
Review the proof shipped with a build Release Evidence
Assemble portable consumer material Release Packets
Verify integrity and source claims Signing and Provenance
Compare independent builds Reproducibility
Detect deployed divergence Drift Detection
Select a governed channel Distribution Channels
Prove forward and reverse change Upgrades and Rollback
Exercise operator recovery Rollback Drills
Protect durable state Backup and Recovery

Hold and withdrawal

When a post-publication concern appears, stop further promotion and preserve the exact references under review. Classify whether it affects transport integrity, source attribution, runtime behavior, deployment policy, or dataset state. A new release, channel withdrawal, deployment rollback, and dataset-pointer rollback are different responses.

Record affected identities, consumer impact, the last trusted release, and the verification required to resume. Historical immutable digests and receipts remain part of the incident record even when a convenience tag is redirected.