Files
orbit/docs/reports/phase-4-engine-core.md

5.5 KiB
Raw Blame History

P4 进展:步骤决策与内部结果交付

日期:2026-09-18。本次完成纯步骤决策器、Pulse结果原子写入Weave Inbox及独立快照迁移;P4整体尚未完成,实例API、消费推进与真实等待运行器仍待开发。设计与边界见内部基础。

代码与数据变化

  • weave/engine提供不可变编译结果、1–32变更预算的顺序/分支/并行决策、任务参数与等待描述、精确数字条件及POLL业务状态分类。不会调用业务处理器或授予执行权。
  • 结果事务复用现有任务快照查询读取关联;内部交付先于对外结果流行锁,任务/尝试/许可/原事件/内部快照/外部日志/审计/回执一起提交或回滚。
  • 新迁移000017为Inbox增加来源任务、激活、状态版本和独立快照4字段,全部中文注释。35个实体、293个直接声明持久化字段,零外键/级联。旧的未验证记录隔离,不按当前任务重建历史。
  • 尚无新的公共运行API或SDK;已有定义发布SDK和其余场景随完整回归验证,执行器不作为业务端可调用的SDK暴露。

已完成验证

环境:macOS arm64、Go 1.27.1、隔离Docker MySQL 8.4.10。所有数据库测试使用临时库、随机秘密与回环端口。

检查 证据
make fmt / race test / vet / build 通过,覆盖服务端、SDK和独立Inbox/Outbox模块
决策器单测 预算1/2/32反复重编译及JSON恢复,不重复产生任务;精确数字、分支固定、并行汇合、暂停、类型/大小/状态拒绝、不可达执行、已完成组合完整性、并发只读、SIGNAL/TIMER/POLL准备与查询分类均通过;新增嵌套并行分支耗尽预算后仍遍历其他在途分支的回归,race测试通过
初始真实MySQL定向回归 修正测试夹具未提交非成功结果error_code后,Schema、结果交付、v16升级连续3轮通过,共22.917秒;此轮尚未加入后续自然租约到期用例
新结果交付用例 四种结果、8个并发同完成回执、暂停期间收集、POLL旧激活归属、内部/外部写入失败完整回滚、缺失owner/门控/激活/定义拒绝;独立快照不依赖外部结果日志;实际数据库租约自然到期后转NEEDS_REVIEW并交付一次,重复恢复不再写入
升级用例 真实v16结构及PENDING/LEASED/PROCESSED/QUARANTINED记录升级,历史状态/代次及空来源检查;缺来源的新PENDING被CHECK拒绝;schema与零外键检查通过
存储全量及无外键检查 重跑后全部存储集成测试通过,116.335秒;v7的70个外键移除至0、323个原索引组件保留,新结果唯一索引另行核对。v9额度回填和v16升级通过;直接查询当前测试库外键为0、业务字段空COMMENT为0
完整隔离回归 scripts/test-mysql.sh退出0;19个SDK示例与独立Inbox/Outbox共21个例子执行通过,10个SDK进程故障父用例及Inbox/Outbox各自进程故障通过,临时容器已清理
模型及文档核对 含公共Record的293个直接持久化字段声明均有中文注释;799个本地文档链接、53个JSON块校验通过;git diff --check通过

完整脚本中的测试组结果如下(秒):

测试组 耗时
MySQL存储全量 116.335
Worker连接及自动运行SDK 92.477
计划 / 队列资源SDK 5.676 / 4.488
批量受理 / 任务查询SDK 1.424 / 1.627
订阅管理 / 事件SDK 33.392 / 51.871
人工恢复 / 定义发布SDK 3.395 / 1.354
独立Inbox / Outbox 34.588 / 34.330
应用额度SDK 1.503
SDK真实进程故障 93.116

复现入口(Go及Docker需已安装):

make fmt test vet build
make integration

本次实际通过GO参数选择Go 1.27.1、DOCKER参数选择本机Docker;脚本自行创建隔离数据库,不连接已有业务数据库。数据库环境变量缺失时普通单测会跳过集成用例,不能代替上述真实integration结果。

测试中的流程关联由受控SQL夹具创建,不能作为实例受理实现的证据。数据库写入失败通过触发器注入,之后原完成身份重报成功;没有修改接口约束以接受不合法回执。

首次完整回归暴露两处旧升级测试未适配v17:v9还原夹具遗漏删除新增Inbox字段,v7索引保留比较未单独核验新增唯一索引。已修正夹具并增加该唯一索引列序/唯一性断言,重跑存储全量通过;没有修改历史迁移或放宽零外键检查。

复查另发现决策器在左侧分支耗尽变更预算后,提前返回另一个已有分支,误报其活动子任务不可达。新增测试先复现,再将预算限制保留在新增变更处,继续遍历已有选中路径;恢复后各任务仍只激活一次,最终输出及完整race检查通过。

尚未实现及后续工作

下一步实现实例存储适配与Start/Get/步骤查询:认证、固定版本/输入、实例及门控、首批任务与幂等/审计同事务;之后内部事件消费、有限推进检查点、持久化等待、流程来源与SDK接入。POLL轮次、信号竞争、暂停/取消/核查恢复与预算维护继续按P4–P5交付。

本阶段没有真实流程进程重启回归、持久化轮询或信号/定时消费器。P3已有进程故障测试只证明原任务和订阅链路,不能替代Weave运行器验证。增加关联索引读取与快照写入后的吞吐、存储增长、清理及跨版本上线边界继续在P6–P7验证,不声称生产容量和高可用已达标。