Versioning

AEP Versioning

> Status: draft. Part of the AEP 0.1 protocol specification.

Purpose

Define how AEP versions protocol assets and how implementations negotiate compatibility.

Versioned Assets

AEP versions four distinct assets independently:

AssetVersion FieldExampleScope
Protocol envelopeaep_version"0.1"Envelope field set, required fields, semantic rules
Event type familiesEvent type registryStandard event type names and semantics
Payload schemaspayload_schema (URI)https://schemas.axisrobo.com/tool.call.progress.v1.jsonPer-event payload structure
Transport bindingsTransport specstdio framing, WebSocket subprotocol, etc.

Protocol Envelope Versioning

Format

The aep_version field uses MAJOR.MINOR format (e.g., "0.1").

Compatibility Rules

Within a minor version:

Across major versions:

Negotiation

During session initialization (session.opened / session.ready), peers declare their supported protocol version via capabilities.aep_version. Both sides must agree on a version before the session becomes ready. A peer that cannot negotiate a compatible version should send session.error with code unsupported_version.

Event Type Registry Versioning

The standard event type registry (the set of type string values defined in docs/specs/) follows these rules:

Payload Schema Versioning

Each event type family may define one or more payload schemas. A payload schema is identified by a URI in the payload_schema field:

{
  "type": "memory.fact.added",
  "payload_schema": "https://schemas.axisrobo.com/memory.fact.added.v1.json",
  "payload": { ... }
}

Rules:

Transport Binding Versioning

Each transport binding (stdio, WebSocket, HTTP SSE, etc.) versions independently of the protocol envelope. A transport binding specification defines:

Current transport binding documents: none finalized. See docs/specs/transport-stdio.md and docs/specs/transport-websocket.md (planned).

Forward Compatibility

Implementations should follow these forward-compatibility practices:

1. Ignore unknown fields in envelopes and payloads. 2. Treat unknown event types as valid but unhandled (acknowledge if required, do not reject). 3. Downgrade gracefully when a peer declares an older version — use only features available in that version. 4. Log, don't crash on protocol features you don't recognize.

Deprecation Policy

AEP follows a no-surprise deprecation policy:

1. Deprecation notice: A field, event type, or feature is marked deprecated in a minor version release. 2. Support window: The deprecated item is supported for at least one additional minor version. 3. Removal: The item is removed in the next major version.

Deprecation notices appear in the protocol specification changelog and the relevant spec document.

Implementation Notes