Skip to content

Versioning and deprecation

Every public Platform format carries an explicit version. A component rejects an unsupported version before it changes stored data or target state.

Versioned surfaces

SurfaceVersion locationRejection behavior
YAML manifestsTop-level schema and version fieldsDecoding stops before the document is used.
HTTP APIURL prefix such as /api/v0/An unknown route returns 404. An invalid body returns 400.
Runner control messagesprotocol_version in each CBOR messageThe runner rejects the message before changing state.
OCI artifact typesVersion in the complete media typeConsumers reject an unsupported media type.

An error includes the version that was received and the versions that the component accepts. No component silently treats one version as another.

Compatibility rules

An optional field may be added without changing the version when its default is documented and it does not change the meaning of existing documents.

The following changes require a new version:

  • Removing a field.
  • Changing the type or meaning of a field.
  • Making an optional field required.
  • Adding a field to a format that rejects unknown fields.

The space.run and space.capability schemas reject fields they do not declare. This prevents an old reader from ignoring a resource assignment or permission that it does not understand.

Deprecation window

The release notes announce a deprecated version and name its replacement. The old version continues to work for the next release and for at least 90 days. Both conditions must be met before removal.

After that window, the normal rejection path names the removed version and its replacement. A migration of stored data is idempotent and resumes safely after interruption.

Current deprecations

There are no announced deprecations.

Deprecated versionAnnouncedReplacementEarliest removal