feat: extend FreeCAD parity queue and pair diagnostics
Some checks failed
real-verification / chrome (push) Has been cancelled
real-verification / freecad-oracle (push) Has been cancelled
real-verification / wasm (push) Has been cancelled

This commit is contained in:
2026-08-15 06:29:20 -04:00
parent 83cbc80971
commit 378a6e7c0a
13 changed files with 21979 additions and 84 deletions

View File

@@ -113,14 +113,9 @@ M3 不要求把 FreeCAD 本身拒绝的组合强行实现为顺序特征链。
### 6.1 微任务队列
机器真值为 `config/freecad-active-work-queue.json`,由 `generate:freecad-active-work-queue` 从原生报告生成,并由 `check:freecad-active-work-queue` fail-closed 校验。当前共 487 个微任务134 `completed`、1 `in_progress`、352 `pending``maxInProgress=1`,唯一下一任务是 `TSN-PAIR-fuse-pad`
机器真值为 `config/freecad-active-work-queue.json`,由 `generate:freecad-active-work-queue` 从原生报告、Property 语义报告、exact 计划和后续进度账本生成,并由 `check:freecad-active-work-queue` fail-closed 校验。实时任务数、里程碑状态和唯一下一任务只发布在 `docs/freecad-active-work-status.generated.zh-CN.md`,本手写文档不再复制动态数字
| 微里程碑 | 任务粒度 | 数量 | 状态 | 下一退出条件 |
| --- | --- | ---: | --- | --- |
| `ORA-GUI-BASELINE` | 1 个配置边界或 1 个 GUI 命令分片 | 106 | 106 completed | 已关闭100/100 分片、1111/1111 命令状态、2 个上下文延迟命令均有证据 |
| `ORA-GUI-WORKFLOWS` | 1 个命令族的 1 种工作流状态 | 7 | 7 completed | `PartDesign_Pad` 五态原生工作流、聚焦断言和 exact blocker 更新已关闭 |
| `TSN-RECOVERY-DRIFT` | 1 个原生 case 或 1 个生产 mutation | 13 | 13 completed | 11 个 PartDesign case 与生产 `cut`/`rotate` 漂移均已分类为允许演进 |
| `TSN-ORDERED-PAIRS` | 1 个有序操作对 | 361 | 8 completed / 1 in_progress / 352 pending | `fuse->rotate` 已关闭;当前只分类 `fuse->pad` |
队列现在覆盖 GUI oracle、TSN 漂移、全部有序操作对、逐 Property codec、Document 语义、核心建模、FCStd/格式、GUI 全量、文档/工程工作台、平台/脚本/代理和 QA/发布。每个后续能力拆为 A-I 九个串行任务;完成证据记录在 `config/freecad-follow-up-task-progress.json`,跳号、未知任务、空证据和第二个活动任务都会使生成器失败。
`ORA-GUI-WORKFLOWS` 已按七步关闭:选定命令族、成功、禁用、失败、取消、恢复、更新 blocker/门禁。一步只新增一种原生状态证据,前一步未通过时不启动后一步。

View File

@@ -0,0 +1,28 @@
<!-- Generated by scripts/generate-freecad-active-work-queue.mjs. Do not edit. -->
# FreeCAD 后续工作机器状态
生成日期2026-08-15。基线FreeCAD 1.1.1 / `0108fd4b4850cc46e625b60e53cea7a7bbe69f8d`
- 唯一活动任务:`TSN-PAIR-fuse-revolution`
- 微任务1756 total / 138 completed / 1 in_progress / 1617 pending
- 有序操作对12/361 classified / 349 unknown
- Property27/85 native types / 58 opaque types
- exact 任务5/52 completed
- 模块能力0 exact / 26 compatible / 5 proxy / 3 development
| 里程碑 | 任务数 | completed | in_progress | pending | 当前任务 |
| --- | ---: | ---: | ---: | ---: | --- |
| `ORA-GUI-BASELINE` | 106 | 106 | 0 | 0 | `-` |
| `ORA-GUI-WORKFLOWS` | 7 | 7 | 0 | 0 | `-` |
| `TSN-RECOVERY-DRIFT` | 13 | 13 | 0 | 0 | `-` |
| `TSN-ORDERED-PAIRS` | 361 | 12 | 1 | 348 | `TSN-PAIR-fuse-revolution` |
| `PROPERTY-CODECS` | 522 | 0 | 0 | 522 | `-` |
| `DOCUMENT-SEMANTICS` | 90 | 0 | 0 | 90 | `-` |
| `CORE-MODELING` | 171 | 0 | 0 | 171 | `-` |
| `FCSTD-AND-FORMATS` | 72 | 0 | 0 | 72 | `-` |
| `GUI-CLOSURE` | 135 | 0 | 0 | 135 | `-` |
| `DOCUMENT-ENGINEERING-WORKBENCHES` | 90 | 0 | 0 | 90 | `-` |
| `PLATFORM-SCRIPT-PROXY` | 117 | 0 | 0 | 117 | `-` |
| `QA-RELEASE` | 72 | 0 | 0 | 72 | `-` |
详细任务、依赖、阶段、证据要求和退出条件见 `config/freecad-active-work-queue.json`。完成证据只能追加到 `config/freecad-follow-up-task-progress.json`,生成器会拒绝跳号、未知任务和无证据完成项。

View File

@@ -0,0 +1,55 @@
# 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 实现 | 生产路径无隐藏 fallbackUI 不直连内核 |
| 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 代理冒充。

View File

@@ -50,29 +50,14 @@
- Property status15 类已观察状态均已进入类型化 Facade 行为;`LockDynamic``PartialTrigger` 已有原生事务证据,但完整 observer 与局部重算序列未关闭。
- TSN30/30 原生 mutation、219/219 几何阶段恢复通过11 个 PartDesign case/28 个恢复命名阶段均已通过第二次独立原生复跑分类为允许演进。
- 生产命名链:五阶段 5/5 几何恢复2 个恢复拓扑 case/5 个下游阶段已分类为允许演进;仍有 3/5 通用 Shape 代理并缺注册 rotate mutation family。
- 有序操作19×19 共 361 对8 对已有分类回放353 对待原生接受/拒绝判定
- 有序操作19×19 的逐对分类持续执行;实时已完成数、未知数和唯一活动项只从生成状态读取
- FCStd支持的原生 codec 与未知资源保留已有证据,但所有对象/属性/Extension/Shape/ElementMap2/StringHasher 的 FreeCAD-Web-FreeCAD 双向变异未穷尽。
- GUI应用壳和代表性工作流已有浏览器证据但动态命令、Task、对话框、焦点、上下文和逐工作台流程没有完整原生对照。
- 发布:系统级 exact 为 false`EX-REL-01` 为 pending跨浏览器、长期运行和全模块 exact promotion 尚未开始。
### 2.4 可机器核对的完成度仪表盘
| 范围 | 当前值 | 已完成代表什么 | 下一个可关闭单元 |
| --- | --- | --- | --- |
| 兼容实现计划 | 83/83 completed | 已有可运行 Web 实现、门禁和能力边界 | 不再用该数字表示 exact 进度 |
| exact 计划 | 5/52 completed36 in_progress11 pending | 仅 `EX-TSN-00..03``EX-PD-02` 达到自身验收范围 | `EX-TSN-04` 的恢复漂移与有序组合 |
| 模块能力 | 0 exact / 26 compatible / 5 proxy / 3 development | 34 模块均有明确对外等级,无 unexplained | 任一模块提升前必须关闭其 exact task |
| 原生 GUI 清册 | 1111 runtime / 19 source-only / 2 context-only | 命令 ID 和三种激活上下文已分类 | 选择下一命令族并逐个关闭五态 |
| Pad GUI 工作流 | 7/7 completed | success/disabled/failure/cancel/recovery 和 blocker 已对齐 | 不因单命令族完成而关闭 `EX-ORA-01` |
| TSN 30-case corpus | 30/30 mutation219/219 几何恢复 | 几何传播与恢复已闭环 | 逐 case 解释 11 个命名漂移 |
| TSN 恢复命名 | 11/11 case28/28 stage 已分类 | 全部具备第二次原生复跑与稳定 resave | 已关闭该队列,保持分类门禁 |
| 生产五阶段链 | 5/5 几何恢复2/2 漂移 case 已分类2/5 原生 builder | 漂移已解释且不错绑 | 逐 stage 去代理并补 rotate mutation family |
| 19x19 有序组合 | 8/361 已分类回放 | 4 条五阶段转换与 4 条 `fuse->*` 已覆盖 | `TSN-PAIR-fuse-pad` |
| Property codec | 27/85 类原生 codec58 类 opaque | 4987/5510 记录可结构化处理 | 按 M04 顺序一次关闭 1 类 |
| FCStd | 23 个往返场景,未知差异 0 | 已支持范围内的当前样本稳定 | 对每种对象/Property/资源做双向 mutation |
| 活动微任务 | 487 项134 completed / 1 in_progress / 352 pending | 队列满足 `maxInProgress=1` | 只允许执行 `TSN-PAIR-fuse-pad` |
仪表盘的任何数字变化都必须由配置/报告生成器证明;文档不能单独改变状态。
实时仪表盘为 `docs/freecad-active-work-status.generated.zh-CN.md`,由 `generate:freecad-active-work-queue` 同活动队列一起生成,并由 `check:freecad-active-work-queue` 逐字校验。此处不再复制任务数、完成数、操作对覆盖数、Property 覆盖数或下一任务;任何手工状态摘要均不具备治理效力。
## 3. 目标架构和不可破坏边界
@@ -161,7 +146,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources
每项必须得到且只能得到一种结论FreeCAD 稳定语义、允许的命名演进、实现缺陷。实现缺陷必须增加回归测试;未知不能作为结论。
每个 case 再拆成六个不计入 487 项队列总数、但必须依次完成的最小检查点:
每个 case 再拆成六个必须依次完成的最小检查点;后续能力的 A-I 检查点已经全部进入生成队列
| 检查点 | 唯一产物 | fail-closed 验收 |
| --- | --- | --- |
@@ -174,7 +159,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources
任一检查点失败时,当前任务保持 `in_progress`,不得领取下一 case。如果分类为 `implementation_defect`,还必须在同一队列项内完成最小修复、回归测试、原生/Web 对照和资源释放,不另行跳过。
### 5.4 TSN 有序操作对361 项8 完成/1 进行中/352 待办
### 5.4 TSN 有序操作对
操作全集为 Fuse、Cut、Common、Rotate、Pad、Pocket、Loft、Pipe、Revolution、Groove、Fillet、Chamfer、Hole、Draft、Thickness、LinearPattern、PolarPattern、Mirrored、MultiTransform。
@@ -189,7 +174,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources
7. 在生产 Worker 回放并检查释放。
8. 拒绝时固定原生错误类型和文档未污染证据。
已覆盖的八对为 `cut->rotate``rotate->fillet``fillet->mirrored``mirrored->linear-pattern``fuse->fuse``fuse->cut``fuse->common``fuse->rotate`。当前只处理 `fuse->pad`,其余严格按机器队列逐对领取。
初始五阶段转换和 `fuse->*` 连续前缀均已进入机器分类账本;实时覆盖集合与当前操作对严格从生成状态和 `config/freecad-ordered-operation-pair-classification.json` 读取,其余逐对领取。
## 6. 后续关键路径微里程碑
@@ -227,7 +212,7 @@ FCStd / STEP / IGES / mesh / CAM / engineering resources
### M03 `EX-TSN-04B` builder 与 19×19 转换矩阵
状态:`in_progress`已覆盖 8/361 对,当前执行 `TSN-PAIR-fuse-pad`
状态:`in_progress`实时覆盖数和当前操作对见生成状态
- M03.1:用真实 builder 替换五阶段链中 Cut 之后的通用 Shape 代理,一次替换一个 stage。
- M03.2:增加 Rotate 原生 mutation family。
@@ -422,6 +407,6 @@ M00
`TSN-DRIFT-003` 已完成:`partdesign-taper``Length 6 -> 6.75 -> 6` 在 Body13 和 Pad13 两个阶段恢复相同几何,关系与语义命名摘要演进为新的稳定历史。锁定报告与第二次独立 FreeCAD 1.1.1 复跑的逐阶段摘要一致,演进值在 save/reopen/resave 中保持,因此同样分类为 `allowed_evolution`,不是 Web 实现缺陷。
`TSN-DRIFT-004..010` 与生产 `cut`/`rotate` 漂移均已完成独立复跑,并唯一分类为 `allowed_evolution`;恢复漂移队列因此以 13/13 关闭。`fuse->fuse``fuse->cut``fuse->common``fuse->rotate` 的新增分类与既有五阶段四条转换合计覆盖 8/361 对
`TSN-DRIFT-004..010` 与生产 `cut`/`rotate` 漂移均已完成独立复跑,并唯一分类为 `allowed_evolution`;恢复漂移队列因此关闭
当前唯一下一任务为 `TSN-PAIR-fuse-pad`。退出条件是记录原生接受或拒绝;接受时必须具备真实 builder、mutation/restore、history/naming FreeCAD save/reopen/resave 证据,拒绝时必须固定原生错误与无文档污染证据
`fuse->pad` 已由原生 OCCT builder 和 FreeCAD `PartDesign::Pad` 文档路径稳定拒绝,事务 abort 后对象集与源 Shape 恢复,干净 FCStd save/reopen/resave 不受污染。`fuse->pocket` 已由真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 接受,长度变异与恢复、history/naming FCStd 三阶段均通过。唯一下一任务不在此手工记录,只读取生成状态