一条命令穿过扩展点,每一步都留下是谁做的
用 SignContract 验证:crm 是 owner,fin 只靠 manifest 里声明的 validate / after 钩子和一条收紧谓词参与,内核负责审批与审计。下面每一次演练都是真写库。
谓词只收紧
多个模块对同一命令的 can_command 片段取交集;声明了没实现的片段按拒绝处理。
审批挂在网关
approval: required 的命令先成为 ApprovalCase,批准后沿用同一 commandId 继续跑 validate → handler → after。
validate 可否决
钩子抛出即整条回滚:owner 的 handler 根本不会执行。
after 同事务
主 handler 与事件写入之后、同一事务内执行;合同签了应收没生成这种半状态不存在。
订阅走 outbox
sync 订阅同事务;async 订阅先落 event_delivery 再派发。模块没实现 handler 也记 routed。
审计记每一步
谁(模块)在哪一步做了什么、结果如何。人和 Agent 同一条时间线。
正在绘制…