upgrade-compatibility

Upgrade and format compatibility

Documentation home

The first 4.0.0 production installation is fresh-install only. The retired 1.x/2.x driver has no supported on-disk migration or wire compatibility with this rewrite. Moving application files requires a separately verified external backup and a new volume; never adopt retired disks/journals/PV identities. Pre-release 3.x data is not implicitly production-qualified by installing a 4.0 binary.

For this release line, active mixed-worker/mixed-client rolling upgrades and format downgrades are unsupported. Planned upgrades are quiescent: stop all clients, close descriptors, observe normal CSI unpublish/unstage and zero FUSE mounts, preserve durable authority, update all roles, then remount and verify. A Pod restart does not itself establish unmount. Do not change local CSI, StorageClass bindings, CR creation inputs, Node UID or volume CA as part of a replicated-driver upgrade.

Persisted and wire authority

Surface Current contract
Kubernetes lifecycle replicated.csi.tak-os.org/v1alpha1 ReplicatedVolume; immutable request and generation UID; original Node/PVC/PV identities and serving fences must survive.
Worker identity and journal Original immutable volume/generation/peer configuration, stable Raft term and valid contiguous journal/snapshot authority; missing/reset journal is not repaired by deleting identity.
Checkpoint TAKPOINT2, current object/metadata, sparse extents, expiry floor, retry results, durable handles and hardlinks. Current reader also accepts valid TAKBASE1 historical baselines. This is forward-reader support, not permission to downgrade a new checkpoint.
File RPC Authenticated /v1 volume/generation-bound JSON; server rejects unknown request fields. Changes to operation schemas can affect format/wire compatibility.
Raft/rebuild Authenticated membership and checkpoint transport with exact identity, checksums and boundary guards. Endpoint discovery is not membership adoption.
Credentials Volume CA plus file/control bearers and overlap metadata; retain the original signer/CA during normal upgrade. Secret UID equality alone does not prove CA equality.

There is no negotiated general schema-conversion layer. A binary accepting the same checkpoint magic is not proof that all features it encounters are compatible. Never delete a new checkpoint or retained fields to make an old binary start. Interrupted upgrade preserves the same authority and stays quiescent until one compatible role tuple is restored everywhere.

Historical compatibility record

The 2026-10-26 changed-candidate qualification passed the exact published 3.2.0 → source eb1dc38 → 3.2.0 → eb1dc38 quiescent pair on the single-node lab, plus four-node old → candidate reopen. Old bytes/metadata and a new fsynced candidate canary survived both readers with original volume/backing/CA identities. The candidate emitted no new checkpoint in that rollback drill: this qualifies its actual journal-replay boundary, not new-checkpoint downgrade or arbitrary mixed-version operation. Exact image digests, source/binary comparisons and preserved failed observers are in that report. Retired-driver migration remains unsupported.

The old compatibility harness has been removed. Its reports retain the source and runtime boundaries recorded at the time. A new floating dependency build is not byte-identical to an old image by assumption. Keep workloads quiescent and preserve original volume, backing, membership and credential authority during upgrades. Active mixed-version operation and format downgrades are unsupported.

Shared-runtime transition in 4.1.0

Release 4.1.0 adds a one-way spec.runtime: shared selection. It does not silently convert activated legacy generations. Deliver the updated CRD, local CSI 2.1.0 consumer support and NODE configuration, quiesce consumers, then use the generation-guarded shared runtime request. Legacy Pods must terminate normally before exclusive acquisition of the same backing PVCs. This preserves format and trust identities; no storage copying or new volume creation is performed. Mixed active manager versions can disagree on allocation ownership and remain unsupported. Do not downgrade a shared generation to an older manager/NODE/local-CSI combination. This source transition has not been observed in a real cluster; the 4.0.1 compilation record does not qualify it.