3.5 KiB
3.5 KiB
失败记录随业务闭环
主线仍是功能模块业务和功能路由。失败记录用于定位阻断和验证修复,不建立逐 Python API 重放队列,也不通过清空历史数字宣布移植完成。
处理时机
| 情况 | 时机 | 闭环依据 |
|---|---|---|
| 当前命令、构建、加载、计算或持久化失败 | 当前业务批次 | 最新失败之后的匹配执行或明确覆盖故障的当前业务结果 |
| 共享基础设施问题 | 优先处理与当前业务相关的共同原因 | 对应修复及实际成功证据,不重复各模块的相同诊断 |
| 后续模块的历史失败 | 进入该模块时带入,切换模块前安排小批对账 | 当前业务中的同类故障修复或有证据的替代判定 |
| 旧检查、旧路径或旧批次已被替代 | 现在审查,随模块持续清理 | 替代流程、具体原因及源码/证据指纹;记 superseded,不记测试通过 |
| 不适用的诊断或运行事件 | 现在分类并核实 | 明确不适用原因及可追溯依据;记 not_applicable |
| 无法确定原因或关联业务 | 保留 pending 并继续定位 | 不因未知或暂时无法复现而关闭 |
实施机制
- 原始账本
docs/current/freecad-web-scheduler-failures.json保留命令、首个错误、最后错误及历史计数,关闭后不删除记录。 tools/failure_reconciliation.py自动分类并生成docs/current/failure-reconciliation.json;同类分组只用于合并排查,不能代替逐条闭环依据。- 每个模块工作包带入最多三个相关错误组。直接关联当前 capability 的记录优先;其他模块的失败不混入本批。
- 切换模块时安排最多四条失败记录对账。冷却和无进展规则同样适用,防止对账占满正常实施。
- 对账发现需要代码修复时,用
tools/record_runtime_issue.py CAPABILITY_ID --error 描述 --failure-key KEY关联当前业务。规划器立即转入该业务修复;部署后返回结果确认和失败对账。 - 当前执行或外层构建成功后,仅匹配相同命令的最新失败生成成功证据。新失败改变 occurrence 指纹,旧闭环立即失效。
- 业务用例实际覆盖历史故障时,在对应结果中列出
resolvedFailureKeys。外层保存失败指纹,并要求业务结果与当前源码/产物对应后自动闭环;不根据“模块已完成”批量推断通过。 - 过期诊断可以执行
python3 tools/failure_reconciliation.py --review KEY --disposition superseded --reason 具体原因 --source 相关源码或证据。not_applicable使用同一入口。运行/构建故障不能仅凭政策文档归档。 - 旧
repair_scheduler_failure_ledger.py --resolve的元数据式通过入口已禁用;搜索无匹配等旧诊断只标记待审查,不再自动伪标 resolved。
最终对账
模块业务结果全部完成后,继续处理剩余的 failure-reconciliation 批次。python3 tools/failure_reconciliation.py --check 必须通过,且最终完成判断直接复核当前原始账本与证据,不依赖旧汇总中的 complete 字样。
状态页分别展示原始记录数、待对账数、已闭环数和未分类/已变化记录数。分类完成不是故障修复完成;superseded/not_applicable 不是原命令测试通过。
本轮结果
563 条记录已建立分类。三条只读取废弃 docs/current/context-manifest.json 的历史诊断,依据当前逐任务 context 生成与读取源码完成替代审查。原始 563 条仍保留,其中 3 条为 superseded,560 条待后续业务闭环。