# Versions

URL: https://docs.nexart.io/docs/versions

The canonical reference for the four independent version axes used across NexArt: package version, record schema, canonicalisation protocolVersion, and container version.

## Four Independent Version Axes

NexArt versioning is deliberately split into four axes that MUST NOT be conflated:

- Package version. The npm version of an individual package, such as `@nexart/ai-execution` or `@nexart/policy`.
- Record schema version. The shape of a CER snapshot and bundle, currently V1 or V2. See AI Execution CER.
- Canonicalisation protocolVersion. The byte-level canonicalisation profile used when computing hashes, for example `nexart-v1` or `jcs-v1`.
- Container version. The version of the outer bundle container itself (the CER container, the Project Bundle container), independent of the protocolVersion carried inside it.

A package major/minor bump does not imply a protocol change. Packages, record schemas, protocol versions, and containers each evolve on their own schedule.

## Current Package Versions

| Package | Version |
| --- | --- |
| @nexart/ai-execution | 1.4.0 |
| @nexart/agent-kit | 0.6.0 |
| @nexart/cli | 1.3.0 |
| @nexart/signals | 0.8.3 |
| @nexart/codemode-sdk | 1.13.1 |
| @nexart/ui-renderer | 0.9.1 |
| @nexart/policy | 0.1.0 |

Rendered from `VERSIONS.packages` in `src/data/versions.ts`. For example, `pkg("@nexart/ai-execution")` resolves to `@nexart/ai-execution@1.4.0`.

## Protocol and Canonicalisation Table

| protocolVersion | Canonicalisation profile |
| --- | --- |
| 1.2.0 | nexart-v1 |
| 1.3.0 | jcs-v1 |
| 1.3.1 | jcs-v1 |

Default protocolVersion when omitted: `1.2.0`. Values are sourced from `VERSIONS_MANIFEST.protocol` and `VERSIONS_MANIFEST.canonicalizationProfiles`, last reviewed 2026-08-18.

## Other Container and Schema Identifiers

- CER schema version: `0.1`
- Bundle type identifier: `cer.ai.execution.v1`

The AI Execution V2 bundle and Project Bundle each carry their own container version and their own protocolVersion; a container version bump does not by itself change the protocolVersion, and vice versa. See AI Execution CER and Release Notes.

## Fail-Closed on Unknown protocolVersion

Unknown protocolVersion MUST be rejected
A verifier that encounters a `protocolVersion` it does not recognize MUST fail closed rather than attempt best-effort verification. This surfaces as a schema-level error (for example `SCHEMA_ERROR` or `SCHEMA_VERSION_UNSUPPORTED` from the CLI) rather than a silent pass. See AIEF for how this interacts with the `schemaSupported` check.

## A Package Bump Does Not Imply a Protocol Change

Bumping a package&#x27;s minor or patch version (for example adding a new optional field or export) does not by itself change the canonicalisation `protocolVersion`. Consumers MUST check `protocolVersion` and record schema fields directly rather than inferring compatibility from a package version string.

## Next

- Release Notes: what changed at the current baseline.
- AIEF: how AIEF version relates to these axes.
- Glossary: definitions for protocolVersion and related terms.
