8. 版本管理

8.1 语义化版本

本协议遵循 Semantic Versioning 2.0.0:

MAJOR.MINOR.PATCH
版本号变更类型兼容性
MAJOR不兼容的协议变更破坏性,需要消费者升级
MINOR向后兼容的功能新增旧消费者继续工作
PATCH向后兼容的问题修复完全兼容

8.2 兼容性规则

8.2.1 兼容性判定

定义:

  • 消费者支持的协议版本:X.Y.Z
  • 描述符声明的协议版本:A.B.C

兼容条件:

兼容 ⟺ A === X

8.2.2 兼容性矩阵

消费者描述符兼容备注
1.0.01.0.0✓完全匹配
1.0.01.5.0✓次版本前向兼容
1.5.01.0.0✓次版本后向兼容
1.0.02.0.0✗主版本不同

8.3 版本不兼容处理

当消费者检测到版本不兼容时,MUST 拒绝调用并返回 VERSION_INCOMPATIBLE 错误(见第 9 章)。

8.4 向后兼容保证

次版本(MINOR)升级 MUST 满足:

  1. 不删除已有的必需字段
  2. 新增字段默认为可选
  3. 不改变已有字段的语义
  4. 不缩小枚举类型的值域
  5. 不增加已有接口的必需参数

8.5 文档版本目录

协议文档按版本组织:

docs/{lang}/specification/
├── draft/                    # 当前开发草稿
│   ├── 01-引言.md
│   ├── 02-术语与约定.md
│   └── ...                  # 每章一个独立文件
└── 2025-10-25/              # 已发布版本(以发布日期命名)
    ├── 01-引言.md
    ├── 02-术语与约定.md
    └── ...

Schema 定义同样按版本组织:

schema/
├── draft/
└── 2025-10-25/