feat: close builder mutation and roundtrip evidence gaps

This commit is contained in:
2026-08-10 21:27:42 -04:00
parent 3907f50ff1
commit 26ea9b57d7
49 changed files with 5797 additions and 687 deletions

View File

@@ -1763,3 +1763,15 @@ PartDesign transform oracle 由 4 项扩为 10 项:补入 PolarPattern `4000`
TSN 阶段门禁已接入默认执行计划。Pad 证据为 `25` 条跨 modified/generated 记录Pocket 为 `42` 条记录,含普通两阶段和 two-sided 四阶段的 source/result/topology/relation/cleanup 校验;当前原生 provider 只捕获 `cut/fuse/pad` 三类操作19 类目标操作仍缺 `16` 类逐阶段证据,且 `MappedNameRef/StringHasher` 私有 token 仍是明确阻塞项。
真实 oracle lane 已在固定桌面安装上完成 `27` 个命令,包含 ORA、Part/PartDesign/Sketcher、FCStd roundtrip 与 exact naming gatesWASM lane 已重跑 Chrome Pad/Pocket history harness。源代码网络抓取在本地因 GitHub 超时,验证使用显式 `FREECAD_SOURCE_OFFLINE=1` 的同一 pinned checkoutCI 默认路径仍执行真实 tag/submodule fetch不会把离线缓存当作成功证据。
## 228. 2026-08-10 Builder、参数恢复、FCStd 与命名证据闭合
参数 mutation 不再由结果数量代替事务证据。新增共享 FreeCAD 运行时采集器,逐项保存参数编辑前、编辑后和恢复后的属性快照、有效 Shape、BRep 摘要、体积/面积/边界以及恢复等价性12 个 Part 核心族、6 个 Part builder 和现有 PartDesign 成功 oracle 均接入该协议。生成矩阵现在为 `35/35` nominal、`35/35` invalid boundary、`35/35` parameter variant、`35/35` edit/recompute/recovery、`35/35` FCStd roundtrip`incomplete=0``blockers=[]`
FCStd 双向往返新增真实 `Part::Cut` 穿孔文档:`20 x 20 x 10` Box 由半径 `3`、高度 `12`、位置 `(10,10,-1)` 的 Cylinder 贯穿切除FreeCAD 1.1.1 重算结果为有效单 Solid、7 个面、体积 `4000-90*pi`,重新保存后 Web 检查器恢复 Base/Tool/Refine、Placement 与 Shape resource。往返门由 `22` 个场景增为 `23/23`,因此 Part::Cut 的第二个往返要求和全部 35 个族均已满足。
TSN 门不再只读取 Pad/Pocket 两份报告。它现在汇总 16 份 Chrome/WASM 原生 history 报告,逐份校验 provider、operation registry、Worker/WASM、关系计数、结果 Solid、stage input/result/topology、专用 marker 和释放后 `0/0`19 类 operation 的证据为 `19/19`,缺失为 `0`。Pocket、Revolution、Groove、Hole、MultiTransform 的 17 个显式 stage 继续逐级校验,其他专用 builder 由操作报告和 marker 绑定。`EX-TSN-01` 因此更新为 `completed`exact 计划计数为 `2 completed / 36 in_progress / 14 pending / 0 blocked`
命名 oracle 同时修正了旧的误分类。FreeCAD 运行时 219 个阶段中74 个派生/操作阶段要求私有 MappedName现为 `required=74 / complete=74`145 个基础或支持阶段由原生 API 明确返回 `IndexedName-only`,不再被错误统计为 145 个缺失私有 token。42 个 Part/PartDesign builder 阶段均具有直接 `getElementHistory/getElementMappedName/getElementIndexedName` 证据,结果为 `42/42`、missing `0`。这只闭合锁定 oracle 的证据,不代表浏览器 OCCT 能为任意新模型执行 FreeCAD 私有命名算法:浏览器仍没有 `MappedNameRef/StringHasher` callback ABI原生 token 仍限于 fixture/oracle非唯一同构来源仍必须保持 ambiguous。
真实 CI oracle lane 已调整为先重跑核心参数、全部 Part/PartDesign、复合命名和 FCStd oracle再生成参数报告并执行检查Chrome lane在所有 `test:chrome-*` 重跑后执行 19-operation TSN 聚合门,避免读取旧报告。当前 `systemExact=false``EX-TSN-02=pending``EX-TSN-04=pending``EX-REL-01=pending`、exact modules `0/34`;剩余工作不得用锁定 fixture 的 token 代替浏览器实时私有命名回调。