Installation, Upgrade, and Rollback Matrix¶
The install matrix is the compatibility table for Kubernetes delivery. It binds a values profile to the suite that must prove it, and it names the lifecycle transitions Atlas actually exercises.
Profile Evidence Lanes¶
| Profile | Values file | Required suite |
|---|---|---|
ci |
ops/k8s/values/ci.yaml |
install-gate |
dev |
ops/k8s/values/dev.yaml |
install-gate |
local |
ops/k8s/values/local.yaml |
install-gate |
kind |
ops/k8s/values/kind.yaml |
k8s-suite |
offline |
ops/k8s/values/offline.yaml |
k8s-suite |
profile-baseline |
ops/k8s/values/profile-baseline.yaml |
k8s-suite |
ingress |
ops/k8s/values/ingress.yaml |
nightly |
multi-registry |
ops/k8s/values/multi-registry.yaml |
nightly |
perf |
ops/k8s/values/perf.yaml |
nightly |
prod |
ops/k8s/values/prod.yaml |
nightly |
This table states the minimum named lane. A production decision can require additional security, load, observability, and recovery evidence even when the matrix row is satisfied.
Coverage Dimensions¶
flowchart TD
Profile[Values profile] --> Install[Clean install]
Profile --> Upgrade[Previous to candidate]
Profile --> Rollback[Candidate to previous]
Install --> Evidence[Named delivery lane and reports]
Upgrade --> Evidence
Rollback --> Evidence
Evidence --> Qualify[Security, telemetry, load, and recovery qualification]
Support is the intersection of profile, lifecycle transition, source release, target release, and evidence lane. A row that covers clean installation does not imply either direction of release transition. A lifecycle scenario that uses Kind does not automatically qualify the production profile.
Lifecycle Coverage¶
flowchart LR
N["No installed release"] -->|install| H["workspace-head"]
P["chart-previous"] -->|upgrade| H
H -->|rollback| P
The matrix declares these scenarios:
| Lifecycle | Profiles | Source and target identity |
|---|---|---|
| Install | profile-baseline, ci, kind, offline, perf |
Clean installation of the selected profile |
| Upgrade | kind, offline, perf |
chart-previous to workspace-head |
| Rollback | kind, offline, perf |
workspace-head to chart-previous |
There is no declared upgrade or rollback scenario for prod, dev, local,
ingress, or multi-registry in the current matrix. Do not present those
transitions as proven by this contract.
The production-oriented prod-minimal, prod-ha, and prod-airgap profiles
are absent from the profile rows as well as the lifecycle scenarios. Their
values files define reviewable intent, but the matrix provides no execution
lane for them. Production Qualification defines
the additional evidence and the claims that must remain blocked.
Selecting a Path¶
- Choose a profile whose intent matches the target environment.
- Confirm its values file and suite in
ops/k8s/install-matrix.json. - Validate the matrix against
ops/schema/k8s/install-matrix.schema.json. - For upgrade or rollback, preserve both release references and rendered manifests.
- Run the named suite and collect the install, probe, conformance, and observability evidence it requires.
- Apply rollout and rollback decisions using the rollout-safety contract.
Record environment facts that can change the result even when the matrix row does not: Kubernetes version, architecture, registry mode, network policy implementation, storage class, ingress controller, and dependency topology. These facts belong in evidence; they do not create undocumented matrix rows.
Bind a Matrix Cell to One Run¶
An accepted cell needs more than the profile and lane names. Retain a receipt that fixes the lifecycle direction, both release identities, exact values and render hashes, cluster capabilities, selected checks, and final traffic state.
| Cell state | Meaning |
|---|---|
| declared. | The matrix names the profile, lifecycle direction, and required lane. |
| executable. | Every referenced suite, tool, artifact, and rollback target resolves. |
| exercised. | One identified environment ran the complete selected path. |
| accepted. | Required behavior, evidence, and cleanup passed for the exact identities. |
| stale. | A release, profile, tool, policy, or environment input changed after acceptance. |
Only an accepted, non-stale cell supports the scoped delivery claim. Matrix membership alone remains declaration evidence.
Honest Claims¶
A profile row proves that an evidence lane is defined. A passing install proves that one selected release can be installed under that lane. It does not prove upgrade compatibility, rollback recovery, capacity, air-gap completeness, or production readiness unless those claims have their own declared scenario and evidence.
When a real deployment path is missing from the matrix, add and validate the contract before calling the path supported. Do not borrow evidence from a different profile because its manifests appear similar.
Missing coverage is an explicit delivery risk. It may justify holding a release, narrowing the supported claim, or adding the missing scenario. It must not be converted into an inferred pass.
Continue with Render and Validate for preflight proof and Rollout Safety for live promotion decisions. Use Production Qualification to assemble the cross-domain production record.