19 · 升级与迁移指南
版本:
0.1.0。所有持久化格式都带version字段;不兼容变更升 major。
19.1 版本矩阵
| 格式 | 版本 | 代码位置 |
|---|---|---|
| 交互网 IR | 1 | specs/net-ir.md / NetJson.version |
| ProgramJson | 1 | ain-core ProgramJson.version |
| Trace | 1 | specs/trace.md / Trace.version |
| FlowSpec | 1 | specs/flow-spec.md / FlowSpec.version |
| Cell/Wire protocol | 1 | specs/cell-protocol.md / CELL_PROTOCOL_VERSION |
| Flow wire protocol | 1 | specs/wire-protocol.md / PROTOCOL_VERSION |
| Checkpoint | 1 | ain-runtime Checkpoint.version |
| Effect ledger | 1 | ain-cluster EFFECT_LEDGER_VERSION(NDJSON 每行) |
19.2 兼容策略
- 新增可选字段 → minor;运行时忽略未知字段(serde default)。
- 改变字段语义/删除字段 → major;旧运行时拒绝。
- Trace/Checkpoint 的
state_hash包含 schema 字段;加字段会改变 hash,需要重新生成 golden/fixtures。 - 协议:新 coordinator 对旧 worker 的未知请求会得到 error;灰度时先升级 worker。
19.3 从 0.1.0 升级
0.1.0 是首个版本。未来升级步骤:
- 读
CHANGELOG.md的 Breaking changes。 - 备份 WAL/trace/checkpoint。
- 先升级 worker(向后兼容期),再升级 coordinator。
- 跑
ain check+cargo test --workspace+pnpm check。 - 用旧 trace 跑
ain flow replay,确认state_hash;如 schema 变更,按迁移脚本重放。
19.4 迁移示例(未来大版本)
# 1) 导出旧 FlowSpec
ain flow compile old.flow > old.json
# 2) 用新版本重新编译(推荐)
ain flow compile old.flow > new.json
# 3) 对比
diff <(jq -S . old.json) <(jq -S . new.json)
# 4) 重放旧 trace(若 schema 兼容)
ain flow replay new.json old-trace.json
19.5 不兼容变更检查表
-
NetJson.version/FlowSpec.version -
Trace.version/Checkpoint.version -
state_hashgolden 更新 -
specs/*更新 -
CHANGELOG.md写 Breaking changes - 示例/fixtures 重新生成
-
docs/迁移说明