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

60 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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后续自动运行的证据。
复现入口:
```sh
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。