# FreeCAD 后续工作细粒度执行计划 ## 1. 机器真值 - `config/freecad-active-work-queue.json`:全部微任务、依赖、阶段、证据要求、退出条件和唯一活动任务。 - `docs/freecad-active-work-status.generated.zh-CN.md`:由同一生成器产生的实时摘要;禁止手工编辑或在其他计划中复制动态数字。 - `config/freecad-follow-up-task-progress.json`:A-I 后续任务的完成证据账本;只能追加连续前缀。 - `config/freecad-ordered-operation-pair-classification.json`:19×19 操作对的原生接受/拒绝事实。 `./npmw run generate:freecad-active-work-queue` 同时生成队列和状态页;`./npmw run check:freecad-active-work-queue` 对两个产物 fail-closed。任何时刻必须恰好有一个 `in_progress` 任务。 ## 2. 里程碑顺序 1. `ORA-GUI-BASELINE`:原生 GUI 命令清册和隔离探针。 2. `ORA-GUI-WORKFLOWS`:命令族成功、禁用、失败、取消和恢复。 3. `TSN-RECOVERY-DRIFT`:恢复命名与生产拓扑漂移分类。 4. `TSN-ORDERED-PAIRS`:19×19 操作对逐对接受/拒绝、变异、命名和往返。 5. `PROPERTY-CODECS`:从原生语义报告自动枚举所有 opaque Property 类型。 6. `DOCUMENT-SEMANTICS`:observer、事务、DAG、失败恢复、Extension、FeaturePython 和多文档。 7. `CORE-MODELING`:19 个生产建模操作的纵向闭环。 8. `FCSTD-AND-FORMATS`:FCStd 资源、对抗输入和 STEP/IGES/BREP 双向往返。 9. `GUI-CLOSURE`:应用壳、MDI、树、Task、属性编辑器、对话框、焦点、选择和响应式无障碍。 10. `DOCUMENT-ENGINEERING-WORKBENCHES`:Draft、Spreadsheet、TechDraw、Plot、Assembly、BIM、Surface、Mesh 和 Material。 11. `PLATFORM-SCRIPT-PROXY`:FEM、CAM、Robot、数据模块、Python/Macro、Addon 及正式代理边界。 12. `QA-RELEASE`:浏览器/OS/GPU、无障碍/locale、fuzz/长稳、资源、签名发布和 exact promotion。 前一里程碑未完成时,后一里程碑全部保持 `pending`。只读 oracle 可以准备,但不能写入第二个活动任务或提前提升能力。 ## 3. 每个能力的九个最小任务 | 阶段 | 单一交付物 | 退出条件 | | --- | --- | --- | | A | 原生清册与前置 | TypeId、输入、默认值、依赖和适用性机器可读 | | B | 原生成功证据 | 名义值和边界值的值、Shape、拓扑、状态与诊断齐全 | | C | 原生失败/取消证据 | 无效输入、禁用、取消和文档未污染可复现 | | D | 参数变异/恢复 | 编辑、重算、恢复后的几何与语义完成分类 | | E | Facade 实现 | 生产路径无隐藏 fallback,UI 不直连内核 | | F | 事务恢复 | abort/undo/redo/stale/失败和资源所有权闭合 | | G | FCStd 往返 | FreeCAD-Web-FreeCAD 无未知语义漂移 | | H | 真实浏览器 | Chrome Worker、OPFS、UI 状态和资源释放通过 | | I | 能力提升 | A-H 全过,聚焦门禁与 exact blocker 由机器报告同步 | 每个阶段只允许一个主要产物和一个聚焦检查。缺少任一阶段时,能力最多保持 `compatible` 或既有的显式 proxy 等级。 ## 4. 单轮执行协议 1. 读取队列的 `nextTask`,确认依赖和输入 artifact 哈希。 2. 只修改该任务直接需要的 oracle、实现、检查器和报告。 3. 先运行原生 probe 或真实浏览器 test,再运行对应只读 check。 4. 验证 Shape/Worker/OPFS 等资源回到基线,失败不污染文档。 5. 运行相关 Facade、FCStd、TSN/执行计划门禁。 6. 仅在退出条件全部满足后记录完成证据并重新生成队列。 7. 运行 `git diff --check`、全部 JSON 解析和与风险相称的回归;发布点运行完整 `./npmw run verify`。 原生拒绝是有效分类,不应被强行实现为接受;但必须固定失败阶段、诊断、事务回滚和干净往返。原生接受则必须使用真实 builder,不能用通用 Shape 代理冒充。