SGM versions the protocol independently from any implementation or transport binding. An implementation’s version number is never part of the protocol’s identity.
SGM Protocol: 0.1.0 ← this specification
Reference Impl: 0.1.0 ← the code in reference/
MCP Binding: 0.1.0 ← the binding in transports/mcp/
A consumer negotiating with a peer cares about the protocol version. The other two are informational. Do not conflate them.
SGM follows semantic versioning of the protocol contract:
| Bump | Meaning | Example |
|---|---|---|
Patch (0.1.0 → 0.1.1) |
Clarifications, doc improvements, non-breaking fixes | rewording an error description |
Minor (0.1.0 → 0.2.0) |
Backward-compatible protocol additions | a new optional annotation kind |
Major (0.1.0 → 1.0.0, or 0.x → next) |
Breaking changes to semantics, required fields, or interoperability | removing a required field, changing scope semantics |
SGM is at 0.1.0 (draft / experimental). Before 1.0:
minor bump MAY carry breaking changes while pre-1.0, but this MUST be
called out explicitly.During capability discovery (see capabilities.md), a peer
reports its protocol_version. The rules:
protocol_version before relying on any
behavior.Each record carries a schema_version (see memory.md). This is the
version of the object schema the record conforms to, which may advance on a
different cadence than the protocol. A consumer SHOULD check schema_version
when parsing records it did not create.
type, annotation kind, error code) MAY be added
in a minor bump; existing values keep their meaning forever.