Skip to content
docs
Arxo ↗

Versions

For LLMs1 sections

Every document in the three protocols carries two version numbers. They answer two different questions: what shape is this, and under what meaning was it computed.

FieldNamesExampleChanges when
schemaVersionthe shape of the documentlaw.core.evaluation/0.2a field, a node or an enumeration value appears
semanticVersionthe meaning it was computed under0.2a correction changes the meaning while the shape stays

The two numbers move independently. A document keeps its schemaVersion as long as its shape is unchanged, even if a correction has changed what the same shape means; the correction then moves semanticVersion. The field definitions live on the schema pages, for example schemaVersion in the answer document.

  1. Both numbers are present in every message. A document without either one is not a document of the protocol.
  2. A new field arrives only with a new schemaVersion. Documents of the earlier version keep their shape and their hashes byte for byte.
  3. Enumerations grow only with a new version. TRUE_ONLY, FALSE_ONLY, BOTH, NEITHER and the evaluation statuses can be matched exhaustively: no new value will appear under a version already read.
  4. Nothing is removed or renamed. A reader written against an earlier version keeps finding every field where it left it.
  5. An unknown field is rejected before any computation, not silently skipped. A host that sends more than the known shape learns it at once.
  6. Types for TypeScript and Python are generated from the schemas, never written by hand, so they cannot drift from what the engine accepts.

A host that follows these rules keeps working when a new version appears: it reads the version it knows and refuses, by name, a document it does not. The overview of what the protocols carry is on the Protocols page.

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.