3.9 KiB
3.9 KiB
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. 里程碑顺序
ORA-GUI-BASELINE:原生 GUI 命令清册和隔离探针。ORA-GUI-WORKFLOWS:命令族成功、禁用、失败、取消和恢复。TSN-RECOVERY-DRIFT:恢复命名与生产拓扑漂移分类。TSN-ORDERED-PAIRS:19×19 操作对逐对接受/拒绝、变异、命名和往返。PROPERTY-CODECS:从原生语义报告自动枚举所有 opaque Property 类型。DOCUMENT-SEMANTICS:observer、事务、DAG、失败恢复、Extension、FeaturePython 和多文档。CORE-MODELING:19 个生产建模操作的纵向闭环。FCSTD-AND-FORMATS:FCStd 资源、对抗输入和 STEP/IGES/BREP 双向往返。GUI-CLOSURE:应用壳、MDI、树、Task、属性编辑器、对话框、焦点、选择和响应式无障碍。DOCUMENT-ENGINEERING-WORKBENCHES:Draft、Spreadsheet、TechDraw、Plot、Assembly、BIM、Surface、Mesh 和 Material。PLATFORM-SCRIPT-PROXY:FEM、CAM、Robot、数据模块、Python/Macro、Addon 及正式代理边界。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. 单轮执行协议
- 读取队列的
nextTask,确认依赖和输入 artifact 哈希。 - 只修改该任务直接需要的 oracle、实现、检查器和报告。
- 先运行原生 probe 或真实浏览器 test,再运行对应只读 check。
- 验证 Shape/Worker/OPFS 等资源回到基线,失败不污染文档。
- 运行相关 Facade、FCStd、TSN/执行计划门禁。
- 仅在退出条件全部满足后记录完成证据并重新生成队列。
- 运行
git diff --check、全部 JSON 解析和与风险相称的回归;发布点运行完整./npmw run verify。
原生拒绝是有效分类,不应被强行实现为接受;但必须固定失败阶段、诊断、事务回滚和干净往返。原生接受则必须使用真实 builder,不能用通用 Shape 代理冒充。