Redis Stream Coordinator
Design docs

Versioning and Compatibility Policy

Goals

This project is intended to be used as open source infrastructure. Versioning is part of the product contract, not an implementation detail.

The project must support safe rolling upgrades where old and new coordinator/consumer artifacts coexist temporarily.

Version Axes

The project has four separately tracked compatibility axes:

Axis Scope Compatibility rule
Artifact version Gradle/Maven modules such as coordinator-server and redisstream-spring-boot-starter Semantic Versioning.
Coordination version Coordinator server and starter/support module compatibility Coordinator and starter modules provide the supported version range.
HTTP API version REST path prefix such as /coord/v1 Breaking API changes require a new path prefix.
Metadata schema version Persisted coordinator aggregate and projection format Breaking schema changes require migration code and a documented upgrade path.

Semantic Versioning

Artifact versions follow MAJOR.MINOR.PATCH.

Rules:

Before 1.0.0, the public API may still evolve, but every compatibility-affecting change must still be documented in this PRD and release notes.

Compatibility Support Window

Default support target:

For example, 1.4.x coordinator should accept 1.3.x RedisStream starter coordination version when the module-defined range covers both versions.

Security fixes may be backported to the latest patch of the current minor line. Broader backports are best-effort until the project publishes a formal support matrix.

Coordination Version

Coordinator-module compatibility is controlled by protocolVersion in heartbeat requests. The value is the coordination version between the coordinator server and support modules, not a heartbeat-only version.

The supported coordination version range is part of the coordinator and starter module contract. It is intentionally not exposed as YAML because an operator should not be able to advertise support for a version that the running code does not implement.

Each coordination version entry declares release lifecycle metadata with semantic release fields:

Field Meaning
introducedIn.major/minor/patch First artifact release that introduced the version.
deprecatedIn.major/minor/patch First release that deprecates the version, or null while active.
minimumSupportedUntil.major/minor/patch Earliest release before which the version must not be removed.
removedIn.major/minor/patch Release that removes the version, or null until removal is scheduled.

Current coordinator and starter modules declare coordination version 1 as introduced in 0.1.0 and supported at least until 1.0.0.

Rules:

HTTP API Version

The current REST API prefix is:

/coord/v1

Rules:

Metadata Schema Version

Redis-backed aggregate JSON includes explicit schema version metadata.

Rules:

Current MVP status:

Deprecation Policy

Deprecations must include:

Minimum removal window after 1.0.0:

Release Checklist

Every release should update:

Required Tests

Versioning changes must include tests for:

Shared Protocol Artifact

Coordination version metadata와 기본 timing 값은 redisstream-core가 소유한다. Coordinator server와 support module은 heartbeat interval, member lease TTL, rebalance timeout, supported coordination version table을 각자 정의하지 않고 이 모듈을 의존해야 한다.

Coordination version 1의 기본 timing contract는 다음과 같다.

Coordinator는 heartbeat response에서 heartbeatIntervalMsrebalanceTimeoutMs를 내려주며, consumer는 join 이후 server response를 따라야 한다. Shared default는 첫 heartbeat가 성공하기 전에도 양쪽 artifact의 기본 동작이 일치하도록 하고, future protocol version에서 timing default를 한 곳에서 진화시키기 위한 계약이다.