Operator and Runtime Compatibility¶
The Trussium Operator and Trussium runtime are independently maintained components with an explicit integration boundary.
The operator manages Kubernetes lifecycle.
The runtime repository remains authoritative for runtime process behaviour, provider integrations, runtime APIs, runtime configuration semantics, health endpoints, and runtime container releases.
Canonical Runtime Image¶
The canonical public runtime image repository is:
ghcr.io/trussiumhq/trussium
The operator also permits another compatible image repository to be supplied
through spec.image.repository.
Compatibility Dimensions¶
Compatibility involves:
- Trussium Operator version
- Trussium runtime release or immutable image identity
- Kubernetes API compatibility
- Runtime configuration contract compatibility
- Runtime health endpoint compatibility
- Container security and execution contract compatibility
Released Compatibility Matrix¶
The machine-readable source of truth is
compatibility.yaml. It records the currently validated
operator, runtime image, chart, Kubernetes, upgrade, and rollback combinations.
The following is the current release snapshot:
| Operator release / chart | Runtime version | Runtime chart | Kubernetes | Status |
|---|---|---|---|---|
| v1.0.0 | v1.0.0 | v1.0.0 | >=1.25 | Tested |
| v1.0.0 | v1.17.0 | v1.1.0 | >=1.25 | Tested |
| v1.0.2 | v1.22.0 | v1.3.0 | >=1.25 | Tested |
| v1.0.2 | v1.27.0 | v1.3.1 | >=1.25 | Tested |
| v1.0.5 | v1.27.0, v1.29.1, v1.30.0 | v1.3.1 | >=1.25 | Tested |
Tested means the operator lifecycle is validated against Kind and the
documented runtime integration contract. It is not a promise that every
arbitrary runtime tag is compatible.
Runtime Release Proposal Triage¶
Automation may open a proposal when a runtime release is published. A proposal
is an intake signal, not a compatibility claim or an obligation to validate
every runtime release. The operator team prioritizes releases that introduce a
runtime contract change and representative releases needed to demonstrate the
current integration boundary. The selected, evidence-backed combinations are
listed in compatibility.yaml and the matrix above.
After review, a proposal is closed in one of two ways:
- Validated: the exact image and operator/chart combination is tested and added to the compatibility matrix with upgrade and rollback evidence.
- Not selected: the release is not part of the current validation set. Its proposal is closed as not planned, and the release remains unvalidated by this operator project. This is neither a compatibility claim nor a claim that the runtime release is unsupported.
A later patch or minor release does not retroactively validate earlier images. If a newer release is selected instead, the earlier proposal may be closed as superseded; only the exact versions recorded in the matrix carry validation evidence. Users of an unlisted version should run their own integration tests before production rollout.
Runtime Helm chart v1.3.1 is the latest published chart and its default
appVersion remains 1.27.0. The v1.29.1 row uses an explicit
TrussiumRuntime.spec.image.tag override; it does not claim that the Runtime
Helm chart default changed. The Operator chart tested by this row is v1.0.5;
it includes the missing HorizontalPodAutoscaler and NetworkPolicy permissions
required by the controller.
The 1.0.0 validation uses the stable runtime image and chart contract with
an explicit runtime image override for lifecycle testing.
The v1.17.0 / v1.1.0 row is validated by the real Operator E2E lifecycle;
the runtime workload is reconciled, reaches its health contract, and survives
the tested image upgrade path in Kind. The v1.22.0 row is validated by the
real Operator E2E lifecycle upgrade. The v1.27.0 baseline is checked in the
Helm Chart CI runtime-compatibility job before and after the runtime image
transition.
The v1.29.1 and v1.30.0 rows are validated by the Kind compatibility job,
which upgrades the published Operator chart v1.0.4 to the current chart from
the checkout. The job builds the current operator image from that checkout and loads it into Kind, so the
upgrade exercises the candidate controller rather than reusing the old
1.0.4 controller image. The chart corrects the published chart's missing
HorizontalPodAutoscaler and NetworkPolicy permissions. The job reconciles a
runtime on image 1.27.0, verifies the updated service account permissions,
restarts the controller so its caches initialize with those permissions, rolls
forward to the current compatibility target (1.30.0), and waits for the
operator's Ready condition and successful-image status, then rolls the runtime
image back to 1.27.0 and verifies the restored workload. The previously
validated 1.29.1 target remains in the matrix as historical test evidence.
It does not roll the operator chart back to the known-incomplete v1.0.4
chart.
The Runtime Helm chart v1.3.1 remains the referenced chart release and
defaults to runtime 1.27.0; the tested 1.29.1 and 1.30.0 images are
explicit operator-managed overrides.
Runtime Contract Expected by the Operator¶
The operator currently expects compatible runtime images to support:
- The configured runtime HTTP port
/health/live/health/ready- Runtime environment-variable configuration
- Graceful process shutdown
- Numeric non-root execution compatible with UID/GID
10001 - Read-only root filesystem operation
Runtime configuration semantics remain defined by the Trussium runtime repository.
Image Identity¶
Upgrade lifecycle tracking operates on the complete rendered image reference.
Supported examples include:
ghcr.io/trussiumhq/trussium:1.0.0
and:
ghcr.io/trussiumhq/trussium@sha256:<digest>
The operator does not currently interpret image tags as semantic versions.
A digest is treated as an immutable image identity.
Enforcement¶
The operator uses an advisory-first compatibility policy. It documents tested combinations and preserves support for compatible private mirrors, custom repositories, tags, and digests. It does not reject a runtime image based on:
- Tag format
- Semantic version
- Digest
- Registry
- Runtime release metadata
This avoids inventing compatibility guarantees before independent operator releases establish a stable versioning contract.
Future Strict Mode¶
Strict compatibility enforcement is intentionally deferred. If introduced, it will be an explicit opt-in setting backed by a mature, maintained compatibility matrix. It must never silently change the current permissive default or block compatible private runtime builds.
Until then, operators should use the released compatibility matrix as advisory
guidance and observe status.conditions during image rollouts.
Upgrade Guidance¶
Before changing a production runtime image:
- Review the operator release notes.
- Review the runtime release notes.
- Confirm the combination is documented as supported or tested.
- Use immutable image digests where reproducibility is required.
- Observe
status.conditionsandstatus.lastSuccessfulImageduring rollout.
The operator does not automatically roll back an incompatible or failed runtime image.