# Versioning in the CNB project
For context on how the CNB project thinks about versioning, see [RFC#10](https://github.com/buildpacks/rfcs/blob/master/text/0010-api-versions.md) and [RFC#11](https://github.com/buildpacks/rfcs/blob/master/text/0011-lifecycle-descriptor.md). The CNB project versions our [spec components](#spec) and [implementations](#implementations) following separate schemas, detailed below:
### Spec component versioning
[spec]: #spec
The spec describes two components that are [separately versioned](https://github.com/buildpacks/spec#api-versions). These APIs are versioned as follows:
#### Platform API Version
Given by CNB platforms to the lifecycle, this version indicates which platform API versions that platform currently support. In review, in [PR#67](https://github.com/buildpacks/spec/pull/67/files), this version indicates the compatibility between a CNB platform and a given lifecycle according to the following rules:
- When `<major>` is `0`, the platform is only compatible with lifecycles implementing that exact Platform API.
- When `<major>` is greater than `0`, the platforms is only compatible with lifecycles implementing platform API
`<major>.<minor>`, where `<major>` of the lifecycle equals
#### Buildpack API Version
Documented in the [buildpack spec](https://github.com/buildpacks/spec/blob/master/buildpack.md#buildpacktoml-toml) this field indicate compatibility with a given lifecycle according to the following rules:
- When `<major>` is 0, the buildpack is only compatible with lifecycles implementing that exact buildpack API.
- When `<major>` is greater than 0, the buildpack is only compatible with lifecycles implementing buildpack API `<major>.<minor>`, where `<major>` of the lifecycle equals `<major>` of the buildpack and `<minor>` of the lifecycle is greater than or equal to `<minor>` of the buildpack.
### Implementation versioning
[implementations]: #implementations
We aim to release the core implementations of the project at a time-based cadence, per [PR#33](https://github.com/buildpacks/rfcs/pull/33). These implementations are versioned as follows:
- __Pack__: Pack is released via Github releases and its versions follow semver conventions.
- __Lifecycle__: Pack is released via Github releases and its versions follow semver conventions.
- __libbuildpack__: libbuildpack is released via Github releases and its versions follow semver conventions.