Skip to content

Commit

Permalink
add some context on breaking changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mpoke committed Nov 15, 2023
1 parent 70358f3 commit ae334c4
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,20 @@
Interchain Security (ICS) follows [semantic versioning](https://semver.org), but with the following deviations (similar to [IBC-Go](https://github.com/cosmos/ibc-go/blob/main/RELEASES.md)):

- A library API breaking change will result in an increase of the MAJOR version number (X.y.z | X > 0).
- A state-machine breaking change (change requiring coordinated upgrade and/or state migration for the consumer, the provider, or both) will result in an increase of the MINOR version number (x.Y.z | x > 0).
- A state-machine breaking change will result in an increase of the MINOR version number (x.Y.z | x > 0).
- Any other changes (including node API breaking changes) will result in an increase of the PATCH version number (x.y.Z | x > 0).

**State compatibility**: It is critical for the patch releases to be state-machine compatible with prior releases in the same minor version.
For example, v3.2.1 must be state-machine compatible with v3.2.0.
> **More context on breaking changes:**
> - A change is considered to be _library API breaking_ if it modifies the integration of ICS on either consumer or provider chains (i.e., it changes the way ICS is used as a library).
> Note that bumping the major version of [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) or [IBC](https://github.com/cosmos/ibc-go) will be considered as a library API breaking change.
> - A change is considered to be _state-machine breaking_ if it requires a coordinated upgrade and/or state migration for either consumer or provider chains.
> Note that when bumping the dependencies of [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) and [IBC](https://github.com/cosmos/ibc-go) we will only treat patch releases as non state-machine breaking.
> - A change is considered to be _node API breaking_ if it modifies the API provided by a node of either consumer or provider chains.
> This includes events, queries, CLI interfaces.
When bumping the dependencies of [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) and [IBC](https://github.com/cosmos/ibc-go) we will only treat patch releases as non state-machine breaking.
**State compatibility**: It is critical for the patch releases to be state-machine compatible with prior releases in the same minor version.
For example, v3.2.1 must be state-machine compatible with v3.2.0.
This is to ensure **determinism**, i.e., given the same input, the nodes will always produce the same output.

## Release Cycle

Expand Down

0 comments on commit ae334c4

Please sign in to comment.