> Status: draft. Part of the AEP 0.1 protocol specification.
Define how AEP versions protocol assets and how implementations negotiate compatibility.
AEP versions four distinct assets independently:
| Asset | Version Field | Example | Scope |
|---|---|---|---|
| Protocol envelope | aep_version | "0.1" | Envelope field set, required fields, semantic rules |
| Event type families | Event type registry | — | Standard event type names and semantics |
| Payload schemas | payload_schema (URI) | https://schemas.axisrobo.com/tool.call.progress.v1.json | Per-event payload structure |
| Transport bindings | Transport spec | — | stdio framing, WebSocket subprotocol, etc. |
The aep_version field uses MAJOR.MINOR format (e.g., "0.1").
Within a minor version:
Across major versions:
unsupported_version.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.
The standard event type registry (the set of type string values defined in docs/specs/) follows these rules:
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:
...v1, ...v2).payload_schema is present.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).
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.
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.
aep_version in every envelope.event.rejected with code unsupported_version and details.supported listing accepted versions.