Files
orbit/docs/reports/phase-4-admission.md

4.4 KiB
Raw Permalink Blame History

P4 进展:实例受理与首批事务

日期:2026-09-18。本阶段实现实例内部服务/存储Start/Get/Steps,以及初始最多32个变更的原子落库。未开放实例HTTP/SDK;Inbox消费与等待运行器仍未实现,不能按首批任务执行证明整个流程闭环。

实现

  • 显式版本、输入契约、当前队列权限、独立启动/读取权限、命名空间未终结实例上限。
  • 原身份回执恢复;固定版本/门控/全部静态步骤/首批任务或等待/轮次/检查点/事件/审计同事务。
  • 六类节点持久化,任务和POLL截止受父绝对截止限制;内部根步骤支持有限推进检查点。
  • 元数据步骤查询核验固定定义与当前激活,实例查询核验输入及冻结策略。
  • 新迁移000018保留旧等待的完整UTF8关联和尾部空格,补齐信号名称及契约版本;无外键,字段提供中文注释。

验证状态

环境为macOS arm64、Go 1.27.1、隔离Docker MySQL 8.4.10;所有数据库为一次性测试库。

用例 当前证据
并发受理 12个同键Start只创建一份实例及任务;精确数字、固定版本、原截止和同键冲突验证通过
真实首批Worker 服务真实创建任务,Worker开始并完成后恰好一条内部结果;普通任务取消接口不能绕过流程所有权
六类节点 TASK/BRANCH/PARALLEL/SIGNAL/TIMER/POLL初始记录、未选中路径、等待不占Worker、512字节关联、128字符名称、轮次和父截止通过
事务故障与背压 队列只能容纳2个但首批需要3个时全部回滚,原键扩容后成功;步骤、等待、任务和审计注入失败均无半套图或额度泄漏
权限及读取 范围撤销后原键和查询拒绝,跨namespace不可见;损坏当前激活和冻结策略的查询拒绝通过
有限检查点和升级 114个静态步骤的32变更首批边界、根检查点及v17等待完整升级通过;相关存储/升级/零外键定向回归连续3轮通过,共59.628秒
完整检查 make fmt/test/vet/build通过;完整隔离脚本退出0,存储、SDK、21个示例及进程故障通过;临时容器已清理
查询关联补强 完整脚本运行期间补充Steps直接任务的所有者、门控及固定队列核对,新增损坏owner/queue用例;最新实例受理组race连续3轮通过,共12.673秒,随后完整make检查再次通过

完整脚本测试组耗时如下(秒);最后的只读实例查询补强以上方专门回归为验证证据,未重新运行无关SDK/进程组:

测试组 耗时
MySQL存储全量 119.723
Worker连接及运行SDK 91.108
计划 / 队列资源SDK 5.651 / 4.479
批量受理 / 任务查询SDK 1.378 / 1.412
订阅管理 / 事件SDK 33.434 / 52.879
人工恢复 / 定义发布SDK 3.406 / 1.356
独立Inbox / Outbox 35.611 / 34.673
应用额度SDK 1.521
SDK进程故障 93.931

共运行19个SDK例子和独立Inbox/Outbox的2个示例,10个SDK进程故障父用例及两个独立模块的进程故障用例通过。它们验证既有Pulse/定义发布链路,不能充当Weave后续自动运行的证据。

复现入口:

make fmt test vet build
make integration

本次通过GO参数选择Go 1.27.1、DOCKER参数选择本机Docker。脚本自行建库并清理,普通测试在数据库环境变量缺失时会跳过集成用例,不能代替实际integration结果。

首轮数据库回归发现实例字段均未变化时MySQL返回affected_rows=0,不能据此判断实例丢失。已改为每次持久化决策递增实例revision并校验旧版本,首批回执为revision="2"。同时修正测试定义的POLL任务/节点/最终信号时限不一致;生产发布校验保持严格。

直接查询完整回归临时数据库:外键数量为0,业务表字段空COMMENT数量为0。代码扫描核对含公共Record共295个持久化字段声明,中文注释无遗漏;808个本地文档链接、53个JSON块及git diff --check通过。

尚待完成

当前测试中的实例由真实内部受理服务创建,首批任务走真实Pulse执行与内部交付;Get不会隐式消费Inbox。尚无流程后继自动推进、定时/信号/轮询恢复或流程进程强杀验收。公共API、SDK启动例子和完整运行器在后续阶段接入。生产容量、跨节点拓扑、清理和运维继续属于P6–P7。