# Technical Versioning & Compatibility

ENSRainbow uses **three distinct version numbers**—each serving a different purpose.

## 1. ENSRainbow Software Version

The semantic version of the Node.js application itself (e.g. `0.4.2`).

- Bumped when new features, fixes, or breaking changes are released.
- Shown in `/v1/config` under the `version` field.

## 2. Database Schema Version (DB_SCHEMA_VERSION)

Specifies the expected on-disk structure of the LevelDB database as well as the expected format of the downloadable pre-built LevelDB databases.

- Passed as an **environment variable** when running ENSRainbow.

:::caution[Mixing versions]
The API server will refuse to start if the on-disk database schema is different than the running software's expected schema.
:::

## 3. Label-set Version (LABEL_SET_VERSION)

Identifies incremental sets of rainbow records for a given label-set (`LABEL_SET_ID`).

- For each label-set, starts at **0** and increments by one with each incremental set of rainbow records.
- Each increment contains **only incremental additions** from all previous versions.
- Enables deterministic, reproducible healing results across time.

### Choosing Versions in Practice

| Scenario                            | Recommended `DB_SCHEMA_VERSION` | `LABEL_SET_ID` / `LABEL_SET_VERSION` |
| ----------------------------------- | ------------------------------- | ------------------------------------ |
| Local dev / tests                   | Latest                          | `ens-test-env / 0`                   |
| Production parity with ENS Subgraph | Latest                          | `subgraph / 0`                       |
| Maximum coverage                    | Latest                          | `searchlight / latest`               |

For a complete list of available label sets and their versions, see the **[Available Label Sets](/docs/services/ensrainbow/usage/available-label-sets/)** documentation page.

## Related Documentation

- **[Label Sets & Versioning](/docs/services/ensrainbow/concepts/label-sets-and-versioning/)** - Conceptual overview of why versioning matters
- **[Data Model](/docs/services/ensrainbow/concepts/data-model/)** - How versions are stored in the database