主题
Consistency And Idempotency
一致性模型
- 资源写入采用读写一致的控制面语义。
- 运行输出采用“事实先落库、读模型异步投影”的最终一致模型。
- UI 与 webhook 面向读模型和事件 replay,而不是面向进程内缓存。
幂等原则
- 创建 run 的命令
SHOULD支持idempotencyKey - cancel、notify、fail 等命令
MUST具备幂等语义 - runtime 发布输出事件时,平台
MUST能基于(runId, eventId)或(runId, sequence)去重 - webhook 投递为至少一次,消费者
MUST使用eventId去重 - trace span 导出
SHOULD至少基于(traceId, spanId)去重 - trace event 导出
SHOULD至少基于(traceId, spanId, eventId)或稳定事件指纹去重
排序原则
- run 内输出事件顺序以
sequence为准 - thread 内的展示顺序
MUST可由sequence和sortAt稳定推导 - 同一 run 内不同消费者看到的 terminal event 顺序
MUST一致 - 同一 trace 内 span 的父子关系
MUST通过traceId、spanId、parentSpanId、rootSpanId稳定重建 - 同一 span 内
TraceEvent的展示顺序SHOULD通过timestamp与稳定 tie-break key 重建
Projection 原则
- projection
MUST是可重建的 - projection
MUST NOT依赖单实例内存作为唯一状态 - projection
MAY使用 lease、cursor 和 buffer,但这些只是优化,不是事实源
失败语义
- provider 失败、runtime 断连、webhook 失败、projection 延迟均
MUST被记录为事件或可审计状态 - 运行事实与读模型偏差时,以事件流为准并触发重建
- tracing 属于辅助遥测平面;trace 记录缺失
MUST NOT改变 run 状态,但SHOULD触发观测告警 - GenAI 内容详情如果因策略或大小原因未捕获,
MUST在读面上可区分为“未捕获”而不是静默缺失