行为与一致性规范
本节定义跨语言一致的行为约束,任何实现必须遵守。
确定性规则
- 禁止使用非确定性来源参与逻辑分支(系统时间、随机数、外部服务回包等)
- 必须通过输入流承载所有外部变化
- 逻辑顺序由协议字段决定,不能依赖到达时间
Epoch 处理规则
- 每个 Epoch 内消息被确定性排序后执行
- Actor 在一个 Epoch 内顺序处理 inbox
- 状态只在 Epoch 边界对外可见
消息排序规则(最小一致性)
- 排序键固定为
(epoch, channelId, qos(desc), sourceId, sourceSeq) - 同键冲突禁止;如果出现冲突视为协议错误
迟到与缺失策略
- 迟到消息只允许进入下一个 Epoch 或丢弃(由配置决定)
- 丢失输入必须被显式记录并产生可审计事件
一致性验证
- 通过可回放输入流验证一致性
- 每个 Epoch 结束计算
stateHash,用于跨语言对比
stateHash 规则
- 使用 FNV-1a 64-bit
- 输入为 UTF-8 字符串:
state:<value> - 输出为 16 位小写十六进制(零填充)
测试要求(必须)
- 对同一份输入向量,各语言实现输出一致
stateHash - 所有协议错误必须可被测试用例捕获