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

4.2 KiB
Raw Permalink Blame History

P5 人工核查与TASK恢复回归

日期:2026-09-18。范围为内部执行核查、叶子步骤结论确认、解除核查和TASK新激活重试。POLL新激活恢复、等待恢复、公共HTTP/独立SDK和完整通用示例仍未完成,持续目标保持完整。

已实现与边界

实现约定见核查文档。执行事实和业务步骤结论分开确认;显式权限、最新实例/任务/步骤版本、当前激活、原因及证据共同约束操作。新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脚本。未提供一次性DSN或实际二进制时跳过的测试不构成通过;专项使用真实MySQL和构建后的Orbit二进制。

未完成范围

  1. POLL跨激活恢复及等待恢复:保留原查询截止、轮次身份、每轮尝试预算和迟到信号隔离,不把剩余范围改成仅支持TASK。
  2. 实例/步骤/控制/信号/恢复/来源/审计公共HTTP、独立SDK、端到端场景与完整P4–P5验收。
  3. P6–P7:监控、故障/容量证据、生产MySQL切换与备份恢复、发布和运维交付。

当前证据只证明对应内部状态与本机单MySQL恢复行为,不宣称整个平台已达到生产验收标准。