Files
orbit/docs/reports/phase-5-recovery.md

41 lines
4.2 KiB
Markdown
Raw 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.
# P5 人工核查与TASK恢复回归
日期:2026-09-18。范围为内部执行核查、叶子步骤结论确认、解除核查和TASK新激活重试。POLL新激活恢复、等待恢复、公共HTTP/独立SDK和完整通用示例仍未完成,持续目标保持完整。
## 已实现与边界
实现约定见[核查文档](../16-workflow-recovery.md)。执行事实和业务步骤结论分开确认;显式权限、最新实例/任务/步骤版本、当前激活、原因及证据共同约束操作。新TASK激活保留原输入和绝对截止,历史尝试从原预算扣除,旧激活与旧任务结果不覆盖。
任务核查、流程审计、内部结果和外部结果流在同一事务提交。未知事实、未结束尝试、未释放许可、待消费或隔离Inbox不能由继续操作跳过。原停止目标、暂停标记和固定定义不改变。无新数据库表或持久化字段,仍为35个实体、303个中文注释字段,禁止外键与级联删除。
## 环境与证据
本机darwin/arm64、Go 1.27.1、Docker MySQL 8.4.10,一次性隔离数据库。
| 检查 | 当前结果 |
| --- | --- |
| 首轮专项 | 原任务恢复/流程控制通过;新核查两个测试夹具错误:权限ID误以二进制写入JSON、查询助手已消费后再次消费;已修正,该轮不计为通过 |
| 修订后专项 | 11组新核查场景、原任务恢复与实际流程进程通过,`-race`,48.899秒;新核查4.47秒、流程进程33.85秒 |
| 最终增补 | 增加实际门控保持、跨实例任务/旧版本/非法输出拒绝、原实例过期只能结清等保护与回归 |
| 输入与截止来源补强 | 重新验证首次输入契约和截止计算来源后,14组核查、原任务恢复及实际流程进程通过,48.964秒;流程进程32.37秒 |
| 最终叶子步骤专项 | 16组核查、原任务恢复及原流程控制通过,29.950秒;核查9.68秒。增加SIGNAL过期核查及TIMER不能提前满足原等待时长的真实时钟验证,生产逻辑未再修改 |
| 基础回归 | 补强后再次运行`make fmt test vet build`通过,退出0 |
| 完整隔离回归 | 整条脚本通过,退出0;开始时13组核查及全部存储187.796秒,实际流程进程31.601秒,Worker SDK 94.238秒,最终SDK进程故障组90.200秒;19个SDK示例和2个独立业务示例全部通过 |
| 数据结构与文档 | 实际MySQL外键0、无COMMENT字段0;303个持久化字段声明均有中文注释;908个本地链接、53段JSON检查通过 |
进程测试确认全部控制节点退出后,人工执行核查的新结果由两个新节点消费;再次全停后提交解除核查,原取消目标被正确结清。另一个已失败TASK在全停期间建立新激活并保留原任务截止和剩余1次尝试,两个新节点接管后只执行新任务,原失败激活保留。
完整链路开始后发现首次输入契约与截止来源还可加强,未中断正在执行的完整脚本。该增补由后续真实MySQL专项及重新构建的实际进程验证;不能把此前整套存储187.796秒的记录描述为包含这项增补。最后增加的SIGNAL/TIMER测试也已通过独立专项及vet,生产逻辑未再修改。各临时数据库容器均已由脚本清理。
存储回归还覆盖同键12路并发、旧激活真实结果重放、普通Pulse入口不得绕过流程归属、撤销队列授权后拒绝原回执、结果流故障全事务回滚、配额满额及审计失败不留新任务、PENDING不能变为业务成功、原任务截止不重置、暂停保留及停止意图恢复。
完整复现入口为[隔离MySQL脚本](../../scripts/test-mysql.sh)。未提供一次性DSN或实际二进制时跳过的测试不构成通过;专项使用真实MySQL和构建后的Orbit二进制。
## 未完成范围
1. POLL跨激活恢复及等待恢复:保留原查询截止、轮次身份、每轮尝试预算和迟到信号隔离,不把剩余范围改成仅支持TASK。
2. 实例/步骤/控制/信号/恢复/来源/审计公共HTTP、独立SDK、端到端场景与完整P4–P5验收。
3. P6–P7:监控、故障/容量证据、生产MySQL切换与备份恢复、发布和运维交付。
当前证据只证明对应内部状态与本机单MySQL恢复行为,不宣称整个平台已达到生产验收标准。