Files
FreeCADWasmDev/docs/FAILURE_RECONCILIATION_POLICY.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

3.5 KiB
Raw Blame History

失败记录随业务闭环

主线仍是功能模块业务和功能路由。失败记录用于定位阻断和验证修复,不建立逐 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 条待后续业务闭环。