# FreeCAD 后续工作

## 1. 文档定位

本文是后续工作的人工入口，不维护会随任务推进变化的统计数字。执行时以下列机器产物为准：

1. `config/freecad-active-work-queue.json`
   - 全部微任务、依赖、状态、退出条件和唯一 `nextTask` 的机器真值。
2. `docs/freecad-active-work-status.generated.zh-CN.md`
   - 当前完成数、剩余数、里程碑状态和唯一活动任务的生成摘要。
3. `docs/freecad-follow-up-execution-plan.zh-CN.md`
   - 后续里程碑顺序、A-I 九阶段完成定义和单轮执行协议。
4. `config/freecad-follow-up-task-progress.json`
   - A-I 后续任务的完成证据账本；完成项必须形成连续前缀。
5. `config/freecad-ordered-operation-pair-classification.json`
   - 19x19 有序操作对的原生接受/拒绝、builder、变异、诊断和 FCStd 证据。
6. `docs/freecad-native-differential-execution-plan.zh-CN.md`
   - 通过真实 FreeCAD/Bitbybit/浏览器执行进行逐字段差分、缺陷纠正、20 步微任务和阶段里程碑的实施规范。

禁止在本文复制实时完成数或手工指定下一任务。需要查看状态时运行：

```bash
node -e "const q=require('./config/freecad-active-work-queue.json'); console.log(q.nextTask, q.summary)"
```

## 2. 当前执行原则

- 基线固定为 FreeCAD 1.1.1 和仓库已锁定的原生提交。
- 任意时刻只能有一个 `in_progress` 任务。
- 每轮只处理 `config/freecad-active-work-queue.json` 中的 `nextTask`。
- 前一里程碑未闭合时，后一里程碑保持 `pending`。
- 原生拒绝是有效分类，不得为了 Web 侧接受而伪造通用 Shape 或隐藏 fallback。
- 原生接受必须使用真实 builder，并具备参数变异、恢复、history、naming 和 FCStd 往返证据。
- 失败路径必须锁定失败阶段、精确诊断、空/无效 Shape 状态、事务回滚和文档无污染。
- 动态状态只能由 `scripts/generate-freecad-active-work-queue.mjs` 生成。

## 3. 后续里程碑顺序

1. 完成 `TSN-ORDERED-PAIRS` 的全部 19x19 操作对。
2. 为所有 opaque Property 类型补齐原生 codec 与往返证据。
3. 闭合 Document observer、事务、DAG、重算失败恢复、Extension、FeaturePython 和多文档语义。
4. 逐个闭合核心建模操作的 A-I 九阶段证据。
5. 闭合 FCStd、STEP、IGES、BREP 和其他格式的双向往返。
6. 完成 GUI、文档工作台、工程工作台、分析制造、脚本与代理边界。
7. 完成跨浏览器、跨 OS/GPU、无障碍、locale、fuzz、长稳、签名发布和 exact promotion。

详细拆分和依赖关系只在机器队列与执行计划中维护。

## 3A. 全功能对标拆分总表（静态路线图）

本节只定义长期范围、阶段边界和可重复的验收粒度，不记录实时完成数、活动任务名或下一任务名。每个阶段由机器队列展开为“一个原生 artifact、一个聚焦检查器、一个明确退出条件”的微任务；队列推进时不得跨越阶段依赖。

### 3A.1 统一工作单元

每一个功能、对象、属性、命令、格式和 UI 状态都按下列最小单元拆解：

| 编号 | 最小任务 | 必须产出 | 单项退出条件 |
| --- | --- | --- | --- |
| U1 | 原生清册 | TypeId/命令名、输入、默认值、适用性、失败前置 | 清册可机器读取，未知项显式登记 |
| U2 | 名义成功 | FreeCAD/OCCT Shape、对象集、属性、诊断、拓扑摘要 | 名义输入重复运行结果稳定 |
| U3 | 边界成功 | 最小值、最大值、空集合、单元素、多元素和单位边界 | 每个边界都有接受或拒绝证据 |
| U4 | 原生拒绝 | 失败阶段、异常/诊断、空或无效 Shape、对象集 | 不以 Web fallback 替代原生拒绝 |
| U5 | 取消与中断 | cancel、abort、超时、Worker 终止时的资源和状态 | 文档、事务、Worker、OPFS 无污染 |
| U6 | 参数变异 | 一次只改一个参数的 before/edit/restore 轨迹 | 编辑改变的字段可解释，恢复逐字段一致 |
| U7 | 历史与命名 | Generated/Modified/Deleted、ElementMap2、MappedNameRef、hash | 无私有 token、无错误绑定、歧义保持歧义 |
| U8 | 持久化 | save、reopen、resave、版本迁移和资源引用 | Shape、属性、命名、对象图无未解释漂移 |
| U9 | Facade | 生产 API、类型校验、错误映射、能力级别 | UI 不直连内核，禁止隐藏 fallback |
| U10 | 浏览器回放 | Worker、OPFS、UI、选择、进度、释放证据 | 真实 Chrome 流程与原生合同一致 |
| U11 | 回归封存 | focused check、变更摘要、哈希、证据索引 | 证据可独立复跑，队列只推进一项 |

### 3A.2 阶段与微里程碑

| 阶段 | 目标 | 细分里程碑（每项可再拆为 U1-U11） | 阶段退出门槛 |
| --- | --- | --- | --- |
| P0 基线与治理 | 固定 FreeCAD/OCCT、证据格式和能力声明 | P0.1 版本/提交锁定；P0.2 TypeId/命令/格式清册；P0.3 artifact 哈希；P0.4 依赖图；P0.5 known-gap 账本；P0.6 单活动任务门禁 | 基线、生成器、检查器和 exact 声明一致，禁止未登记能力 |
| P1 原生观察层 | 建立所有差异的可重复 oracle | P1.1 空文档状态；P1.2 单对象状态；P1.3 选择/子形状态；P1.4 属性 editor 状态；P1.5 事务状态；P1.6 失败/取消状态；P1.7 GUI 命令状态；P1.8 资源与版本信息 | 原生 probe 覆盖清册；未知状态只能进入 pending |
| P2 内核几何 | 对齐 OCCT builder 和拓扑历史 | P2.1 基本几何；P2.2 布尔；P2.3 变换/阵列；P2.4 草图与约束几何；P2.5 修复/偏置/抽壳；P2.6 曲面/网格；P2.7 有效性和容差；P2.8 资源释放 | 每个 builder 有成功、边界、失败、恢复和 history 证据 |
| P3 文档与历史 | 对齐 Document/DAG/事务/扩展语义 | P3.1 对象生命周期；P3.2 属性类型和 editor；P3.3 Link/LinkSub；P3.4 recompute 顺序；P3.5 dependency cycle；P3.6 partial failure；P3.7 observer 顺序；P3.8 undo/redo/abort；P3.9 Extension/FeaturePython；P3.10 多文档/MDI | 对象图、事务事件和失败恢复在 save/reopen 后仍可解释 |
| P4 核心建模工作台 | 对齐 Sketcher、Part、PartDesign | P4.1 草图几何；P4.2 约束求解；P4.3 草图编辑器；P4.4 Part 原语；P4.5 布尔/修复/检查；P4.6 PartDesign Body/Tip；P4.7 加料/减料；P4.8 旋转/扫掠/放样；P4.9 圆角/倒角/孔/拔模/厚度；P4.10 阵列/镜像/多变换；P4.11 跨特征 mutation；P4.12 全有序操作对 | 每项都有 A-I 证据，命名和 FCStd 证据达到 exact gate |
| P5 文件与数据交换 | 对齐原生格式、导入导出和代理边界 | P5.1 FCStd 对象/属性/资源；P5.2 BREP；P5.3 STEP；P5.4 IGES；P5.5 STL/OBJ/PLY；P5.6 DXF/SVG/PDF；P5.7 IFC；P5.8 CSV/G-code；P5.9 JT/IDF/OpenSCAD；P5.10 未知对象保留；P5.11 安全解析/大小限制 | 双向 round-trip、损坏/未知输入、编码和资源引用均有明确 exact/compatible/excluded 结果 |
| P6 GUI 与交互 | 对齐 FreeCAD 桌面状态和浏览器交互 | P6.1 Shell/菜单/工具栏；P6.2 Workbench 切换；P6.3 Tree/Dock/MDI；P6.4 Task panel；P6.5 Property editor；P6.6 对话框验证；P6.7 3D 选择/预选；P6.8 快捷键/焦点；P6.9 报告/状态/进度；P6.10 cancel/long task；P6.11 截图/可访问性树；P6.12 mobile/responsive | 每个工作台的空文档、成功、失败、取消、恢复流程可真实浏览器回放 |
| P7 工程与专业工作台 | 对齐 Draft、TechDraw、Spreadsheet、Plot、Assembly、BIM、Surface、Mesh、Material | P7.1 Draft snaps/working plane；P7.2 TechDraw 页面/视图/标注；P7.3 Spreadsheet 公式/别名/样式；P7.4 Plot 数据/坐标轴/导出；P7.5 Assembly joints/solver；P7.6 BIM/IFC/数量；P7.7 Surface trim/sew/repair；P7.8 Mesh 修复/转换；P7.9 Material 继承/外观；P7.10 跨工作台引用 | 每个专业对象具有对象图、交互、持久化、导出和失败证据 |
| P8 分析、制造与扩展 | 对齐 FEM、CAM、Robot、Inspection、Points、ReverseEngineering、脚本和 addon | P8.1 FEM 对象/网格/求解/结果；P8.2 CAM Path/任务/后处理；P8.3 仿真和机床 profile；P8.4 Robot 运动学/碰撞/导出；P8.5 点云/重建；P8.6 测量/偏差/报告；P8.7 Python API/macro 沙箱；P8.8 addon 签名/权限/回滚；P8.9 代理模块显式排除 | 生产授权与浏览器能力分离；不支持项可审计、可解释、不会伪装支持 |
| P9 平台质量 | 完成跨环境和长稳验证 | P9.1 Chrome/Firefox/Safari；P9.2 Windows/Linux/macOS；P9.3 GPU/软件渲染；P9.4 desktop/tablet/mobile；P9.5 locale/单位/时区；P9.6 屏幕阅读器/键盘；P9.7 性能/内存/Worker；P9.8 fuzz/stress/长会话；P9.9 崩溃恢复/迁移；P9.10 供应链/安全 | 所有支持矩阵无未知差异，预算、漏洞、泄漏、错误绑定均为零 |
| P10 发布与 exact promotion | 形成可签名、可复核的发布物 | P10.1 证据索引；P10.2 生成物重建；P10.3 SBOM/依赖审计；P10.4 签名/验签；P10.5 release closure；P10.6 回滚演练；P10.7 exact capability matrix；P10.8 版本公告 | 所有 exact 任务闭合，必要零指标满足，签名产物和回滚包可复现 |

### 3A.3 每个阶段内的执行顺序

阶段内固定按以下细粒度顺序执行，任何一步失败都只登记当前微任务，不跳到下一步：

1. 清册：确认 TypeId、命令入口、默认参数、输入数量、依赖和适用性。
2. 名义态：用真实 FreeCAD/OCCT builder 生成结果，记录 Shape、拓扑、属性、诊断和对象集。
3. 边界态：逐个执行最小值、最大值、空、重复、越界和单位转换；原生拒绝也要记录。
4. 失败态：记录失败阶段、异常类型、精确文本、状态标志、空/无效 Shape 和对象污染。
5. 变异态：只修改一个参数，执行 before/edit/restore；检查几何、历史、命名和文档版本。
6. 事务态：覆盖 commit、abort、undo、redo、stale、cycle、cancel、timeout 和 Worker 终止。
7. 持久化态：执行 save/reopen/resave，校验对象图、属性、资源、Shape、命名和 hash。
8. Facade 态：通过生产 Facade 重放同一输入，确认错误映射、能力级别和权限边界。
9. 浏览器态：真实 Worker/OPFS/Chrome 回放，检查 UI、选择、进度、释放和离线行为。
10. 封存态：运行 focused check、相关模块 gate、`git diff --check`，生成队列和状态页，确认只推进一个任务。

### 3A.4 里程碑完成判定

- `完成`：U1-U11 全部有机器证据，检查器通过，依赖项已完成，队列生成器将该项标记为 completed。
- `兼容`：核心工作流可用，但至少一个 exact 证据类缺失；必须保留缺口、范围和下一步，不得提升 exact 声明。
- `代理`：仅保留数据/显示/导入等有限语义；必须标明不支持的原生行为和安全边界。
- `拒绝`：原生明确拒绝或 no-op；记录拒绝权威、诊断、回滚和持久化，不视为实现缺陷。
- `阻断`：证据缺失、结果不稳定、存在漂移或安全问题；任务保持 in_progress/pending，禁止用文档结论强行关闭。

### 3A.5 依赖与并行规则

- P0/P1 是所有阶段的前置；没有基线和 oracle，不接受实现“已完成”。
- P2 的几何/历史证据先于 P3 文档语义；P3 先于 P4-P8 的生产工作台。
- P5 格式往返依赖 P3 对象图和 P4/P7/P8 的真实对象；未知对象只能进入显式保留或排除路径。
- P6 浏览器 UI 依赖 Facade 合同，但 UI 回归不能反向修改原生合同。
- P9 只在 P4-P8 的工作流有稳定基线后扩大矩阵；发现漂移时回退到对应功能微任务。
- P10 是最终门禁，不能以“主要功能可用”替代任一 exact 依赖。
- 机器队列维持 `maxInProgress=1`；需要并行调查时也必须先落成独立 artifact，不能并行修改同一证据账本。

### 3A.6 每项任务的最小记录模板

```text
范围：一个 TypeId/命令/格式/交互状态或一个有序操作对
输入：原生版本、提交、参数、单位、对象图、资源哈希
原生证据：名义、边界、失败、取消、变异、历史、命名
浏览器证据：Facade、Worker、OPFS、UI、选择、进度、释放
持久化证据：save/reopen/resave、迁移、未知属性/资源
判定：accepted / rejected / no-op / compatible / proxy / blocked
退出条件：可执行检查命令、预期摘要、零指标和回滚要求
变更边界：只允许修改该任务的实现、oracle、检查器和报告
```

## 3B. 当前阶段的持续推进规则

当前项目仍处于 TSN 命名/历史与有序操作对闭合阶段，之后才按依赖进入 Property、Document、格式、GUI、专业工作台和平台质量阶段。每次完成一个微任务后必须：

1. 从 `config/freecad-active-work-queue.json` 读取新的 `nextTask`，不得从本文、聊天记录或手工列表猜测。
2. 为刚完成任务追加原生、浏览器、持久化和回滚证据；缺一项就保持当前任务未完成。
3. 重新生成队列和状态页，检查只有一个 `in_progress`，并核对连续前缀没有跳号。
4. 按任务风险运行 focused gate；达到发布点才运行完整 `./npmw run verify`。
5. 提交前检查 `git diff --check`、JSON/脚本语法、未跟踪文件和生成物哈希；提交后推送云仓库并记录提交。
6. 若原生拒绝、no-op 或代理边界是正确结果，完整保留该分类，不为了增加完成数而改变判定。

## 4. 单轮执行流程

1. 读取唯一 `nextTask`，确认依赖、输入 artifact 和退出条件。
2. 只修改该任务所需的 oracle、实现、检查器和锁定报告。
3. 先运行真实 FreeCAD/OCCT/Chrome probe，再运行只读 focused check。
4. 验证 Shape、Worker、OPFS、事务和文档对象集回到预期状态。
5. 运行相关 Facade、FCStd、TSN 和 execution-plan 门禁。
6. 所有退出条件通过后，重新生成 active-work queue 与状态页。
7. 确认队列恰好推进一个任务，没有跳号或第二个活动任务。
8. 运行 `git diff --check`、JSON/脚本校验和与风险相称的回归。
9. 发布点运行完整 `./npmw run verify`，再提交并推送。

常用命令：

```bash
./npmw run probe:freecad-ordered-operation-pairs
./npmw run check:freecad-ordered-operation-pairs
./npmw run generate:freecad-active-work-queue
./npmw run check:execution-plan
git diff --check
```

## 5. A-I 完成定义

| 阶段 | 交付物 | 最低退出条件 |
| --- | --- | --- |
| 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 全过，focused gate 与 exact blocker 同步 |

缺少任一阶段时，能力最多保持 `compatible` 或既有的显式 `proxy` 等级。

## 6. 最近完成证据

### `TSN-PAIR-cut-thickness`

`cut->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，以贯穿半体工具生成体积 `500` 的有效单 Solid 和 98 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` builder，对锁定的原生 Face 执行厚壳。
- 原凹腔 Cut 的非平凡厚壳轨迹存在原生 history 内容漂移，未被误记为恢复；任务改用仍由真实 Cut 产生的稳定单 Solid。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积，并精确恢复名义摘要、原始 history 哈希和语义 naming。
- 名义结果为有效 1 Solid，体积 `129.056`，包含 38 条原生 history 记录。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-draft`

`cut->draft` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` builder，对锁定的原生 Face、中性面和拉伸方向执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变体积与面积，并精确恢复名义摘要和语义 naming。
- 名义结果为有效 1 Solid，体积 `892.2556682`，包含 5 条原生 history 记录。
- 下游获得唯一 `native-evidence` naming，且上游 Cut 证据在恢复态保持一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-hole`

`cut->hole` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，对 Cut 结果执行中心贯穿孔。
- `1 -> 1.5 -> 1` 半径轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `904.5840735`，包含 34 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-chamfer`

`cut->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` builder，对 Cut 结果执行全边倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积，并精确恢复名义摘要和语义 naming。
- 名义结果为有效 1 Solid，体积 `926.8266667`，包含 298 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-fillet`

`cut->fillet` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` builder，对 Cut 结果执行全边圆角。
- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积，并精确恢复名义摘要和语义 naming。
- 名义结果为有效 1 Solid，体积 `931.9696595`，包含 298 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-groove`

`cut->groove` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Cut 结果执行旋转减料。
- `360 -> 180 -> 360` 角度轨迹改变拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `931.287611`，包含 18 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-revolution`

`cut->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Cut Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Cut Solid 作为 Source，返回 `Solids are not Processed`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Cut 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-cut-pipe`

`cut->pipe` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中只生成无效 Shape，该结果仅记为 kernel-invalid-result 诊断。
- FreeCAD `Part::Sweep` 对 Cut Solid section 返回 `A fatal error occurred when making the sweep`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Cut 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 无效结果、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-cut-loft`

`cut->loft` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Loft` 对 Cut Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Cut 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-cut-pocket`

`cut->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Cut 结果执行减料拉伸。
- `5 -> 4 -> 5` 深度轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `906`，包含 70 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-pad`

`cut->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Cut Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Cut Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Cut 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-cut-common`

`cut->common` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，对 Cut 结果执行布尔交集。
- `4 -> 5 -> 4` 工具 X 偏移轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `93`，包含 148 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-cut-cut`

`cut->cut` 已完成原生接受分类：

- 第一、第二阶段均使用真实 `BRepAlgoAPI_Cut` 双输入 builder。
- 上游 Cut 结果为有效 1 Solid，体积 `936`，包含 22 条原生 history 记录。
- `3 -> 4 -> 3` 工具尺寸轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义下游结果为有效 1 Solid，体积 `909`，包含 42 条原生 history 记录。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 锁定两阶段 builder、变异和恢复，偏移后摘要不变的弱轨迹未被采用。

### `TSN-PAIR-cut-fuse`

`cut->fuse` 已完成原生接受分类，并验证分类器可跨起始操作保持连续前缀：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，对 Cut 结果执行布尔并集。
- `8 -> 9 -> 8` 工具 X 偏移轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `1011`，包含 52 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 同时锁定第一、第二 builder，防止跨行后仍误报 Fuse 起点。

### `TSN-PAIR-fuse-multi-transform`

`fuse->multi-transform` 已完成原生接受分类，并闭合 Fuse 起始行的全部 19 个有序操作对：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，组合平移和镜像两步生成 4 个可追踪实例。
- `8 -> 9 -> 8` 首步 X 平移轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `2750`，包含 769 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。
- 机器队列已从 Fuse 行末严格推进到下一行首项，没有跳号或第二个活动任务。

### `TSN-PAIR-fuse-mirrored`

`fuse->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成内部平面镜像副本。
- `5 -> 6 -> 5` 镜像平面 X 原点轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `1150`，包含 224 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-polar-pattern`

`fuse->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成绕 Z 轴的旋转副本阵列。
- `30 -> 45 -> 30` 角度轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `1510.7700496`，包含 178 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-linear-pattern`

`fuse->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成重叠平移副本阵列。
- `8 -> 9 -> 8` X 平移轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `1875`，包含 141 条原生 history 记录。
- 完全分离时的 0-history 结果未被误记为接受；focused gate 强制原生 source history 非空。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-thickness`

`fuse->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 同形双输入 builder，生成有效 6 面单 Solid 和 156 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` builder，对锁定的原生 Face 执行厚壳。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `187.456`，包含 38 条原生 history 记录。
- 原始部分重叠 Fuse 的 no-op 结果未被误记为接受；focused gate 强制变异必须改变 Shape 摘要。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-draft`

`fuse->draft` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` builder，对锁定的原生 Face、中性面和拉伸方向执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `1031.2556682`，包含 5 条原生 history 记录。
- 下游获得唯一 `native-evidence` naming，且上游 Fuse 证据在恢复态保持一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-hole`

`fuse->hole` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 执行中心贯穿孔。
- `1 -> 1.5 -> 1` 半径轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `1043.5840735`，包含 23 条原生 history 记录。
- 下游获得唯一 `native-evidence` naming，且上游 Fuse 证据在恢复态保持一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-chamfer`

`fuse->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` builder 对 Fuse 结果执行全边倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `1489.1413333`，包含 270 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-fillet`

`fuse->fillet` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并生成有效单 Solid。
- 下游使用真实 `BRepFilletAPI_MakeFillet` builder 对 Fuse 结果执行全边圆角。
- `0.4 -> 0.6 -> 0.4` 半径轨迹改变几何，并精确恢复名义摘要、history 和语义 naming。
- 名义结果为有效 1 Solid，体积 `1495.2786299`，包含 270 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-groove`

`fuse->groove` 已完成原生接受分类：

- 生产路径使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder。
- `360 -> 180 -> 360` 角度轨迹改变几何与 history，并精确恢复名义摘要和语义 naming。
- 名义结果为有效 1 Solid，体积 `1070.287611`，包含 18 条原生 history 记录。
- 上游 Fuse naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-fuse-revolution`

`TSN-PAIR-fuse-revolution` 已完成原生分类：

- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 参数轨迹中稳定拒绝 Fuse Solid 输入。
- FreeCAD `Part::Revolution` 返回 `Solids are not Processed`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`。
- transaction abort 后对象集与源 Shape 完整恢复。
- 干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 builder、异常传输、诊断和回滚证据。

### `TSN-PAIR-cut-linear-pattern`

`cut->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成重叠平移副本阵列。
- `8 -> 9 -> 8` X 平移轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `1672`，包含 89 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据，机器队列严格推进一项。

### `TSN-PAIR-cut-polar-pattern`

`cut->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成绕 Z 轴的旋转副本阵列。
- `30 -> 45 -> 30` 角度轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `1361.9420727`，包含 160 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据，机器队列严格推进一项。

### `TSN-PAIR-cut-mirrored`

`cut->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 生成内部平面镜像副本。
- `5 -> 6 -> 5` 镜像平面 X 原点轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `968`，包含 230 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据，机器队列严格推进一项。

### `TSN-PAIR-cut-multi-transform`

`cut->multi-transform` 已完成原生接受分类，并闭合 Cut 起始行的全部 19 个有序操作对：

- 上游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，生成有效单 Solid 和 22 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，组合平移和镜像两步生成 4 个可追踪实例。
- `8 -> 9 -> 8` 首步 X 平移轨迹改变几何、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `2440`，包含 670 条原生 history 记录。
- 上游 Cut naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据，机器队列已从 Cut 行末严格推进到 Common 行首项。

### `TSN-PAIR-common-fuse`

`common->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，以体积交叠生成有效 1 Solid，体积 `125`，并包含 94 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，重叠合并 Common 结果与工具体。
- `8 -> 7 -> 8` 工具 X 偏移轨迹改变体积与边界，并精确恢复名义摘要、history 与语义 naming。
- 名义下游结果为有效 1 Solid，体积 `225`，包含 66 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 Common 上游构造、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-cut`

`common->cut` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Common 结果执行布尔减料。
- `4 -> 3 -> 4` 工具尺寸轨迹改变体积与 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `93`，包含 64 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-common`

`common->common` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游再次使用真实 `BRepAlgoAPI_Common` 双输入 builder，两个锁定工具位置都与上游 Solid 存在体积交叠。
- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积从 `32` 变为 `48`，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 121 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-rotate`

`common->rotate` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，对 Common 结果执行绕 Z 轴旋转。
- `15 -> 22.5 -> 15` 角度轨迹在保持体积 `125` 的同时改变包围盒，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，包含 78 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-pad`

`common->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Common Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Common Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Common 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-common-pocket`

`common->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，在原点处生成体积 `125` 的有效单 Solid 和 105 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Common 结果执行减料拉伸。
- `5 -> 4 -> 5` 深度轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `95`，包含 64 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定上游实体交叠、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-loft`

`common->loft` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Loft` 对 Common Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Common 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-common-pipe`

`common->pipe` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中只生成无效 Shape，该结果仅记为 kernel-invalid-result 诊断。
- FreeCAD `Part::Sweep` 对 Common Solid section 返回 `A fatal error occurred when making the sweep`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Common 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 无效结果、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-common-revolution`

`common->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Common Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Common Solid 作为 Source，返回 `Solids are not Processed`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Common 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-common-groove`

`common->groove` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，在原点处生成体积 `125` 的有效单 Solid 和 105 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Common 结果执行旋转减料。
- `360 -> 180 -> 360` 角度轨迹改变拓扑与 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `120.287611`，包含 28 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定上游实体交叠、两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-fillet`

`common->fillet` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 Common 结果执行全边圆角。
- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `123.0255334`，包含 150 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-chamfer`

`common->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Common 结果执行全边倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `120.5413333`，包含 150 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-hole`

`common->hole` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，对 Common 结果执行边界角贯穿孔。
- `1 -> 1.5 -> 1` 半径轨迹改变体积与面积，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `117.1460184`，包含 30 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-draft`

`common->draft` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对 Common 结果的锁定原生 Face 执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变体积与面积，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `119.5319585`，包含 5 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-thickness`

`common->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对 Common 结果的锁定原生 Face 执行厚壳。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `43.856`，包含 38 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-linear-pattern`

`common->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Common 结果平移复制并融合为一个可追踪 Solid。
- 原 `8` 单位平移会产生两个分离 Solid 且无可用 history，未被误记为接受；改用保持实体交叠的 `4 -> 3 -> 4` 轨迹。
- 专用平移轨迹使体积在 `225 -> 200 -> 225` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 66 条原生 history 记录。
- 上游 Common naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定专用变异轨迹、两阶段 builder、输入数、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-polar-pattern`

`common->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Common 结果绕锁定原生轴旋转复制并融合。
- `30 -> 45 -> 30` 角度轨迹改变体积、拓扑与边界，体积在 `220.0961894 -> 247.5 -> 220.0961894` 间变化，并精确恢复原生摘要与语义 naming。
- 名义结果为有效 1 Solid，包含 48 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-mirrored`

`common->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Common 结果绕锁定平面镜像复制并融合。
- `5 -> 6 -> 5` 镜像面 X 原点轨迹改变体积与边界，体积在 `200 -> 150 -> 200` 间变化，并精确恢复原生摘要与语义 naming。
- 名义结果为有效 1 Solid，包含 66 条原生 history 记录。
- 上游 Common naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-common-multi-transform`

`common->multi-transform` 已完成原生接受分类，并闭合 Common 起始行的全部 19 个有序操作对：

- 上游使用真实 `BRepAlgoAPI_Common` 双输入 builder，生成体积 `125` 的有效单 Solid 和 94 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，组合平移和镜像两步并保留每个实例的原生追踪关系。
- 默认 `8` 单位首步平移会形成 3 个分离 Solid，未被误用；改用保持全部实例连通的 `4 -> 3 -> 4` 专用轨迹。
- 首步 X 平移轨迹使体积在 `400 -> 350 -> 400` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，名义与恢复态均包含 367 条原生 history 记录。
- 上游 Common naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 ordered builder、专用变异轨迹、输入数、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-fuse`

`rotate->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，对 Rotate 结果执行布尔并集。
- 默认工具 X 偏移 `12` 会产生两个分离 Solid 且 history 为空，未被误记为接受；改用保持实体交叠的 `8 -> 7 -> 8` 专用轨迹。
- 工具偏移轨迹使体积在 `1107.0432067 -> 1092.0913015 -> 1107.0432067` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 39 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、专用变异轨迹、输入数、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-cut`

`rotate->cut` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Rotate 结果执行布尔减料。
- `4 -> 3 -> 4` 工具尺寸轨迹改变体积与面积，体积在 `953.1487483 -> 981.4403996 -> 953.1487483` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 53 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、输入数、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-common`

`rotate->common` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，对 Rotate 结果执行布尔交集。
- 默认工具 X 偏移 `10` 与旋转实体无交叠并被原生 builder 拒绝，未被误记为接受；改用 `7 -> 6 -> 7` 专用轨迹。
- 工具偏移轨迹使交集体积在 `32.9086985 -> 49.2003498 -> 32.9086985` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 136 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、专用变异轨迹、输入数、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-rotate`

`rotate->rotate` 已完成原生接受分类：

- 上下游均使用真实 `BRepBuilderAPI_Transform` 单输入 builder，两阶段均生成有效单 Solid 和 78 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹保持体积 `1000` 和拓扑不变，但明确改变世界空间边界，未因体积不变而误判为无变异。
- 恢复态精确返回名义摘要、原生 history 与语义 naming。
- 上游 Rotate naming 证据向下游传播，下游获得完整原生证据。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、边界变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-pad`

`rotate->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Rotate Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Rotate Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Rotate 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定跨行首阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-rotate-pocket`

`rotate->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Rotate 结果执行减料拉伸。
- `5 -> 4 -> 5` 深度轨迹改变体积与面积，体积在 `972.6794919 -> 978.1435935 -> 972.6794919` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 56 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、两输入减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-loft`

`rotate->loft` 已完成原生拒绝分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape 和 24 条 history，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Loft` 对 Rotate Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Rotate 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-rotate-pipe`

`rotate->pipe` 已完成原生拒绝分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中生成体积 `1500 -> 1200 -> 1500` 的有效单 Solid 和 28 条 history，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Sweep` 对 Rotate Solid section 返回 `A fatal error occurred when making the sweep`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Rotate 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-rotate-revolution`

`rotate->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Rotate Solid 输入，三次均在 builder 阶段传输原生 C++ 异常，且不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Rotate Solid 作为 Source，返回该操作对专有诊断 `BRep_API: command not done`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Rotate 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定跨行首阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-rotate-groove`

`rotate->groove` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Rotate 结果执行旋转槽减料。
- `360 -> 180 -> 360` 角度轨迹改变体积与拓扑：名义态体积为 `992.0171547`、10 Face，编辑态体积为 `1000`、8 Face，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 22 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、双输入减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-chamfer`

`rotate->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Rotate 结果的锁定原生边执行倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积、面积与边界，体积在 `990.7413333 -> 979.552 -> 990.7413333` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 150 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、原生边选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-hole`

`rotate->hole` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 单输入 builder，以锁定位置和方向的圆柱刀具贯穿 Rotate 结果。
- `1 -> 1.5 -> 1` 半径轨迹改变体积与面积，体积在 `968.5840735 -> 929.3141653 -> 968.5840735` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 23 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、圆柱减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-draft`

`rotate->draft` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对 Rotate 结果的锁定原生 Face 执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变体积与面积，体积在 `956.2556682 -> 929.7295826 -> 956.2556682` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 5 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、原生 Face 选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-thickness`

`rotate->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对 Rotate 结果的锁定原生 Face 执行厚壳。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积，体积在 `187.456 -> 272.064 -> 187.456` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 38 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、原生 Face 选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-linear-pattern`

`rotate->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Rotate 结果沿 X 方向平移复制并融合为一个可追踪 Solid。
- `8 -> 9 -> 8` 平移轨迹保持实例交叠，体积在 `1819.7958971 -> 1899.7703843 -> 1819.7958971` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 48 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-polar-pattern`

`rotate->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Rotate 结果绕锁定 Z 轴旋转复制并融合。
- `30 -> 45 -> 30` 角度轨迹改变体积、面积与边界，体积在 `1422.6497308 -> 1585.7864376 -> 1422.6497308` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 78 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、旋转实例融合、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-mirrored`

`rotate->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Rotate 结果绕锁定平面镜像复制并融合。
- `5 -> 6 -> 5` 镜像面 X 原点轨迹改变体积、面积与边界，体积在 `1329.767789 -> 1517.3794222 -> 1329.767789` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 80 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定跨行首阶段 builder、镜像实例融合、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-rotate-multi-transform`

`rotate->multi-transform` 已完成原生接受分类，并闭合机器队列中 Rotate 起始行的剩余有序操作对：

- 上游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，生成体积 `1000` 的有效单 Solid 和 78 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，组合 X 平移和 X=5 镜像两步并保留每个实例的原生追踪关系。
- `8 -> 9 -> 8` 首步 X 平移轨迹保持全部实例连通，体积在 `2392.1349751 -> 2589.9081788 -> 2392.1349751` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，名义与编辑态均包含 470 条原生 history 记录。
- 上游 Rotate naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 ordered builder、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-fuse`

`pad->fuse` 已完成原生接受分类，并建立 Pad 起始行的真实 Profile 基线：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history，未复用 Solid-as-profile 拒绝输入。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，对 Pad 结果执行布尔并集。
- 默认工具 X 偏移 `12` 会产生分离实体，未被误记为接受；改用保持实体交叠的 `8 -> 7 -> 8` 专用轨迹。
- 工具偏移轨迹使体积在 `575 -> 550 -> 575` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 57 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、两阶段 builder、专用变异轨迹、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-cut`

`pad->cut` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Pad 结果执行布尔减料。
- `4 -> 3 -> 4` 工具尺寸轨迹改变体积与面积，体积在 `436 -> 473 -> 436` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 22 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、双输入减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-common`

`pad->common` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，对 Pad 结果执行布尔交集。
- 默认工具 X 偏移 `10` 仅与 Pad 边界相切且没有实体交集，未被误记为接受；改用 `7 -> 6 -> 7` 专用轨迹。
- 工具偏移轨迹使交集体积在 `75 -> 100 -> 75` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 117 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、专用交叠轨迹、双输入 builder、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-rotate`

`pad->rotate` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，对 Pad 结果执行刚性旋转。
- `15 -> 22.5 -> 15` 角度轨迹保持体积 `500` 和拓扑不变，但明确改变世界空间边界，未因体积不变而误判为无变异。
- 名义与恢复态均包含 78 条原生 history，并精确恢复摘要和语义 naming。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、两阶段 builder、边界变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-pad`

`pad->pad` 已完成原生拒绝分类，并补齐 Pad STEP 聚合结构的拒绝重放规则：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝第一个 Pad 的 Solid 输入，三次均在 builder 阶段传输原生 C++ 异常，且不产生结果 Shape 或 history。
- FreeCAD STEP 导入保留 `App::Part` 聚合容器，并唯一选择有效单 Solid 的 `Part::Feature` 叶节点作为 Profile；零个或多个实体叶节点仍 fail-closed。
- FreeCAD `PartDesign::Pad` 返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，结果 Shape 为空且状态包含 `Invalid`。
- transaction abort 后 10 个导入结构/基准对象、源实体 BREP 与对象集完整恢复；无穷参考线面只比较对象语义，实体 Shape 仍逐字段比较。
- 干净 FCStd save/reopen/resave 三阶段一致，拒绝任务没有伪造下游 naming 或变异证据。
- focused ordered-pair gate 已锁定真实 Profile 上游、异常传输、STEP 叶节点选择、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pad-pocket`

`pad->pocket` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Pad 结果执行减料拉伸。
- `5 -> 4 -> 5` 深度轨迹改变体积、面积与拓扑，体积在 `470 -> 476 -> 470` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 64 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实上游/下游 Profile、双输入减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-loft`

`pad->loft` 已完成原生拒绝分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中均生成体积 `655` 的有效单 Solid 和 24 条 history，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Loft` 对 Pad Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后 STEP 聚合结构、对象集与 Pad 源实体 BREP 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、STEP 叶节点选择、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pad-pipe`

`pad->pipe` 已完成原生拒绝分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中生成体积 `1500 -> 1200 -> 1500` 的有效单 Solid 和 28 条 history，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Sweep` 对 Pad Solid section 返回 `A fatal error occurred when making the sweep`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后 STEP 聚合结构、对象集与 Pad 源实体 BREP 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、STEP 叶节点选择、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pad-revolution`

`pad->revolution` 已完成原生拒绝分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Pad Solid 输入，三次均在 builder 阶段传输原生 C++ 异常，且不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Pad Solid 作为 Source，返回 `Solids are not Processed`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后 STEP 聚合结构、对象集与 Pad 源实体 BREP 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定异常传输、STEP 叶节点选择、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pad-groove`

`pad->groove` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实旋转轮廓和 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Pad 结果执行旋转槽减料。
- `360 -> 180 -> 360` 角度轨迹改变体积与拓扑：名义态体积为 `495.287611`、10 Face，编辑态体积为 `500`、7 Face，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 18 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、双输入旋转减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-fillet`

`pad->fillet` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 Pad 结果的锁定原生边执行倒圆。
- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积，体积在 `496.6520816 -> 492.5636085 -> 496.6520816` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 150 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、原生边选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-chamfer`

`pad->chamfer` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Pad 结果的锁定原生边执行倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积，体积在 `492.3413333 -> 483.152 -> 492.3413333` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 150 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、原生边选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-hole`

`pad->hole` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 单输入 builder，以锁定位置和方向的圆柱刀具贯穿 Pad 结果。
- `1 -> 1.5 -> 1` 半径轨迹改变体积与面积，体积在 `484.2920367 -> 464.6570826 -> 484.2920367` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 23 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、圆柱减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-draft`

`pad->draft` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对 Pad 结果的锁定原生 Face 执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变体积与面积，体积在 `489.0639171 -> 482.4323957 -> 489.0639171` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 5 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、原生 Face 选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-thickness`

`pad->thickness` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对 Pad 结果的锁定原生 Face 执行厚壳。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹改变体积与面积，体积在 `129.056 -> 185.664 -> 129.056` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 38 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、原生 Face 选择、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-linear-pattern`

`pad->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Pad 结果沿 X 方向平移复制并融合为一个可追踪 Solid。
- `8 -> 9 -> 8` 平移轨迹保持实例交叠，体积在 `900 -> 950 -> 900` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 66 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-polar-pattern`

`pad->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Pad 结果绕锁定 Z 轴旋转复制并融合。
- `30 -> 45 -> 30` 角度轨迹改变体积、面积与边界，体积在 `711.3248654 -> 792.8932188 -> 711.3248654` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 78 条原生 history 记录。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、旋转实例融合、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-mirrored`

`pad->mirrored` 已完成原生接受分类：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Pad 结果绕锁定平面镜像复制并融合。
- 名义 X=5 镜像与对称 Pad 本体完全重合，但仍保留 156 条原生 history；`5 -> 6 -> 5` 轨迹在编辑态产生体积 `600`、14 Face 的单 Solid。
- 恢复态精确返回体积 `500`、6 Face 的名义摘要、history 与语义 naming。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、完全重合名义态、镜像实例融合、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pad-multi-transform`

`pad->multi-transform` 已完成原生接受分类，并闭合 Pad 起始行的全部 19 个有序操作对：

- 上游使用真实 `10x10` Face Profile 和 `BRepPrimAPI_MakePrism` 单输入 builder，拉伸出体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，先执行 X 平移，再镜像平移结果并保留每个实例的原生追踪关系。
- `8 -> 9 -> 8` 首步 X 平移轨迹保持全部实例连通，体积在 `1300 -> 1400 -> 1300` 间变化，名义边界覆盖 X=`[-8, 18]`。
- 名义与编辑态均包含 355 条原生 history，恢复态精确返回名义摘要、history 与语义 naming。
- 上游 Pad naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、ordered builder、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-fuse`

`pocket->fuse` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，对 Pocket 结果执行布尔并集。
- 默认工具 X 偏移 `12` 会产生分离实体，未被误记为接受；改用保持实体交叠的 `8 -> 7 -> 8` 专用轨迹。
- 工具偏移轨迹使体积在 `1045 -> 1020 -> 1045` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 52 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、两阶段双输入 builder、专用变异轨迹、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-cut`

`pocket->cut` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Pocket 结果继续执行布尔减料。
- `4 -> 3 -> 4` 工具尺寸轨迹改变体积、面积与拓扑，体积在 `906 -> 943 -> 906` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 48 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、两阶段双输入减料、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-common`

`pocket->common` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，对 Pocket 结果执行布尔交集。
- 默认工具 X 偏移 `10` 仅与 Pocket 外边界相切且没有实体交集，未被误记为接受；改用 `7 -> 6 -> 7` 专用轨迹。
- 工具偏移轨迹使交集体积在 `75 -> 100 -> 75` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 178 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、专用交叠轨迹、两阶段双输入 builder、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-rotate`

`pocket->rotate` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，将 Pocket 结果绕锁定 Z 轴旋转。
- `15 -> 22.5 -> 15` 角度轨迹改变边界，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，体积 `970`，包含 135 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、两阶段 builder、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-pad`

`pocket->pad` 已完成原生拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Pocket Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Pocket Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Pocket 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pocket-pocket`

`pocket->pocket` 已完成原生接受分类：

- 第一、第二阶段均使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，上游 Pocket 生成体积 `970` 的有效单 Solid。
- 下游使用锁定的 `3x3` Face Profile，避免默认 `2x3` Profile 只重复切除已空区域而产生无效变异轨迹。
- `5 -> 4 -> 5` 深度轨迹使体积在 `955 -> 958 -> 955` 间变化，同时改变拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，包含 111 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段双输入 builder、非平凡 Profile、深度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-loft`

`pocket->loft` 已完成原生拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Loft` 对 Pocket Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Pocket 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pocket-pipe`

`pocket->pipe` 已完成原生拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 初始的 kernel-invalid 预期被真实 probe 否定；OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中生成有效 Shape，但该结果仅记为 kernel-superset 诊断。
- FreeCAD `Part::Sweep` 对 Pocket Solid section 返回 `A fatal error occurred when making the sweep`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Pocket 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pocket-revolution`

`pocket->revolution` 已完成原生拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Pocket Solid 输入，且不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Pocket Solid 作为 Source，返回 `Solids are not Processed`。
- FreeCAD 结果 Shape 为空、状态包含 `Invalid`，拒绝任务没有伪造下游 naming 或变异证据。
- transaction abort 后对象集与 Pocket 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pocket-groove`

`pocket->groove` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Pocket 结果执行旋转减料。
- `360 -> 180 -> 360` 角度轨迹改变体积、拓扑和 history，并精确恢复名义摘要与语义 naming。
- 名义结果为有效 1 Solid，体积 `966.8584073`，包含 40 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，恢复态语义摘要与名义态一致。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段双输入 builder、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-fillet`

`pocket->fillet` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 Pocket 结果的锁定原生边执行倒圆。
- `0.4 -> 0.6 -> 0.4` 半径轨迹改变体积与面积，体积在 `965.9792974 -> 961.0655284 -> 965.9792974` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 44 Face 和 261 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生边选择、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-chamfer`

`pocket->chamfer` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Pocket 结果的锁定原生边执行倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹改变体积与面积，体积在 `960.848 -> 949.912 -> 960.848` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 44 Face 和 261 条原生 history 记录。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生边选择、距离变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-hole`

`pocket->hole` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 单输入 builder，以锁定位置和方向的圆柱刀具贯穿 Pocket 结果。
- `1 -> 1.5 -> 1` 半径轨迹改变体积与面积，体积在 `938.5840735 -> 899.3141653 -> 938.5840735` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 23 条原生 history 记录，下游 naming 状态为无歧义 `native-evidence`。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、圆柱减料、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-draft`

`pocket->draft` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对 Pocket 结果的锁定原生 Face、中性面和拉伸方向执行拔模。
- `5 -> 8 -> 5` 角度轨迹改变体积与面积，体积在 `929.5364931 -> 904.999864 -> 929.5364931` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 7 条原生 history 记录，下游 naming 状态为无歧义 `native-evidence`。
- 上游 Pocket naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生 Face 选择、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-thickness`

`pocket->thickness` 已完成原生接受分类：

- 上游使用真实 `10x10` Box 与 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，按专用 `5x10` Profile 贯穿切除，生成体积 `500` 的有效单 Solid 和 25 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对锁定的原生 Face 执行厚壳；名义结果为有效 1 Solid、11 Face，体积 `129.056`。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `129.056 -> 185.664 -> 129.056` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Pocket naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生 Face 选择、offset 变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-linear-pattern`

`pocket->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，将 Pocket 结果沿 X 方向平移复制并融合为单 Solid；名义体积 `1770`，边界覆盖 X=`[-0, 18]`。
- `8 -> 9 -> 8` 平移轨迹使体积在 `1770 -> 1855 -> 1770` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Pocket naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、单 Solid 约束、平移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pocket-polar-pattern`

`pocket->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，生成体积 `970` 的有效单 Solid 和 42 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，将 Pocket 结果绕锁定 Z 轴旋转复制并融合为单 Solid；名义体积 `1388.0087147`，边界覆盖 X=`[-5, 10]`、Y=`[0, 13.6602542]`。
- `30 -> 45 -> 30` 角度轨迹使体积在 `1388.0087147 -> 1545.7864376 -> 1388.0087147` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Pocket naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定真实 Profile、旋转实例融合、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-fillet`

`loft->fillet` 已完成 Web 原生 history builder 拒绝分类，并显式记录 FreeCAD profile 接受差异：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游 `BRepFilletAPI_MakeFillet` 在 `0.4 -> 0.6 -> 0.4` 半径轨迹中稳定触发 `RuntimeError: table index is out of bounds`，三次尝试均没有产生 Shape、history 或 naming。
- FreeCAD 1.1.1 `Part::Fillet` 对同一 Loft Solid 重算成功，状态为 `Valid` / `Up-to-date`；该差异被锁定为 Web 原生 history builder 中止，没有伪造 FreeCAD 拒绝。
- transaction abort 后对象集与 Loft 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 WASM abort 签名、FreeCAD 接受对照、精确回滚和持久化证据。

### `TSN-PAIR-loft-chamfer`

`loft->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Loft 结果的原生边执行倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `1489.1413333 -> 1475.952 -> 1489.1413333` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、26 Face，包含 150 条原生 history 记录。
- 上游 Loft naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生边选择、距离变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-hole`

`loft->hole` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，以锁定位置和方向的圆柱刀具贯穿 Loft 结果。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `1462.3008882 -> 1415.1769984 -> 1462.3008882` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 13 条原生 history 记录，下游 naming 状态为无歧义 `native-evidence`。
- 上游 Loft naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、圆柱减料、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-draft`

`loft->draft` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对 Loft 结果的锁定原生 Face、中性面和拉伸方向执行拔模。
- `5 -> 8 -> 5` 角度轨迹使体积在 `1401.5752535 -> 1341.891561 -> 1401.5752535` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid，包含 5 条原生 history 记录。
- 上游 Loft naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生 Face 选择、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-thickness`

`loft->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对锁定的原生 Face 执行厚壳；名义结果为有效 1 Solid、11 Face，体积 `245.856`。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `245.856 -> 358.464 -> 245.856` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果包含 38 条原生 history 记录，上游 Loft naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、原生 Face 选择、offset 变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-linear-pattern`

`loft->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，将 Loft 结果沿 X 方向平移复制并融合为单 Solid。
- `8 -> 9 -> 8` 平移轨迹使体积在 `2700 -> 2850 -> 2700` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、14 Face，边界覆盖 X=`[0, 18]`，包含 66 条原生 history 记录。
- 上游 Loft naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、单 Solid 约束、平移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-polar-pattern`

`loft->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，将 Loft 结果绕锁定 Z 轴旋转复制并融合为单 Solid。
- `30 -> 45 -> 30` 角度轨迹使体积在 `2133.9745962 -> 2378.6796564 -> 2133.9745962` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、12 Face，边界覆盖 X=`[-5, 10]`、Y=`[0, 13.660254]`，包含 78 条原生 history 记录。
- 上游 Loft naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 builder、旋转实例融合、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-loft-mirrored`

`loft->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，将 Loft 结果绕锁定平面镜像复制并融合。
- 名义 X=5 镜像与 Loft 本体完全重合但仍保留 156 条原生 history；`5 -> 6 -> 5` 轨迹使体积在 `1500 -> 1800 -> 1500` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face，FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定。
- 上游 Loft naming 证据向下游传播；focused ordered-pair gate 已锁定重合名义对照、镜像实例融合、变异、恢复、history 和持久化证据。

### `TSN-PAIR-loft-multi-transform`

`loft->multi-transform` 已完成原生接受分类，并闭合 Loft 起始行全部 19 个有序操作对：

- 上游使用真实 `BRepOffsetAPI_ThruSections` 双输入 builder，生成体积 `1500` 的有效单 Solid 和 24 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，先执行 X 平移，再镜像平移结果并保留每个实例的原生追踪关系。
- `8 -> 9 -> 8` 首步 X 平移轨迹使体积在 `3900 -> 4200 -> 3900` 间变化，名义边界覆盖 X=`[-8, 18]`，并精确恢复名义摘要、history 与语义 naming。
- 名义与编辑态均包含 355 条原生 history，结果为有效 1 Solid、22 Face。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定 ordered builder、实例追踪、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-fuse`

`pipe->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以真实 `2x3` Face section 沿 15 长度 spine 扫掠，生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，使用与 Pipe 保持交叠的工具。
- `0 -> 0.5 -> 0` 工具 X 偏移轨迹使体积在 `185 -> 192.5 -> 185` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、14 Face，包含 66 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定真实 Face section、双输入 builder、交叠变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-cut`

`pipe->cut` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，以贯穿交叠的工具继续减料。
- `0 -> 0.5 -> 0` 工具 X 偏移轨迹使体积在 `66 -> 72 -> 66` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face、包含 117 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定 Face section、双输入减料 builder、偏移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-common`

`pipe->common` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，使用与 Pipe 保持交叠的工具。
- `0 -> 0.5 -> 0` 工具 X 偏移轨迹使交集体积在 `24 -> 18 -> 24` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face、包含 132 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定 Face section、交叠变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-rotate`

`pipe->rotate` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，将 Pipe 结果绕 Z 轴旋转。
- `15 -> 22.5 -> 15` 角度轨迹保持体积 `90`，改变边界并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face、包含 78 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定旋转变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-pad`

`pipe->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Pipe Solid 输入，不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Pipe Solid 作 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`；结果 Shape 为空、状态包含 `Invalid`。
- transaction abort 后对象集与 Pipe 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pipe-pocket`

`pipe->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，以贯穿 Profile 对 Pipe 结果执行减料。
- `5 -> 4 -> 5` 深度轨迹使体积在 `60 -> 66 -> 60` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face、包含 98 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定真实 Profile、双输入 builder、深度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-loft`

`pipe->loft` 已完成 FreeCAD 文档前置拒绝分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中均生成有效 Shape，仅记为 `kernel-superset-only` 兼容性诊断，三次结果精确恢复。
- FreeCAD `Part::Loft` 对 Pipe Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`，结果 Shape 为空、状态包含 `Invalid`。
- transaction abort 后对象集与 Pipe 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 超集诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pipe-pipe`

`pipe->pipe` 已完成 FreeCAD 文档前置拒绝分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- OCCT 下游 `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中均产生无效 Shape（`kernel-invalid-result`），三次诊断精确恢复。
- FreeCAD `Part::Sweep` 对 Pipe Solid section 返回 `A fatal error occurred when making the sweep`，结果 Shape 为空、状态包含 `Invalid`。
- transaction abort 后对象集与 Pipe 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定 FreeCAD 决策权、OCCT 无效结果诊断、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-pipe-revolution`

`pipe->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 角度轨迹中稳定拒绝 Pipe Solid 输入，不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Pipe Solid 作 Source，返回 `Solids are not Processed`；结果 Shape 为空、状态包含 `Invalid`。
- transaction abort 后对象集与 Pipe 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-pipe-groove`

`pipe->groove` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Pipe 结果执行旋转减料。
- `360 -> 180 -> 360` 角度轨迹使体积在 `88.4292037 -> 90 -> 88.4292037` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、10 Face、包含 40 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定双输入 builder、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-fillet`

`pipe->fillet` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 Pipe 结果的全部原生边执行圆角。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `87.3388075 -> 84.1087417 -> 87.3388075` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、26 Face，包含 150 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定原生边选择、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-chamfer`

`pipe->chamfer` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Pipe 结果的全部原生边执行倒角。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `83.9413333 -> 76.752 -> 83.9413333` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、26 Face，包含 150 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定原生边选择、距离变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-hole`

`pipe->hole` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，在截面中心 `(1, 1.5)` 以贯穿圆柱对 Pipe 结果减料。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `82.4601776 -> 73.0353997 -> 82.4601776` 间变化，保持有效单 Solid，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为 7 Face，包含 23 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定贯穿位置、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-draft`

`pipe->draft` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 原生 Face 枚举确认端面索引 `0/5` 被 Draft builder 拒绝，侧面索引 `1/2/3/4` 可接受；下游锁定 `faceIndex: 1`、Z 向中性面和拉伸方向执行真实 `BRepOffsetAPI_DraftAngle`。
- `5 -> 8 -> 5` 角度轨迹使体积在 `70.3150507 -> 58.3783122 -> 70.3150507` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、6 Face，包含 5 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定侧面适用性、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-thickness`

`pipe->thickness` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对锁定的 Pipe 侧面执行厚壳。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `45.696 -> 63.504 -> 45.696` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、11 Face，包含 38 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定侧面选择、offset 变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-linear-pattern`

`pipe->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder；针对窄 Pipe 截面锁定交叠平移，避免沿用 Box 的 X=8 参数产生分离结果。
- `1.5 -> 1 -> 1.5` X 平移轨迹使体积在 `157.5 -> 135 -> 157.5` 间变化，名义和编辑态均保持有效单 Solid，并精确恢复摘要、history 与语义 naming。
- 名义结果为 14 Face，边界覆盖 X=`[0, 3.5]`，包含 66 条原生 history 记录，上游 Pipe naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定交叠融合、平移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-polar-pattern`

`pipe->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder，绕锁定 Z 轴复制并融合 Pipe 结果。
- `30 -> 45 -> 30` 角度轨迹使体积在 `132.3686028 -> 150 -> 132.3686028` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、12 Face，边界覆盖 X=`[-1.5, 2]`、Y=`[0, 3.5980764]`，包含 78 条原生 history 记录。
- 上游 Pipe naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定，focused ordered-pair gate 已锁定旋转融合、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-mirrored`

`pipe->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入 builder；名义镜像平面锁定为 `x=1`，与 Pipe 截面对称重合，编辑平面为 `x=1.5` 并保持实例交叠。
- `1 -> 1.5 -> 1` 平面轨迹使体积在 `90 -> 135 -> 90` 间变化，恢复态保留名义 1 Solid 和 156 条原生 history，并精确恢复语义 naming。
- 编辑态为有效单 Solid、14 Face；上游 Pipe naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming 稳定。
- focused ordered-pair gate 已锁定重合名义对照、交叠镜像、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-pipe-multi-transform`

`pipe->multi-transform` 已完成原生接受分类，并闭合 Pipe 起始行全部 19 个有序操作对：

- 上游使用真实 `BRepOffsetAPI_MakePipe` 双输入 builder，以 `2x3` Face section 生成体积 `90` 的有效单 Solid 和 28 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，先沿 X 平移，再绕 `x=5` 平面镜像；该实例布局原生形成有效 2 Solid 结果，没有伪装为单 Solid。
- `8 -> 7 -> 8` 首步 X 平移轨迹使体积在 `180 -> 270 -> 180` 间变化，并精确恢复名义摘要、300 条 history 与语义 naming。
- STEP 导入会同时创建 `Part::Feature`、聚合 `App::Part` 和 Origin 基准对象；FCStd harness 已改为只组合有限、有效、含 Solid 的 `Part::Feature`，消除了重复几何和 `1e100` 退化边界。
- FreeCAD FCStd save/reopen/resave 三阶段均保持 2 Solid、12 Face、体积 `180` 与 naming evidence 一致；focused gate 已锁定多实体拓扑、导入筛选、变异、恢复和持久化证据。

### `TSN-PAIR-revolution-fuse`

`revolution->fuse` 已完成原生接受分类，并验证新的 Revolution 上游基线：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，绕锁定 Y 轴生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，工具与 Revolution 结果保持体积交叠。
- `0 -> 0.5 -> 0` 工具 X 偏移轨迹使体积在 `188.0229122 -> 192.1067282 -> 188.0229122` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义下游结果为有效 1 Solid、11 Face，包含 45 条原生 history 记录，上游 Revolution naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused ordered-pair gate 已锁定 Face Profile、旋转轴、融合变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-cut`

`revolution->cut` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder；`4 -> 3 -> 4` 工具尺寸轨迹覆盖同一正象限、摘要不变，未被采用。
- 最终使用小型交叠工具的 `0 -> 0.5 -> 0` X 偏移轨迹，使体积在 `68.3585388 -> 70.3585388 -> 68.3585388` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、8 Face，包含 75 条原生 history 记录，上游 Revolution naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused gate 已锁定弱轨迹拒绝、偏移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-common`

`revolution->common` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，以贯穿正象限的工具和 Revolution 结果求交。
- `0 -> 0.5 -> 0` 工具 X 偏移轨迹使交集体积在 `12.3753114 -> 8.2914955 -> 12.3753114` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、5 Face，包含 100 条原生 history 记录，上游 Revolution naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused gate 已锁定交叠工具、偏移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-rotate`

`revolution->rotate` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，绕锁定 Z 轴旋转 Revolution 结果。
- `15 -> 22.5 -> 15` 角度轨迹保持体积 `75.3982237`，改变边界并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、4 Face，包含 40 条原生 history 记录，上游 Revolution naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定；focused gate 已锁定旋转变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-pad`

`revolution->pad` 已完成原生拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid和 23 条原生 history。
- 下游 `BRepPrimAPI_MakePrism` 在 `5 -> 7.5 -> 5` 长度轨迹中稳定拒绝 Revolution Solid 输入，三次均不产生 Shape、history 或 naming。
- FreeCAD `PartDesign::Pad` 使用同一 Revolution Solid 作 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，结果 Shape 为空、状态包含 `Touched/Invalid`。
- transaction abort 后对象集与 Revolution 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致且文档无污染。
- focused ordered-pair gate 已锁定两阶段 builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-revolution-pocket`

`revolution->pocket` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid 和 23 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，以同一截面 Profile 沿 Z 方向执行部分减料。
- `2 -> 1 -> 2` 深度轨迹使体积在 `64.8386964 -> 69.5677847 -> 64.8386964` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、7 Face，包含 104 条原生 history 记录，上游 Revolution naming 证据向下游传播。
- FreeCAD FCStd save/reopen/resave 三阶段的 Shape 与 naming evidence 稳定；focused gate 已锁定部分深度、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-loft`

`revolution->loft` 已完成 FreeCAD 文档前置拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid 和 23 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中均产生 `isValid:false`、负体积的 `kernel-invalid-result`，三次诊断精确恢复。
- FreeCAD `Part::Loft` 对 Revolution Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`，结果 Shape 为空、状态包含 `Touched/Invalid`。
- transaction abort 后对象集与 Revolution 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused gate 已锁定 FreeCAD 决策权、OCCT 无效结果、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-revolution-pipe`

`revolution->pipe` 已完成原生 builder 拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid 和 23 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中均于 builder 阶段抛出稳定 Emscripten C++ 异常，不产生 Shape、history 或 naming。
- FreeCAD `Part::Sweep` 对同一 Revolution Solid section 返回 `A fatal error occurred when making the sweep`，结果 Shape 为空、状态包含 `Touched/Invalid`。
- transaction abort 后对象集与 Revolution 源 Shape 完整恢复，干净 FCStd save/reopen/resave 三阶段一致。
- focused gate 已锁定异常阶段、输入数、精确失败信息、回滚和持久化证据。

### `TSN-PAIR-revolution-revolution`

`revolution->revolution` 已完成原生 builder 拒绝分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游再次使用 `BRepPrimAPI_MakeRevol`，对 Revolution Solid 在 `360 -> 270 -> 360` 角度轨迹中稳定于 builder 阶段抛出 Emscripten C++ 异常；三次均不产生 Shape、history 或 naming。
- FreeCAD `Part::Revolution` 使用同一 Revolution Solid 作为 Source，返回 `Solids are not Processed`，结果 Shape 为空、状态包含 `Touched/Invalid`。
- transaction abort 后对象集与 Revolution 源 Shape 完整恢复，源 Shape 体积、拓扑和 BREP 哈希保持一致；干净 FCStd save/reopen/resave 三阶段一致且文档无污染。
- focused ordered-pair gate 已锁定两阶段 Revolution builder、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-revolution-groove`

`revolution->groove` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 Revolution 结果执行旋转减料；名义结果为有效 1 Solid、10 Face、体积 `71.0943912`，包含 43 条原生 history。
- `360 -> 180 -> 360` 角度轨迹使体积在 `71.0943912 -> 73.2463075 -> 71.0943912` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/Groove builder、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-fillet`

`revolution->fillet` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 Revolution 结果的原生边执行全边圆角；名义结果为有效 1 Solid、8 Face、体积 `73.6722933`，包含 48 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `73.6722933 -> 71.5148803 -> 73.6722933` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/Fillet builder、原生边选择、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-chamfer`

`revolution->chamfer` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 Revolution 结果的原生边执行全边倒角；名义结果为有效 1 Solid、8 Face、体积 `71.3769851`，包含 48 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `71.3769851 -> 66.3504368 -> 71.3769851` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/Chamfer builder、原生边选择、距离变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-hole`

`revolution->hole` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，在锁定位置 `[0, 1.5, 0]`、方向 `+Z` 和深度 `0.1` 的局部圆柱刀具上执行减料；名义结果为有效 1 Solid、8 Face、体积 `75.3729574`，包含 19 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `75.3729574 -> 75.3414747 -> 75.3729574` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/Hole builder、局部圆柱刀具、半径变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-draft`

`revolution->draft` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对锁定原生 Face、中性面和 +Z 拉伸方向执行拔模；名义结果为有效 1 Solid、4 Face、体积 `75.3982238`，包含 3 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使 Y 方向边界在 `-0.3154312 -> -0.5067054 -> -0.3154312` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，下游获得无歧义 `native-evidence` naming；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/DraftAngle builder、原生 Face 选择、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-thickness`

`revolution->thickness` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder，对锁定原生 Face 执行厚壳；名义结果为有效 1 Solid、8 Face、体积 `26.7412367`，包含 39 条原生 history。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `26.7412367 -> 38.9808816 -> 26.7412367` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/Thickness builder、原生 Face 选择、offset 变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-linear-pattern`

`revolution->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Revolution 结果沿 X 方向复制并融合；专用 `4 -> 3 -> 4` 平移轨迹确保所有状态保持单 Solid。
- 平移轨迹使体积在 `132.2115549 -> 126.3867082 -> 132.2115549` 间变化，并精确恢复名义摘要、history 与语义 naming；名义结果为 12 Face，包含 53 条原生 history。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Revolution/LinearPattern builder、单 Solid 约束、平移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-polar-pattern`

`revolution->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 默认 `30°` 轨迹触发原生 WASM 越界中止，未被误记为接受；改用保持实例相交且稳定的 `10 -> 15 -> 10` 专用角度轨迹。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将旋转实例融合为单 Solid；角度轨迹使体积在 `87.2727929 -> 92.4535717 -> 87.2727929` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 名义结果为有效 1 Solid、14 Face，包含 70 条原生 history；上游 Revolution naming 证据向下游传播，FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定专用角度轨迹、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-mirrored`

`revolution->mirrored` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，将 Revolution 结果关于 X=`0` 镜像并融合为单 Solid；专用 `0 -> 0.5 -> 0` 平面轨迹避免默认分离实例。
- 平面轨迹使体积在 `120.1447575 -> 126.3867082 -> 120.1447575` 间变化，并精确恢复名义摘要、history 与语义 naming；名义结果为 14 Face，包含 92 条原生 history。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定专用镜像平面、单 Solid 约束、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-revolution-multi-transform`

`revolution->multi-transform` 已完成原生接受分类：

- 上游使用真实 `2x3` Face Profile 和 `BRepPrimAPI_MakeRevol` 单输入 builder，生成体积 `75.3982237` 的有效单 Solid、4 Face 和 23 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，锁定镜像平面 `X=0`，按平移和镜像顺序生成并融合四个实例；名义结果为有效 1 Solid、48 Face、体积 `190.7882692`，包含 313 条原生 history。
- `4 -> 3 -> 4` 平移轨迹使体积在 `190.7882692 -> 155.9773894 -> 190.7882692` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Revolution naming 证据向下游传播，恢复态语义摘要与名义态一致；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定 ordered builder、镜像平面、单 Solid 约束、平移变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-fuse`

`groove->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成体积 `995.287611` 的有效单 Solid、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder；专用 `8 -> 7 -> 8` 工具 X 偏移轨迹保持实体交叠并融合为单 Solid。
- 轨迹使体积在 `1070.287611 -> 1045.287611 -> 1070.287611` 间变化，并精确恢复名义摘要、history 与语义 naming；名义结果为 17 Face，包含 52 条原生 history。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Fuse builder、专用交叠轨迹、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-cut`

`groove->cut` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成体积 `995.287611` 的有效单 Solid、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Groove 结果继续执行减料；名义结果为有效 1 Solid、14 Face、体积 `931.287611`，包含 22 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `931.287611 -> 968.287611 -> 931.287611` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Cut builder、工具变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-common`

`groove->common` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，与 Groove 结果及交叠工具执行布尔交集；名义结果为有效 1 Solid、6 Face、体积 `75`，包含 197 条原生 history。
- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积在 `75 -> 100 -> 75` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Common builder、交叠轨迹、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-rotate`

`groove->rotate` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder，对 Groove 结果绕 Z 轴旋转；名义结果保持有效 1 Solid、10 Face、体积 `995.287611`，包含 154 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹改变包围盒（名义 `[-2.5881906, -1e-7, -1e-7, 9.6592584, 12.2474488, 10.0000001]`，编辑态 `[-3.8268344, -1e-7, -1e-7, 9.2387954, 13.0656297, 10.0000001]`），并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Transform builder、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-pad`

`groove->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 对 Groove Solid 在 `5 -> 7.5 -> 5` 长度轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Groove Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，结果 Shape 为空且状态含 `Invalid`；未伪造下游命名或变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、诊断、回滚和持久化证据。

### `TSN-PAIR-groove-pocket`

`groove->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Groove 结果执行减料拉伸；名义结果为有效 1 Solid、13 Face、体积 `966.8584073`，包含 91 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `966.8584073 -> 972.8584073 -> 966.8584073` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Pocket builder、深度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-loft`

`groove->loft` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 Shape 和 24 条 history，但该结果仅作为 `kernel-superset-only` 诊断，不提升 FreeCAD 能力。
- FreeCAD `Part::Loft` 对 Groove Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`，结果 Shape 为空且状态含 `Invalid`；未伪造下游命名或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定 FreeCAD 决策权、kernel 诊断、回滚和持久化证据。

### `TSN-PAIR-groove-pipe`

`groove->pipe` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中均产生无效结果，仅记为 `kernel-invalid-result`，不伪造接受 Shape/history。
- FreeCAD `Part::Sweep` 对 Groove Solid section 返回 `A fatal error occurred when making the sweep`，结果 Shape 为空且状态含 `Invalid`。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定 FreeCAD 决策权、kernel 无效诊断、回滚和持久化证据。

### `TSN-PAIR-groove-revolution`

`groove->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 对 Groove Solid 在 `360 -> 270 -> 360` 角度轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Groove Solid 作为 Source，返回 `Solids are not Processed`，结果 Shape 为空且状态含 `Invalid`；未伪造下游命名或变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、诊断、回滚和持久化证据。

### `TSN-PAIR-groove-groove`

`groove->groove` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游再次使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，并将第二阶段 profile 真实放置在 `profileX=2` 以切削不同半径区域；名义结果为有效 1 Solid、14 Face、体积 `983.5066386`，包含 18 条原生 history。
- `360 -> 180 -> 360` 角度轨迹改变拓扑（编辑态 11 Face、28 Edge）并精确恢复名义摘要、history 与语义 naming；未采用同 profile 的 no-op 轨迹。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。
- focused ordered-pair gate 已锁定两阶段 Groove/Groove builder、专用 profile、角度变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-groove-fillet`

`groove->fillet` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，对 10x10 Box 执行旋转减料，生成有效 1 Solid、体积 `995.287611`、10 Face、24 Edge 和 18 条原生 history。
- 下游按 native contract 使用 `BRepFilletAPI_MakeFillet` 对全部 24 条源边执行圆角；`0.4 -> 0.6 -> 0.4` 半径轨迹三次均稳定在 OCCT builder 阶段以 Emscripten C++ 异常拒绝，没有产生 Shape、history 或下游 naming。
- FreeCAD 1.1.1 `Part::Fillet` 对同一 Groove Solid 和全部源边返回 `BRep_API: command not done`；结果 Shape 为空、状态包含 `Invalid`，与 OCCT 拒绝结论一致。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、异常传输、精确诊断、回滚和持久化证据。

### `TSN-PAIR-groove-chamfer`

`groove->chamfer` 已完成原生拒绝分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face、24 Edge 和 18 条原生 history。
- 下游按 native contract 使用 `BRepFilletAPI_MakeChamfer` 对全部 24 条源边执行对称倒角；`0.4 -> 0.6 -> 0.4` 距离轨迹稳定触发原生 WASM `memory access out of bounds`，三次均不产生 Shape、history 或下游 naming。
- FreeCAD 1.1.1 `Part::Chamfer` 对同一 Groove Solid 和全部源边返回 `BRep_API: command not done`；结果 Shape 为空且状态包含 `Invalid`。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定 WASM 崩溃签名、FreeCAD 精确诊断、回滚和持久化证据。

### `TSN-PAIR-groove-hole`

`groove->hole` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder，在 Groove 结果中心执行贯穿孔；名义结果为有效 1 Solid、11 Face、体积 `963.8716845`，包含 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `963.8716845 -> 924.6017763 -> 963.8716845` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 下游获得无歧义 `native-evidence` naming，上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定两阶段 builder、变异、恢复和持久化证据。

### `TSN-PAIR-groove-draft`

`groove->draft` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepOffsetAPI_DraftAngle` 单输入 builder，对锁定的原生 Face、中性面和 +Z 方向执行拔模；名义结果为有效 1 Solid、10 Face、体积 `951.8050786`，包含 9 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使体积在 `951.8050786 -> 925.4360727 -> 951.8050786` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 下游 9 条选定 history 均形成无歧义 `native-evidence` naming；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定 Face 选择、方向、变异、恢复和持久化证据。

### `TSN-PAIR-groove-thickness`

`groove->thickness` 已完成原生拒绝分类，并显式保留 Web 原生与 FreeCAD profile 的能力差异：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- Web 原生下游使用 `BRepOffsetAPI_MakeThickSolid` 对锁定的第二个 Face 执行厚壳；`-0.4 -> -0.6 -> -0.4` offset 轨迹稳定触发 WASM `memory access out of bounds`，三次均不产生 Shape、history 或下游 naming。
- FreeCAD 1.1.1 `Part::Thickness` 对同一 Groove Solid、`Face2` 和 `Value=-0.4` 生成有效 Shape，状态为 `Valid`；该 FreeCAD 接受证据没有被用于伪造 Web 原生接受能力。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定崩溃签名、FreeCAD 接受诊断、回滚和持久化证据。

### `TSN-PAIR-groove-linear-pattern`

`groove->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，沿 X 方向复制并融合 Groove 结果；名义结果为有效 1 Solid、19 Face、体积 `1795.287611`，包含 119 条原生 history。
- `8 -> 9 -> 8` 平移轨迹始终保持单 Solid，使体积在 `1795.287611 -> 1894.1260552 -> 1795.287611` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定交叠融合、变异、恢复和持久化证据。

### `TSN-PAIR-groove-polar-pattern`

`groove->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 默认 `30°` 及小角度 `10°/15°` 交叠融合轨迹均触发原生 WASM 越界，未被误记为接受；最终采用稳定且仍具真实拓扑变异的 `90 -> 120 -> 90` 专用轨迹。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder；`90°` 名义态为有效 1 Solid、19 Face、体积 `1990.575222` 和 98 条 history，`120°` 编辑态真实变为 2 Solid，恢复后摘要、history 与语义 naming 精确复原。
- FreeCAD FCStd save/reopen/resave 三阶段保持名义单 Solid Shape 与 naming evidence 一致；focused gate 已锁定专用角度轨迹、真实多实体编辑态、恢复和持久化证据。

### `TSN-PAIR-groove-mirrored`

`groove->mirrored` 已完成原生接受分类：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder；关于 `x=5` 的名义镜像让两侧缺口互补融合，得到有效 1 Solid、10 Face、体积 `1000` 和 216 条原生 history。
- `5 -> 6 -> 5` 镜像平面轨迹使体积在 `1000 -> 1190.575222 -> 1000` 间变化，编辑态增至 22 Face，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定镜像平面、互补融合、变异、恢复和持久化证据。

### `TSN-PAIR-groove-multi-transform`

`groove->multi-transform` 已完成原生接受分类，并闭合 Groove 起始行的全部 19 个有序操作对：

- 上游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder，生成有效 1 Solid、体积 `995.287611`、10 Face 和 18 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，依次执行 X 平移和关于 `x=5` 的镜像并融合；名义结果为有效 1 Solid、24 Face、体积 `2600`，包含 525 条原生 history。
- `8 -> 9 -> 8` 首步 X 平移轨迹使体积在 `2600 -> 2797.6768884 -> 2600` 间变化，编辑态增至 40 Face，并精确恢复名义摘要、history 与语义 naming。
- 上游 Groove naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定 ordered builder、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-fuse`

`fillet->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，并以相交工具形成有效 1 Solid；名义结果为 33 Face、体积 `1071.3666774`，包含 79 条原生 history。
- `8 -> 7 -> 8` 工具 X 偏移轨迹使体积在 `1071.3666774 -> 1046.4010137 -> 1071.3666774` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定相交融合、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-cut`

`fillet->cut` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder，对 Fillet 结果执行减料；名义结果为有效 1 Solid、31 Face、体积 `932.1027009`，包含 42 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `932.1027009 -> 969.0683646 -> 932.1027009` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定减料变异、恢复和持久化证据。

### `TSN-PAIR-fillet-common`

`fillet->common` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，以相交工具求 Fillet 结果的布尔交集；名义结果为有效 1 Solid、10 Face、体积 `74.5643421`，包含 360 条原生 history。
- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积在 `74.5643421 -> 99.5300058 -> 74.5643421` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定有体积交集、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-rotate`

`fillet->rotate` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder 绕 Z 轴旋转 Fillet 结果；名义结果保持有效 1 Solid、26 Face 和体积 `995.9653557`，包含 338 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹改变包围盒（名义 `[-2.4982926, 0.0898978, -1e-7, 9.5693604, 12.1575509, 10.0000001]`，编辑态 `[-3.7042092, 0.1226251, -1e-7, 9.1161702, 12.9430046, 10.0000001]`），并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定刚体变换、恢复和持久化证据。

### `TSN-PAIR-fillet-pad`

`fillet->pad` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- OCCT `BRepPrimAPI_MakePrism` 对 Fillet Solid 在 `5 -> 7.5 -> 5` 长度轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Pad` 使用同一 Fillet Solid 作为 Profile，返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，结果 Shape 为空且状态含 `Invalid`；未伪造下游 naming 或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-pocket`

`fillet->pocket` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，对 Fillet 结果执行减料拉伸；名义结果为有效 1 Solid、28 Face、体积 `966.2980048`，包含 100 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `966.2980048 -> 972.2636685 -> 966.2980048` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定减料拉伸、恢复和持久化证据。

### `TSN-PAIR-fillet-loft`

`fillet->loft` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` ruled 轨迹中生成有效 1 Solid 和 24 条 history，但该结果仅作为 `kernel-superset-only` 诊断，不提升 FreeCAD 能力。
- FreeCAD `Part::Loft` 对 Fillet Solid section 返回 `Profile shape is not a single vertex, edge, wire nor face.`，结果 Shape 为空且状态含 `Invalid`；未伪造下游 naming 或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定 FreeCAD 决策权、kernel 诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-pipe`

`fillet->pipe` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` spine 长度轨迹中均产生无效零体积 Shape 和 28 条 history，仅记为 `kernel-invalid-result`，不伪造接受 Shape。
- FreeCAD `Part::Sweep` 对 Fillet Solid section 返回 `A fatal error occurred when making the sweep`，结果 Shape 为空且状态含 `Invalid`。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定 FreeCAD 决策权、kernel 无效诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-revolution`

`fillet->revolution` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 对 Fillet Solid 在 `360 -> 270 -> 360` 角度轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `Part::Revolution` 使用同一 Fillet Solid 作为 Source，返回 `Solids are not Processed`，结果 Shape 为空且状态含 `Invalid`；未伪造下游 naming 或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、精确诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-groove`

`fillet->groove` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder 对 Fillet 结果执行旋转减料；名义结果为有效 1 Solid、30 Face、体积 `991.2529668`，包含 18 条原生 history。
- `360 -> 180 -> 360` 角度轨迹使拓扑从 30 Face 变为 27 Face 后恢复，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定旋转减料、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-fillet`

`fillet->fillet` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 第二个 OCCT `BRepFilletAPI_MakeFillet` 对已圆角 Solid 在 `0.4 -> 0.6 -> 0.4` 半径轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `Part::Fillet` 使用同一 Fillet Solid 作为 Base，返回 `There are no suitable edges for chamfer or fillet`，结果 Shape 为空且状态含 `Invalid`；未伪造下游 naming 或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、精确诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-chamfer`

`fillet->chamfer` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- OCCT `BRepFilletAPI_MakeChamfer` 对 Fillet Solid 在 `0.4 -> 0.6 -> 0.4` 距离轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `Part::Chamfer` 使用同一 Fillet Solid 作为 Base，返回 `There are no suitable edges for chamfer or fillet`，结果 Shape 为空且状态含 `Invalid`；未伪造下游 naming 或接受变异证据。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定拒绝阶段、精确诊断、回滚和持久化证据。

### `TSN-PAIR-fillet-hole`

`fillet->hole` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 对 Fillet 结果执行中心贯穿孔；名义结果为有效 1 Solid、27 Face、体积 `964.5494292`，包含 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `964.5494292 -> 925.279521 -> 964.5494292` 间变化，并精确恢复名义摘要、history 与语义 naming。
- 下游获得无歧义 `native-evidence` naming，上游 Fillet 证据已传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定。

### `TSN-PAIR-fillet-draft`

`fillet->draft` 已完成原生拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 只读原生适用性扫描枚举 Fillet 结果的全部 26 个 Face，在锁定的 +Z 拉伸方向与 XY 中性面下均无有效 Draft Shape；没有用选面 fallback 伪造接受。
- OCCT `BRepOffsetAPI_DraftAngle` 在 `5 -> 8 -> 5` 角度轨迹中稳定于 builder 阶段拒绝，三次均不产生结果 Shape 或 history。
- FreeCAD `PartDesign::Draft` 通过事务内 Body、DatumPlane、DatumLine 和 `PartDesign::Feature` Base 评估同一 Fillet 几何；Base 的有效性、拓扑数、体积、面积和边界摘要精确一致，同时显式记录 FreeCAD 元素映射导致的 BREP 重序列化哈希差异。
- FreeCAD 结果合同为空状态字符串、空 Shape 和 `Touched/Invalid`；transaction abort 后 Body 及所有临时对象消失，顶层源 Shape 的 BREP 哈希精确恢复，干净 FCStd save/reopen/resave 三阶段一致。

### `TSN-PAIR-fillet-thickness`

`fillet->thickness` 已完成原生 no-op 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 只读原生扫描确认：全部 26 个 Face 在 `-0.4/-0.6` offset 下均返回与输入同摘要的 Shape；6 个主面的 `0.4/0.6` 正向 offset 只产生无效 Shape 或 builder 拒绝，没有可用的真实变异轨迹。
- OCCT `BRepOffsetAPI_MakeThickSolid` 在 `-0.4 -> -0.6 -> -0.4` 轨迹中每次均返回有效 Shape 和 1 条 history，但有效性、Solid/Face/Edge/Vertex、体积、面积、边界与 history 哈希全部不变，因此被显式分类为 `kernel-no-op`，不冒充接受。
- FreeCAD `Part::Thickness` 对同一 Fillet Solid 和 `Face2` 返回 `Valid/Up-to-date` 且 Shape 非空，但结果 Shape 摘要与输入逐字段相同，因此同样记为 `freecadProfileNoOp`。
- transaction abort 后对象集、源 Shape 和 BREP 哈希精确恢复；干净 FCStd save/reopen/resave 三阶段一致，focused gate 已锁定双 no-op、回滚和持久化证据。

### `TSN-PAIR-fillet-linear-pattern`

`fillet->linear-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 沿 X 方向复制并融合 Fillet 结果；名义结果为有效 1 Solid、42 Face、体积 `1794.8665943`，包含 266 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使体积在 `1794.8665943 -> 1894.7292492 -> 1794.8665943` 间变化，X 上界从 18 变为 19 后恢复，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定交叠融合、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-polar-pattern`

`fillet->polar-pattern` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 绕 Z 轴旋转复制并融合 Fillet 结果；30 度名义结果为有效 1 Solid、46 Face、体积 `1417.6209625`，包含 234 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使体积在 `1417.6209625 -> 1580.485276 -> 1417.6209625` 间变化，面积和边界也同步变化，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定旋转融合、变异、恢复和持久化证据。

### `TSN-PAIR-fillet-multi-transform`

`fillet->multi-transform` 已完成原生接受分类，并闭合 Fillet 起始行中尚需分类的全部有序操作对：

- 上游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder，对 10x10x10 Box 的全部边执行圆角，生成有效 1 Solid、26 Face、体积 `995.9653557` 和 150 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，依次执行 X 平移、关于 `x=5` 的镜像并融合；名义结果为有效 1 Solid、58 Face、体积 `2593.7678329`，包含 1103 条原生 history。
- `8 -> 9 -> 8` 首步 X 平移轨迹使体积在 `2593.7678329 -> 2793.4931426 -> 2593.7678329` 间变化，边界从 `[-8, 18]` 扩展为 `[-9, 19]` 后恢复，并精确恢复名义摘要、history 与语义 naming。
- 上游 Fillet naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定 ordered builder、变异、恢复和持久化证据。

### `TSN-PAIR-chamfer-fuse`

`chamfer->fuse` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 10x10x10 Box 的全部边执行倒角，生成有效 1 Solid、26 Face、体积 `990.7413333` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，以相交工具融合 Chamfer 结果；名义结果为有效 1 Solid、33 Face、体积 `1066.6586667`，包含 78 条原生 history。
- `8 -> 7 -> 8` 工具 X 偏移轨迹使体积在 `1066.6586667 -> 1041.7386667 -> 1066.6586667` 间变化，X 上界从 13 变为 12 后恢复，并精确恢复名义摘要、history 与语义 naming。
- 上游 Chamfer naming 证据向下游传播；FreeCAD FCStd save/reopen/resave 三阶段 Shape 与 naming evidence 稳定，focused gate 已锁定相交融合、变异、恢复和持久化证据。

### `TSN-PAIR-chamfer-cut`

`chamfer->cut` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 10x10x10 Box 的全部边执行倒角，生成有效 1 Solid、26 Face、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder；名义结果为有效 1 Solid、31 Face、体积 `927.0613333`、面积 `604.1774417` 和 42 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `927.0613333 -> 963.9813333 -> 927.0613333` 间变化，编辑态面积同步变化；恢复态的几何摘要、history hash 和语义 naming 精确回到名义态。
- 上游 Chamfer naming evidence 向下游传播；下游结果因对称拓扑保持 `ambiguous`，未伪造唯一私有 token，JSON round-trip 稳定。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持有效 1 Solid、31 Face、63 Edge、34 Vertex、体积 `927.0613333`、面积 `604.1774417` 及 naming evidence hash `fbd3e2b6...` 一致；focused ordered-pair gate 已通过。
- 机器队列已自动前移一项；新的活动任务仍以 `config/freecad-active-work-queue.json.nextTask` 为唯一来源。

### `TSN-PAIR-chamfer-common`

`chamfer->common` 已完成原生接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 10x10x10 Box 的全部边执行倒角，生成有效 1 Solid、26 Face、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder，以相交工具对 Chamfer 结果求交；名义结果为有效 1 Solid、10 Face、21 Edge、13 Vertex、体积 `74.0026667`、面积 `106.6536521` 和 339 条原生 history。
- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积在 `74.0026667 -> 98.9226667 -> 74.0026667` 间变化，面积和 X 下界同步变化；恢复态的几何摘要、history hash 和语义 naming 精确回到名义态。
- 上游 Chamfer naming evidence 向下游传播；下游对称拓扑保持 `ambiguous`，未伪造唯一私有 token，JSON round-trip 稳定。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持有效 1 Solid、10 Face、21 Edge、13 Vertex、体积 `74.0026667`、面积 `106.6536521` 及 naming evidence hash `ec6b2670...` 一致；focused ordered-pair gate 已通过。
- 机器队列已自动前移一项；新的活动任务仍以 `config/freecad-active-work-queue.json.nextTask` 为唯一来源。

### `TSN-PAIR-chamfer-rotate`

`chamfer->rotate` 已完成真实 FreeCAD/OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 10x10x10 Box 全部边执行倒角，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder 绕 Z 轴旋转；名义结果保持相同 Solid、拓扑数、体积和面积，并生成 314 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹将包围盒从 `[-2.4846629, 0.1035275, -1e-7, 9.5557307, 12.1439212, 10.0000001]` 改为 `[-3.6737611, 0.1530733, -1e-7, 9.0857221, 12.9125564, 10.0000001]` 后精确恢复；history hash 和语义 naming 同时恢复。
- 上游 Chamfer naming evidence 向下游传播；下游对称拓扑保持 `ambiguous`，未按索引伪造唯一 token，JSON round-trip 稳定。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 及 naming evidence hash `d5ff71d2...` 一致。
- 真实执行未发现 `web-implementation-defect`、过度接受或过度拒绝；focused gate 已通过，机器队列只前移一项。

### 真实 desktop oracle BIM 首启隔离纠正

- 基线审计先发现旧 desktop report 缺少确定性归一化声明，`check:freecad-desktop-oracle` 正确 fail-closed；没有继续使用陈旧报告。
- 完整真实 desktop probe 随后在 `BIMWorkbench` 激活处达到默认 300 秒超时，而 BIM registration-only 探针正常完成，问题被缩小到 full-scope 首启路径。
- 根因是 `scripts/freecad-reference-probe.py` 只为 `gui-commands` scope 设置 BIM `FirstTime=false`，却对所有隔离 scope 声称首启已抑制。
- harness 已改为所有隔离 GUI probe 在 workbench 激活前设置并读回 BIM 首启参数；报告只在真实读回 false 时声明抑制成功。
- 修复后完整 FreeCAD 1.1.1 desktop probe 通过，重新锁定 34 模块、352 个 TypeId 候选、348 个可实例化对象、4 个明确不可实例化对象和 5510 条 Property 记录。
- desktop oracle、oracle coverage、1111 命令 GUI 清册和 26 个三方 Boolean 场景均通过；该纠正提高 oracle 可信度，不提升 WEB exact 等级。
- 派生 Property 语义报告已按新 desktop report hash 重新生成并通过：85 种/5510 条记录中 4987 条由原生 codec 表示，523 条仍为 opaque proxy，未被错误提升。

### `TSN-PAIR-chamfer-pad`

`chamfer->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，对 10x10x10 Box 全部边执行倒角，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游真实 `BRepPrimAPI_MakePrism` builder 对实体输入执行 `5 -> 7.5 -> 5` 长度轨迹；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，且不产出 result、Shape 或 history，恢复尝试保持相同拒绝签名。
- FreeCAD 1.1.1 文档内构造真实 `PartDesign::Pad` 并重算，锁定诊断 `FeatureExtrusion: Length: Could not extrude the sketch!`、`Touched/Invalid` 状态以及 null/invalid Shape；没有用通用 Shape fallback 伪造接受。
- abort 前后对象集与 Chamfer 源 Shape 完全一致，只保留有效 `Part::Feature`；临时 Body、Origin 和失败 Pad 均未污染文档。
- FCStd save/reopen/resave 三阶段均保持有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 及源 BREP hash `fa5d7bd7...` 一致。
- focused ordered-pair gate 已锁定 OCCT 拒绝阶段、参数轨迹、FreeCAD 精确诊断、事务回滚和干净持久化；该原生拒绝是正确分类，不提升为 Web 接受。

### `TSN-PAIR-chamfer-pocket`

`chamfer->pocket` 已完成真实 FreeCAD/OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder，在 Chamfer 结果上切除矩形棱柱；名义结果为有效 1 Solid、28 Face、57 Edge、31 Vertex、体积 `961.4986667`、面积 `573.5635876` 和 97 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `961.4986667 -> 967.4186667 -> 961.4986667` 间变化，面积同步变化；恢复态精确回到名义几何摘要、history hash 与语义 naming。
- 上游 Chamfer naming evidence 向下游传播；下游对称拓扑保持 `ambiguous`，JSON round-trip 稳定，没有按索引伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持有效单 Solid、相同拓扑、体积、面积及 naming evidence hash `0292a471...` 一致；focused gate 已锁定 builder、变异、恢复、naming 和持久化证据。

### `TSN-PAIR-chamfer-loft`

`chamfer->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 对实体与第二 section 执行 `false -> true -> false` ruled 轨迹，三次均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `704.4`、面积 `552.5525865` 和 24 条 history；恢复态与名义态完全一致，但该结果只代表 kernel superset。
- 真实 FreeCAD `Part::Loft` 文档重算以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；分类权威是 `freecad-document`，未把 OCCT 可构造性误报为生产接受。
- abort 前后只保留原 Chamfer `Part::Feature`，对象集、Shape 与 BREP hash `fa5d7bd7...` 完全恢复；临时 Section 和失败 Loft 未污染文档。
- FCStd save/reopen/resave 三阶段均保持原 Chamfer 有效单 Solid、相同拓扑、体积和面积；focused gate 已锁定 kernel 诊断、FreeCAD 精确拒绝、回滚和干净持久化。

### `TSN-PAIR-chamfer-pipe`

`chamfer->pipe` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 对实体 profile 与线性 spine 执行 `15 -> 12 -> 15` 轨迹；三次均产生 Shape 和 28 条原生 history，但 Shape 无效且体积为 0，编辑态面积与 Z 上界变化，恢复态精确回到名义 invalid-result 摘要。
- 真实 FreeCAD `Part::Sweep` 文档重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；没有把“产生了无效 Shape”误报为接受。
- abort 前后只保留原 Chamfer `Part::Feature`，对象集、Shape 与 BREP hash `fa5d7bd7...` 完全一致；临时 Spine 和失败 Sweep 均未污染文档。
- FCStd save/reopen/resave 三阶段保持原 Chamfer 的有效单 Solid、拓扑、体积和面积；focused gate 已锁定 kernel invalid-result、FreeCAD 精确诊断、事务回滚和干净持久化。

### `TSN-PAIR-chamfer-revolution`

`chamfer->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游真实 `BRepPrimAPI_MakeRevol` 对实体输入执行 `360 -> 270 -> 360` 角度轨迹；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history，恢复态拒绝签名一致。
- 真实 FreeCAD `Part::Revolution` 文档重算返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；没有用通用旋转 Shape 代理替代原生 profile 合同。
- abort 前后只保留原 Chamfer `Part::Feature`，对象集、Shape 与 BREP hash `fa5d7bd7...` 完全一致；失败 Revolution 未污染文档。
- FCStd save/reopen/resave 三阶段保持原 Chamfer 有效单 Solid、相同拓扑、体积和面积；focused gate 已锁定 builder 拒绝、FreeCAD 精确诊断、事务恢复和干净持久化。

### `TSN-PAIR-chamfer-groove`

`chamfer->groove` 已完成真实 FreeCAD/OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder；360 度名义结果为有效 1 Solid、30 Face、60 Edge、32 Vertex、体积 `986.0289444`、面积 `577.966554` 和 18 条原生 history。
- `360 -> 180 -> 360` 角度轨迹使编辑态回到体积 `990.7413333`、27 Face、52 Edge，随后精确恢复名义几何摘要、history hash 和语义 naming。
- 上游 Chamfer naming evidence 向下游传播；下游保持显式 `ambiguous`，JSON round-trip 稳定，没有索引型伪唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `d8501450...`；focused gate 已锁定 builder、变异、恢复、naming 和持久化证据。

### `TSN-PAIR-chamfer-fillet`

`chamfer->fillet` 已完成真实 FreeCAD/OCCT 差异拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- Web 原生 `BRepFilletAPI_MakeFillet` 对全边 Chamfer 结果执行 `0.4 -> 0.6 -> 0.4` 半径轨迹；首次无覆盖探针真实触发 Wasm `memory access out of bounds`，锁定后续三次均为相同 builder crash signature，且不伪造 result、Shape、history 或 naming。
- 独立 FreeCAD 1.1.1 `Part::Fillet` 对相同 48 Edge、半径 `0.4` 的 profile 重算成功，生成有效 1 Solid、98 Face、192 Edge、96 Vertex、体积 `989.9595415`、面积 `567.3942825`；该差异证明当前 Web builder 仍不能提升为接受。
- FreeCAD 成功 feature 在事务内完成诊断后 abort；前后只保留原 Chamfer `Part::Feature`，对象集、源 Shape 与 BREP hash `fa5d7bd7...` 完全恢复。
- 源 FCStd save/reopen/resave 三阶段保持相同有效单 Solid、拓扑、体积和面积；focused gate 已锁定 Wasm crash、FreeCAD profile acceptance、事务恢复和干净持久化。

### `TSN-PAIR-chamfer-chamfer`

`chamfer->chamfer` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- Web 原生 `BRepFilletAPI_MakeChamfer` 对全边 Chamfer 结果执行 `0.4 -> 0.6 -> 0.4` 距离轨迹；首次无覆盖探针真实触发 Wasm `memory access out of bounds`，锁定的三次尝试均保持相同 crash signature，且不伪造 result、Shape、history 或 naming。
- 独立 FreeCAD 1.1.1 `Part::Chamfer` 对相同 48 Edge、距离 `0.4` 的文档重算以 `BRep_API: command not done` 拒绝，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 前后只保留原 Chamfer `Part::Feature`，对象集、源 Shape 与 BREP hash `fa5d7bd7...` 完全一致；失败的第二个 Chamfer 未污染文档。
- FCStd save/reopen/resave 三阶段保持原 Chamfer 有效单 Solid、相同拓扑、体积和面积；focused gate 已锁定 Wasm crash、FreeCAD 精确拒绝、事务恢复和干净持久化。

### `TSN-PAIR-chamfer-hole`

`chamfer->hole` 已完成真实 FreeCAD/OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 构造中心贯穿孔；名义结果为有效 1 Solid、27 Face、51 Edge、26 Vertex、体积 `959.3254068`、面积 `627.9488512` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `959.3254068 -> 920.0554986 -> 959.3254068` 间变化，面积同步变化；恢复态精确回到名义几何摘要、history hash 和语义 naming。
- 下游获得唯一 `native-evidence` naming，2 条选择记录无歧义；上游 Chamfer naming evidence 正确传播，JSON round-trip 稳定。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `c09894a0...`；focused gate 已锁定 builder、变异、恢复、naming 和持久化证据。

### `TSN-PAIR-chamfer-draft`

`chamfer->draft` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游真实 `BRepOffsetAPI_DraftAngle` 对锁定 Face、中性面和方向执行 `5 -> 8 -> 5` 角度轨迹；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- 真实 FreeCAD `PartDesign::Draft` 使用 Body 内 `DraftBase/DatumPlane/DatumLine` 重算，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；原生 status string 为空，检查器同时锁定结构化状态而不伪造诊断文本。
- `DraftBase` 与源 Chamfer 的 Shape 摘要逐字段一致，源/副本 BREP hash 的序列化差异被显式记录；abort 后临时 Body、datum 和 Draft 全部移除，源对象集与 Shape 完全恢复。
- FCStd save/reopen/resave 三阶段保持原 Chamfer 有效单 Solid、相同拓扑、体积、面积及源 BREP hash `fa5d7bd7...`；focused gate 已锁定拒绝、输入转移、事务恢复和干净持久化。

### `TSN-PAIR-chamfer-thickness`

`chamfer->thickness` 已完成真实 FreeCAD/OCCT no-op 拒绝分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- OCCT `BRepOffsetAPI_MakeThickSolid` 对锁定 `Face2` 执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹；三次均返回有效 1 Solid 和 1 条原生 history，但 Shape 摘要与上游逐字段相同，因此明确记为 `kernel-no-op`，不伪造接受变异。
- 真实 FreeCAD `Part::Thickness` 对同一 Chamfer Solid 返回 `Valid/Up-to-date`，结果 Shape 非空且有效，但输入与结果的有效性、拓扑数、体积、面积和边界完全一致，分类为 `freecadProfileNoOp`。
- 事务 abort 后对象集和实体几何恢复；源 BREP 因 FreeCAD 元素映射从 `fa5d7bd7...` 重序列化为稳定的 `0c4fbfd8...`，TShape identity 不同，但有效性、拓扑数、体积、面积和边界逐字段一致，双向布尔差体积均为 `0`，该差异已显式登记而未冒充字节级恢复。
- 干净 FCStd save/reopen/resave 三阶段保持唯一源对象和相同 Shape 摘要，文档无临时 Thickness 污染；focused probe 独立复跑两次得到相同目标 artifact SHA-256 `9e3811fc...`。
- focused ordered-pair gate 已锁定 OCCT/FreeCAD 双 no-op、参数恢复、几何等价回滚、BREP 重序列化和持久化证据；机器队列只推进一项。

### `TSN-PAIR-chamfer-linear-pattern`

`chamfer->linear-pattern` 已完成真实 OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 沿 X 方向复制并融合 Chamfer 结果；名义结果为有效 1 Solid、42 Face、80 Edge、40 Vertex、体积 `1788.1813333`、面积 `883.902117` 和 258 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使体积在 `1788.1813333 -> 1887.8613333 -> 1788.1813333` 间变化，X 上界从 `18` 扩展到 `19` 后恢复；几何摘要、history hash 和语义 naming 精确恢复。
- 上游 Chamfer naming evidence 向下游传播；下游保持原生 `ambiguous` 分类，JSON round-trip 稳定，没有按索引伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `0de89018...`；focused gate 已锁定交叠融合、变异、恢复、naming 和持久化证据。
- 机器队列只推进一项；后继任务继续由最新 `nextTask` 唯一决定。

### `TSN-PAIR-chamfer-polar-pattern`

`chamfer->polar-pattern` 已完成真实 OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 绕 Z 轴旋转复制并融合 Chamfer 结果；30 度名义结果为有效 1 Solid、46 Face、90 Edge、46 Vertex、体积 `1411.0585231`、面积 `735.5718725` 和 228 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使体积在 `1411.0585231 -> 1573.5395566 -> 1411.0585231` 间变化，面积和边界同步变化；恢复态精确回到名义几何摘要、history hash 和语义 naming。
- 上游 Chamfer naming evidence 向下游传播；下游保持原生 `ambiguous` 分类，JSON round-trip 稳定，没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `271f87be...`；focused gate 已锁定旋转融合、变异、恢复、naming 和持久化证据。
- 机器队列只推进一项；后继任务继续由最新 `nextTask` 唯一决定。

### `TSN-PAIR-chamfer-mirrored`

`chamfer->mirrored` 已完成真实 OCCT 接受分类：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 默认 `x=5` 镜像面位于对称 Chamfer 实体中心，名义 Shape 与输入完全相同，未被误记为接受；改用保持副本相交且名义态真实改变几何的 `6 -> 7 -> 6` 专用轨迹。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder 镜像复制并融合；名义结果为有效 1 Solid、42 Face、80 Edge、40 Vertex、体积 `1190.1013333`、面积 `649.5256668` 和 258 条原生 history。
- 镜像面轨迹使体积在 `1190.1013333 -> 1389.4613333 -> 1190.1013333` 间变化，X 上界从 `12` 扩展到 `14` 后恢复；几何摘要、history hash 和语义 naming 精确恢复。
- 上游 Chamfer naming evidence 向下游传播；下游保持原生 `ambiguous` 分类，JSON round-trip 稳定，没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `f63fc775...`；focused gate 已锁定非 no-op 镜像、变异、恢复、naming 和持久化证据，机器队列只推进一项。

### `TSN-PAIR-chamfer-multi-transform`

`chamfer->multi-transform` 已完成真实 OCCT 接受分类，并闭合 Chamfer 起始行中尚需分类的全部有序操作对：

- 上游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder，生成有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- 下游使用 ordered `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` builder，依次执行 X 平移和关于 `x=5` 的镜像并融合；名义结果为有效 1 Solid、58 Face、112 Edge、56 Vertex、体积 `2585.6213333`、面积 `1196.4040506` 和 1027 条原生 history。
- `8 -> 9 -> 8` 首步 X 平移轨迹使体积在 `2585.6213333 -> 2784.9813333 -> 2585.6213333` 间变化，边界从 `[-8, 18]` 扩展为 `[-9, 19]` 后恢复；几何摘要、history hash 和语义 naming 精确恢复。
- 上游 Chamfer naming evidence 向下游传播；下游保持原生 `ambiguous` 分类，JSON round-trip 稳定，没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `9abb2623...`；focused gate 已锁定 ordered builder、变异、恢复、naming 和持久化证据。
- 机器队列从 Chamfer 行末严格跨到下一起始操作行，没有跳号或第二个活动微任务；后继任务仍只读取最新 `nextTask`。

### `TSN-PAIR-hole-fuse`

`hole->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 对 10x10x10 Box 执行中心贯穿孔，生成有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Fuse` 双输入 builder，以相交工具融合 Hole 结果；名义结果为有效 1 Solid、14 Face、32 Edge、20 Vertex、体积 `1043.5840735`、面积 `716.5486678` 和 52 条原生 history。
- `8 -> 7 -> 8` 工具 X 偏移轨迹使体积在 `1043.5840735 -> 1018.5840735 -> 1043.5840735` 间变化，X 上界从 `13` 变为 `12` 后恢复；几何摘要、history hash 和语义 naming 精确恢复。
- 上游 Hole 的无歧义 `native-evidence` naming 向下游传播；下游对称拓扑保持 `ambiguous` 分类，JSON round-trip 稳定，没有按索引伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `91e34b16...`；聚焦原生探针重跑仍得到相同分类。
- focused ordered-pair gate 已锁定两阶段 builder、双输入、变异、恢复、history、naming 和持久化证据；队列仅前移一项，后继任务仍以机器队列的最新 `nextTask` 为唯一来源。

### `TSN-PAIR-hole-cut`

`hole->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 对 10x10x10 Box 执行中心贯穿孔，生成有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Cut` 双输入 builder 对 Hole 结果再次减料；名义结果为有效 1 Solid、12 Face、31 Edge、20 Vertex、体积 `904.5840735`、面积 `688.5486678` 和 36 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `904.5840735 -> 941.5840735 -> 904.5840735` 间变化，拓扑和面积同步变化；恢复态精确回到名义几何摘要、history hash 和语义 naming hash。
- 上游 Hole 的无歧义 `native-evidence` naming 向下游传播；下游保持 `ambiguous` 分类且 JSON round-trip 稳定，没有按索引伪造唯一 token。
- 连续三次聚焦原生探针均得到 accepted、相同几何/history/语义 naming 和 FCStd 结果；跨进程只有恢复态完整原始 naming evidence 的序列化 hash 变化，未被误记为字节级恢复或语义漂移。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及名义态 naming evidence hash `a115b41a...`；focused gate 已锁定两阶段 builder、双输入、变异、语义恢复、history、naming 和持久化证据。
- 机器队列仅前移一项，且只保留一个 `in_progress`；后继任务仍以最新 `nextTask` 为唯一来源。

### `TSN-PAIR-hole-common`

#### 执行过程

1. 从机器队列读取唯一活动任务，确认依赖已闭合，且退出条件要求接受证据包含 builder、变异、naming 和 FCStd resave。
2. 审计 Common 默认输入后发现 `x=10` 工具仅与 Hole 边界接触，不能形成有效体积交集；因此锁定保持实体交叠的 `7 -> 6 -> 7` X 偏移轨迹，没有将空交集误记为接受。
3. 执行器追加该有序操作对的连续前缀和专用参数；检查器同步锁定两阶段 builder、输入数、变异轨迹与分类汇总。
4. 真实聚焦探针执行 4 次 OCCT builder 和 FreeCAD 1.1.1 的 3 个 FCStd 阶段，然后通过 ordered-pair focused gate。
5. 生成器将刚完成任务标记为 `completed`，队列只前移一项，并继续保持唯一 `in_progress`。

#### 完成证据

`hole->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 生成有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- 下游使用真实 `BRepAlgoAPI_Common` 双输入 builder 求交；名义结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `75`、面积 `110` 和 140 条原生 history。
- `7 -> 6 -> 7` 工具 X 偏移轨迹使体积在 `75 -> 100 -> 75` 间变化，面积在 `110 -> 130 -> 110` 间变化，X 下界从 `7` 移至 `6` 后恢复；几何摘要、history hash 和语义 naming 精确恢复。
- 上游 Hole 的 `native-evidence` naming 向下游传播；下游对称拓扑保持 `ambiguous` 分类，JSON round-trip 稳定，没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `7202e431...`；focused gate 已锁定 builder、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-hole-rotate`

#### 执行过程

1. 在前一任务生成队列后重新读取唯一 `nextTask`，确认新任务是连续前缀中的下一有序操作对。
2. 执行器显式锁定 `BRepBuilderAPI_Transform` 和 `15 -> 22.5 -> 15` 角度轨迹；检查器追加单输入 builder、变异与分类汇总断言。
3. 聚焦原生探针完成 4 次 OCCT builder 和 3 个 FreeCAD FCStd 阶段；ordered-pair focused gate 通过后才重建队列。
4. 队列生成器只将本项改为 `completed`，同时将下一项维持为唯一 `in_progress`。

#### 完成证据

`hole->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Hole 保持有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform` 单输入 builder 绕 Z 轴旋转；名义结果保持相同 Solid、拓扑、体积和面积，并生成 97 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹将世界坐标边界从 `[-2.5881906, 0, 0, 9.6592584, 12.2474488, 10]` 改为 `[-3.8268344, 0, 0, 9.2387954, 13.0656297, 10]` 后恢复；未因体积不变而误判为 no-op。
- 恢复态精确回到名义几何摘要、history hash 和语义 naming；上游 Hole naming 向下游传播，下游保持 `ambiguous` 而没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段均保持名义 Shape 及 naming evidence hash `99df97fe...`；focused gate 已锁定 builder、边界变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-hole-pad`

#### 执行过程

1. 从新生成的队列读取唯一活动项，将 Solid-as-Profile 预期明确为待探测的原生拒绝，没有预先伪造接受结果。
2. 执行器锁定 `BRepPrimAPI_MakePrism`、`5 -> 7.5 -> 5` 长度轨迹和 `occt-builder` 决策权；检查器锁定 `PartDesign::Pad` 类型与精确诊断。
3. 聚焦探针完成 OCCT 拒绝尝试、FreeCAD 文档重算、transaction abort 和 FCStd save/reopen/resave；focused gate 通过后队列才前移一项。

#### 完成证据

`hole->pad` 已完成真实 OCCT/FreeCAD 拒绝分类：

- 上游 Hole 保持有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- `BRepPrimAPI_MakePrism` 对 Hole Solid 执行 `5 -> 7.5 -> 5` 长度轨迹，三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产生 result、Shape 或 history。
- FreeCAD 1.1.1 `PartDesign::Pad` 文档重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid`，Shape 为 null/invalid；没有使用通用 Shape fallback。
- transaction abort 前后只保留原 `Part::Feature`，对象集、Shape 摘要和源 BREP hash `d3a3dd33...` 精确恢复；失败 Pad、Body 和 Origin 没有污染文档。
- 干净 FCStd save/reopen/resave 三阶段均保持唯一源对象与相同有效 Shape；focused gate 已锁定拒绝阶段、参数轨迹、精确诊断、回滚和持久化证据。

### `TSN-PAIR-hole-pocket`

#### 执行过程

1. 重读机器队列并领取唯一活动项，锁定 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 两阶段减料和 `5 -> 4 -> 5` 深度轨迹。
2. 聚焦探针完成 4 次原生 builder 和 3 个 FreeCAD FCStd 阶段；检查器确认 Shape 变化、恢复、history、naming 和持久化后，队列生成器只前移一项。

#### 完成证据

`hole->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Hole 生成有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735` 和 23 条原生 history。
- 下游使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder；名义结果为有效 1 Solid、10 Face、24 Edge、16 Vertex、体积 `938.5840735` 和 42 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `938.5840735 -> 944.5840735 -> 938.5840735` 间变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 分类与稳定 JSON round-trip；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `e47fa122...`。
- focused gate 已锁定 builder、变异、恢复、history、naming 和持久化证据；队列继续保持唯一 `in_progress`。

### `TSN-PAIR-hole-loft`

#### 执行过程

1. 从队列领取唯一活动项，将 OCCT kernel 可构造性与 FreeCAD 文档 profile 适用性分层检查。
2. 执行 `false -> true -> false` ruled 轨迹、FreeCAD `Part::Loft` 重算、transaction abort 和干净 FCStd 三阶段；聚焦门禁通过后才生成新队列。

#### 完成证据

`hole->loft` 已完成真实 OCCT/FreeCAD 分层拒绝分类：

- 上游 Hole 保持有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735` 和 23 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在 `false -> true -> false` 轨迹中均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `750`、面积 `580.2775638` 和 24 条 history；该结果只记为 `kernel-superset-only`。
- FreeCAD 1.1.1 `Part::Loft` 以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Solid section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；分类权威保持 `freecad-document`。
- abort 前后只保留原 Hole `Part::Feature`，对象集、Shape 摘要和 BREP hash `d3a3dd33...` 精确恢复；FCStd save/reopen/resave 三阶段无临时 Section 或 Loft 污染。
- focused gate 已锁定 kernel 超集证据、FreeCAD 精确诊断、回滚和干净持久化；队列只前移一项。

### `TSN-PAIR-hole-pipe`

#### 执行过程

1. 从最新队列领取唯一活动项，锁定 `15 -> 12 -> 15` spine 长度轨迹。
2. 分开采集 OCCT Shape 有效性、FreeCAD `Part::Sweep` 诊断、transaction abort 和 FCStd 往返；focused gate 通过后队列只前移一项。

#### 完成证据

`hole->pipe` 已完成真实 OCCT/FreeCAD 拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 在 `15 -> 12 -> 15` 轨迹中每次都产生 Shape 和 28 条 history，但 Shape 无效且体积为 `0`；面积在 `500 -> 440 -> 500` 间变化，恢复态回到名义 invalid-result 摘要。
- FreeCAD 1.1.1 `Part::Sweep` 返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；没有把“产生了无效 Shape”误报为接受。
- abort 前后只保留原 Hole `Part::Feature`，对象集、Shape 和 BREP hash `d3a3dd33...` 一致；临时 Spine/Sweep 未污染文档。
- FCStd save/reopen/resave 三阶段保持源 Shape；focused gate 已锁定 kernel invalid-result、FreeCAD 精确诊断、回滚和持久化证据。

### `TSN-PAIR-hole-revolution`

#### 执行过程

1. 重读队列后领取唯一活动项，锁定 `BRepPrimAPI_MakeRevol`、`360 -> 270 -> 360` 角度轨迹与 `Part::Revolution` 文档诊断。
2. 完成原生拒绝探针、FreeCAD 重算、transaction abort、FCStd 三阶段和 focused gate；队列只前移一项。

#### 完成证据

`hole->revolution` 已完成真实 OCCT/FreeCAD 拒绝分类：

- OCCT `BRepPrimAPI_MakeRevol` 对 Hole Solid 执行 `360 -> 270 -> 360` 轨迹，三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产生 result、Shape 或 history。
- FreeCAD 1.1.1 `Part::Revolution` 返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；没有使用通用旋转 Shape 代替 profile 合同。
- abort 前后唯一 Hole 源对象、Shape 摘要和 BREP hash `d3a3dd33...` 精确恢复；FCStd save/reopen/resave 三阶段一致。
- focused gate 已锁定 builder 拒绝、FreeCAD 精确诊断、回滚和干净持久化证据。

### `TSN-PAIR-hole-groove`

#### 执行过程

1. 从队列领取唯一活动项，锁定真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder 与 `360 -> 180 -> 360` 轨迹。
2. 完成原生探针、变异恢复、naming、FCStd 三阶段和 focused gate；队列只前移一项。

#### 完成证据

`hole->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 360 度名义结果为有效 1 Solid、11 Face、27 Edge、18 Vertex、体积 `963.8716845`、面积 `663.1150384` 和 18 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态变为 8 Face、19 Edge、14 Vertex、体积 `968.5840735`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 分类；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `05e968b8...`。
- focused gate 已锁定 builder、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-hole-fillet`

#### 执行过程

1. 从最新队列领取唯一活动项，锁定 `BRepFilletAPI_MakeFillet` 和 `0.4 -> 0.6 -> 0.4` 半径轨迹。
2. 执行原生 builder、变异恢复、naming、FCStd 三阶段和 focused gate；全部通过后队列只前移一项。

#### 完成证据

`hole->fillet` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游使用真实 `BRepFilletAPI_MakeFillet` 单输入 builder；名义结果为有效 1 Solid、29 Face、63 Edge、28 Vertex、体积 `964.0793949`、面积 `633.7505843` 和 173 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `964.0793949 -> 958.5016007 -> 964.0793949` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 分类；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `6313804f...`。
- focused gate 已锁定 builder、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-hole-chamfer`

#### 执行过程

1. 从最新队列领取唯一活动项，锁定 `BRepFilletAPI_MakeChamfer` 和 `0.4 -> 0.6 -> 0.4` 距离轨迹。
2. 聚焦探针完成 builder、变异恢复、naming 和 FCStd 往返；focused gate 通过后队列只前移一项。

#### 完成证据

`hole->chamfer` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游使用真实 `BRepFilletAPI_MakeChamfer` 单输入 builder；名义结果为有效 1 Solid、29 Face、55 Edge、28 Vertex、体积 `958.1860559`、面积 `625.4207803` 和 173 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `958.1860559 -> 945.4217374 -> 958.1860559` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 分类；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `b9282639...`。
- focused gate 已锁定 builder、变异、恢复、history、naming 和持久化证据。

### `TSN-PAIR-hole-hole`

#### 执行过程

1. 从最新队列领取唯一活动项；审计发现复用默认中心与半径会使名义下游退化为 no-op，因此将第二贯穿孔锁定在 `(2, 2)`。
2. 执行 `1 -> 1.5 -> 1` 半径轨迹、原生 history/naming、FCStd 三阶段和 focused gate；证明名义态真实改变上游 Shape 后才推进队列。

#### 完成证据

`hole->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 第二阶段使用真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` builder 生成偏置贯穿孔；名义结果为有效 1 Solid、8 Face、18 Edge、12 Vertex、体积 `937.1681469`、面积 `713.0973355` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `937.1681469 -> 897.8982388 -> 937.1681469` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上下游都获得无歧义 `native-evidence` naming，没有伪造私有 token；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `daeee873...`。
- focused gate 已锁定偏置输入、变异、恢复、history、naming 和持久化证据。

后续任务必须从机器队列的最新 `nextTask` 继续，不在本文手工维护任务名称。

### `TSN-PAIR-hole-draft`

#### 执行过程

1. 从机器队列领取唯一活动项，使用真实 `BRepOffsetAPI_DraftAngle` 对 Hole 结果执行 `5 -> 8 -> 5` 角度轨迹。
2. 采集原生 builder、Shape 变化与恢复、history/naming 和 FCStd save/reopen/resave 证据；聚焦门禁通过后队列只前移一项。

#### 完成证据

`hole->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Hole 为有效 1 Solid、7 Face、15 Edge、10 Vertex，体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- 下游拔模名义结果保持有效单 Solid，体积 `924.8397417`、面积 `639.4329188` 和 5 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使体积在 `924.8397417 -> 898.3136561 -> 924.8397417` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上下游均为无歧义 `native-evidence` naming；FCStd 三阶段保持 Shape 及 naming evidence hash `7e449b85...`。

### `TSN-PAIR-hole-thickness`

#### 执行过程

1. 从最新队列领取唯一活动项；先对 Hole 的候选面与两档 offset 做只读原生可构造性探测，确认默认面不是 no-op。
2. 将该对加入连续分类前缀和聚焦检查器，执行 4 次真实 `BRepOffsetAPI_MakeThickSolid` builder 及 3 个 FreeCAD FCStd 阶段。
3. 聚焦门禁、`git diff --check` 通过后生成队列；完成数只增加 1，且仍只有一个 `in_progress`。

#### 完成证据

`hole->thickness` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游厚度使用真实 `BRepOffsetAPI_MakeThickSolid` 单输入 builder；名义结果为有效 1 Solid、13 Face、30 Edge、20 Vertex，体积 `212.6892722`、面积 `1078.4410513` 和 55 条原生 history。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `212.6892722 -> 311.4218728 -> 212.6892722` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- Hole 的无歧义 naming 向下游传播，厚度结果保持原生 `ambiguous` 分类和稳定 JSON round-trip，没有伪造唯一 token。
- FreeCAD 1.1.1 FCStd save/reopen/resave 三阶段保持相同有效单 Solid、拓扑、体积、面积及 naming evidence hash `49370f17...`。
- focused ordered-pair gate 已锁定 builder、变异、恢复、history、naming 和持久化证据；队列仅前移一项。

### `TSN-PAIR-hole-linear-pattern`

#### 执行过程

1. 从机器队列读取唯一活动项 `TSN-PAIR-hole-linear-pattern`，确认前置 `TSN-PROD-DRIFT-001` 已满足，领取该任务。
2. 审计执行器与既有阵列合同，锁定下游候选为真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse`，先按 `8 -> 9 -> 8` 平移轨迹执行聚焦探针；当前不预设超出原生结果的 fallback 或能力结论。
3. 聚焦探针完成 4 次原生 builder 和 3 个 FreeCAD FCStd 阶段，实测分类为 `accepted`；逐字段确认 Shape 变化、恢复、history、naming 和持久化后，仅同步检查器的精确汇总常量。

#### 完成证据

`hole->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Hole 保持有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735` 和 23 条原生 history。
- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入阵列 builder；名义结果为有效 1 Solid、16 Face、34 Edge、20 Vertex、体积 `1737.1681469`、面积 `1033.0973355` 和 66 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使体积在 `1737.1681469 -> 1837.1681469 -> 1737.1681469` 间变化，边界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 原生分类；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence 稳定。
- ordered-pair focused gate、活动队列 gate、execution-plan gate、全部 JSON 解析和 `git diff --check` 通过；队列从 `370` 完成项前移到 `371`，唯一新活动项为 `TSN-PAIR-hole-polar-pattern`。

### `TSN-PAIR-hole-polar-pattern`

#### 执行过程

1. 从新生成的机器队列领取唯一活动项 `TSN-PAIR-hole-polar-pattern`，锁定真实旋转变换加 Fuse 的极轴阵列路径与 `30 -> 45 -> 30` 角度轨迹。

#### 完成证据

`hole->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入极轴阵列 builder；名义结果为有效 1 Solid、16 Face、30 Edge、20 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 96 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使编辑态变为 21 Face、51 Edge、28 Vertex、体积 `1554.3705111` 和 127 条 history；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上游 Hole naming 向下游传播，下游保持 `ambiguous` 分类；FCStd save/reopen/resave 三阶段保持相同 Shape 及 naming evidence hash `f773ce34...`。
- focused gate、活动队列 gate 和 `git diff --check` 通过；队列完成项增加到 `372`，唯一新活动项为 `TSN-PAIR-hole-mirrored`。

### `TSN-PAIR-hole-mirrored`

#### 执行过程

1. 从机器队列领取唯一活动项；审计发现 Hole 关于默认 `x=5` 镜像面对称，会使名义镜像退化为 no-op，因此锁定 `6 -> 7 -> 6` 非对称平面轨迹后再采集真实 builder 证据。

#### 完成证据

`hole->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 单输入镜像 builder；名义结果为有效 1 Solid、18 Face、32 Edge、18 Vertex、体积 `1200`、面积 `680` 和 108 条原生 history。
- 非退化 `6 -> 7 -> 6` 镜像面轨迹使编辑态变为 18 Face、40 Edge、24 Vertex、体积 `1400`、面积 `760`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `ff14b8f0...`。
- focused gate、活动队列 gate 和 `git diff --check` 通过；队列完成项增加到 `373`，唯一新活动项为 `TSN-PAIR-hole-multi-transform`。

### `TSN-PAIR-hole-multi-transform`

#### 执行过程

1. 从机器队列领取 Hole 行最后一个活动项；确认 builder 按“线性副本后镜像整个中间结果”的固定顺序执行，因此沿用非退化 `8 -> 9 -> 8` 线性距离轨迹与 `x=5` 镜像面。

#### 完成证据

`hole->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游使用真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 单输入 builder；名义结果为有效 1 Solid、26 Face、56 Edge、32 Vertex、体积 `2505.7522204`、面积 `1409.6460033` 和 441 条原生 history。
- `8 -> 9 -> 8` 线性距离轨迹使体积在 `2505.7522204 -> 2705.7522204 -> 2505.7522204` 间变化，边界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `a4b7e760...`。
- focused gate 和 `git diff --check` 通过；Hole 行 19/19 有序操作对全部闭合，队列完成项增加到 `374`，唯一新活动项为 `TSN-PAIR-draft-fuse`。

### `TSN-PAIR-draft-fuse`

#### 执行过程

1. 从新生成的机器队列领取唯一活动项 `TSN-PAIR-draft-fuse`；在开始新行前先执行 Hole 行边界的完整项目门禁，确保已有增量可作为稳定接续基线。
2. 完整 `./npmw run verify` 通过，包括构建、PWA、79 个签名发布文件、release closure 和 Ed25519 验签；系统能力仍保持 `0 exact / 26 compatible / 5 proxy / 3 development` 的 fail-closed 状态。
3. 对照相邻实体 dress-up 行，将 Fuse 工具锁定为有重叠的 `8 -> 7 -> 8` 偏移轨迹，避免默认偏移 12 产生断开 Compound 后误当作代表性接受证据。

#### 完成证据

`draft->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Draft 为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `956.2556682`、面积 `582.884251` 和 5 条原生 history。
- 下游真实 `BRepAlgoAPI_Fuse` 双输入结果为有效 1 Solid、13 Face、29 Edge、18 Vertex、体积 `1031.2556682`、面积 `642.884251` 和 52 条原生 history。
- `8 -> 7 -> 8` 工具偏移轨迹使体积在 `1031.2556682 -> 1006.2556682 -> 1031.2556682` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming；FCStd 三阶段稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `375`，唯一新活动项为 `TSN-PAIR-draft-cut`。

### `TSN-PAIR-draft-cut`

#### 执行过程

1. 从机器队列领取唯一活动项；确认默认 Cut 工具位于 Draft 实体内部，采用真实 `BRepAlgoAPI_Cut` 与 `4 -> 3 -> 4` 工具尺寸轨迹采样。

#### 完成证据

`draft->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Cut` 双输入结果为有效 1 Solid、10 Face、24 Edge、16 Vertex、体积 `892.2556682`、面积 `614.884251` 和 22 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `892.2556682 -> 929.2556682 -> 892.2556682` 间变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游原生 naming 为 `ambiguous`；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `092779b6...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `376`，唯一新活动项为 `TSN-PAIR-draft-common`。

### `TSN-PAIR-draft-common`

#### 执行过程

1. 从机器队列领取唯一活动项；默认 Common 工具从 `x=10` 起只与 Draft 边界接触，因此锁定有实体重叠的 `7 -> 6 -> 7` 工具偏移轨迹。

#### 完成证据

`draft->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Common` 双输入结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `75`、面积 `110` 和 121 条原生 history。
- `7 -> 6 -> 7` 工具偏移轨迹使体积在 `75 -> 100 -> 75` 间变化，边界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游原生 naming 为 `ambiguous`；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `6bafa6dc...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `377`，唯一新活动项为 `TSN-PAIR-draft-rotate`。

### `TSN-PAIR-draft-rotate`

#### 执行过程

1. 从最新机器队列领取唯一活动项；沿用真实 `BRepBuilderAPI_Transform` 单输入 builder 和 `15 -> 22.5 -> 15` 角度轨迹，采集 Draft 实体的旋转、恢复、history/naming 与 FCStd 三阶段证据。

#### 完成证据

`draft->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform` 单输入结果保持有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `956.2556682`、面积 `582.884251`，生成 78 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹将包围盒从 `[-2.5881906, -1e-7, -1e-7, 9.6592584, 12.2474488, 10.0000001]` 改为 `[-3.8268344, -1e-7, -1e-7, 9.2387954, 13.0656297, 10.0000001]` 后精确恢复；history hash 与语义 naming 同步恢复。
- 上游 Draft 为无歧义 `native-evidence`，下游旋转保持 `ambiguous`；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `cceb25e8...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `378`，唯一新活动项为 `TSN-PAIR-draft-pad`。

### `TSN-PAIR-draft-pad`

#### 执行过程

1. 从机器队列领取唯一活动项；按实体输入合同执行真实 `BRepPrimAPI_MakePrism` 的 `5 -> 7.5 -> 5` 长度轨迹，并以真实 `PartDesign::Pad` 文档重算、事务回滚和干净 FCStd 三阶段作为拒绝分类证据。

#### 完成证据

`draft->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakePrism` 对 Draft 实体执行 `5 -> 7.5 -> 5` 长度轨迹；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留有效源 `Part::Feature`，对象集与源 BREP hash `a18f0adb...` 完全一致；失败 Pad、Body 和 Origin 未污染文档。
- FCStd save/reopen/resave 三阶段保持 Draft 源实体的有效单 Solid、拓扑、体积和面积；focused gate 与 `git diff --check` 通过，队列完成项增加到 `379`。

### `TSN-PAIR-draft-pocket`

#### 执行过程

1. 从最新队列领取唯一活动项；使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入 builder 执行 `5 -> 4 -> 5` 深度轨迹，并采集 Shape/history/naming 恢复和 FCStd 三阶段证据。

#### 完成证据

`draft->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 双输入结果为有效 1 Solid、9 Face、21 Edge、14 Vertex、体积 `929.5364931`、面积 `581.5146235` 和 58 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `929.5364931 -> 934.3553962 -> 929.5364931` 间变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `d487a421...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `380`，唯一新活动项为 `TSN-PAIR-draft-loft`。

### `TSN-PAIR-draft-loft`

#### 执行过程

1. 从机器队列领取唯一活动项；使用真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，同时以真实 `Part::Loft` 文档重算判定实体 section 是否满足 FreeCAD profile 合同。

#### 完成证据

`draft->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 的三次 ruled 尝试均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `315.6164976`、面积 `549.6140595` 和 24 条 history；恢复态一致，但只属于 kernel superset。
- FreeCAD 1.1.1 真实 `Part::Loft` 文档重算以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留 Draft 源对象，Shape 与 BREP hash `a18f0adb...` 完全恢复；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `381`，唯一新活动项为 `TSN-PAIR-draft-pipe`。

### `TSN-PAIR-draft-pipe`

#### 执行过程

1. 从最新队列领取唯一活动项；以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，并用真实 `Part::Sweep` 文档重算区分 kernel invalid-result 与 FreeCAD 拒绝。
2. 首轮聚焦探针 fail-closed：Draft 输入上的 OCCT Pipe 实测生成有效 1 Solid，并非相邻实体常见的 `invalid-result`；将该对的 kernel 预期纠正为实测 `accepted` 后重新采样，最终权威仍保持 `freecad-document`。

#### 完成证据

`draft->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 的三次尝试均生成有效 1 Solid、6 Face、12 Edge、8 Vertex 和 28 条 history；`15 -> 12 -> 15` 轨迹使体积在 `131.2329953 -> 104.9863962 -> 131.2329953` 间变化后精确恢复。
- 真实 FreeCAD `Part::Sweep` 文档重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；kernel 接受仅作为 superset 诊断。
- 事务 abort 后源对象集、Shape 与 BREP hash `a18f0adb...` 完全恢复；FCStd 三阶段保持干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `382`，唯一新活动项为 `TSN-PAIR-draft-revolution`。

### `TSN-PAIR-draft-revolution`

#### 执行过程

1. 从机器队列领取唯一活动项；以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并用真实 `Part::Revolution` 重算、回滚和 FCStd 三阶段锁定实体输入拒绝合同。

#### 完成证据

`draft->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakeRevol` 对 Draft 实体执行 `360 -> 270 -> 360` 角度轨迹；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- 真实 FreeCAD `Part::Revolution` 文档重算返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后源对象集与 BREP hash `a18f0adb...` 完全一致；FCStd 三阶段保持有效 Draft 源实体且无失败 Revolution 污染。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `383`，唯一新活动项为 `TSN-PAIR-draft-groove`。

### `TSN-PAIR-draft-groove`

#### 执行过程

1. 从最新队列领取唯一活动项；使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 双输入 builder 执行 `360 -> 180 -> 360` 角度轨迹，采集切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`draft->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 结果为有效 1 Solid、10 Face、24 Edge、16 Vertex、体积 `951.8050786`、面积 `588.75249` 和 18 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态变为 7 Face、16 Edge、12 Vertex，体积回到 Draft 源值 `956.2556682`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `7f3be10c...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `384`，唯一新活动项为 `TSN-PAIR-draft-fillet`。

### `TSN-PAIR-draft-fillet`

#### 执行过程

1. 从最新机器队列领取唯一活动项；先仅扩展连续执行前缀，以真实 `BRepFilletAPI_MakeFillet` 对 Draft 边集合执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，结论完全由原生探针决定。

#### 完成证据

`draft->fillet` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepFilletAPI_MakeFillet` 结果为有效 1 Solid、26 Face、56 Edge、24 Vertex、体积 `952.2666777`、面积 `562.3270603` 和 150 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `952.2666777 -> 947.3773367 -> 952.2666777` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `03590c56...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `385`，唯一新活动项为 `TSN-PAIR-draft-chamfer`。

### `TSN-PAIR-draft-chamfer`

#### 执行过程

1. 从机器队列领取唯一活动项；先只扩展连续前缀，以真实 `BRepFilletAPI_MakeChamfer` 对 Draft 全边执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，再按实测结果锁定分类。

#### 完成证据

`draft->chamfer` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepFilletAPI_MakeChamfer` 结果为有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `947.1369614`、面积 `554.6660823` 和 150 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `947.1369614 -> 936.1225793 -> 947.1369614` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `86475869...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `386`，唯一新活动项为 `TSN-PAIR-draft-hole`。

### `TSN-PAIR-draft-hole`

#### 执行过程

1. 从机器队列领取唯一活动项；以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 对 Draft 实体执行 `1 -> 1.5 -> 1` 半径轨迹，先采集原生结果再锁定分类。

#### 完成证据

`draft->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 结果为有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `924.8397417`、面积 `639.4329188` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `924.8397417 -> 885.5698335 -> 924.8397417` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 上下游均为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `4d76f9b3...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `387`，唯一新活动项为 `TSN-PAIR-draft-draft`。

### `TSN-PAIR-draft-draft`

#### 执行过程

1. 从最新队列领取唯一活动项；以真实 `BRepOffsetAPI_DraftAngle` 对已拔模实体再次执行 `5 -> 8 -> 5` 角度轨迹，先由 builder 的有效 Shape 或拒绝签名确定分类。

#### 完成证据

`draft->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepOffsetAPI_DraftAngle` 名义 5 度结果保持有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `956.2556682`、面积 `582.884251`，并产生独立原生 history。
- `5 -> 8 -> 5` 轨迹使编辑态体积变为 `929.7295826`、面积变为 `572.8745903`，随后精确恢复名义 Shape、history hash 和语义 naming；因此该能力不是恒定 no-op。
- 上下游均为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `1e36c081...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `388`，唯一新活动项为 `TSN-PAIR-draft-thickness`。

### `TSN-PAIR-draft-thickness`

#### 执行过程

1. 从机器队列领取唯一活动项；先以真实 `BRepOffsetAPI_MakeThickSolid` 对锁定面执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹，由有效变异、invalid-result 或 no-op 实测决定分类。

#### 完成证据

`draft->thickness` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepOffsetAPI_MakeThickSolid` 结果为有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `180.8661951`、面积 `920.33342` 和 38 条原生 history。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使体积在 `180.8661951 -> 262.3727637 -> 180.8661951` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `502f0c67...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `389`，唯一新活动项为 `TSN-PAIR-draft-linear-pattern`。

### `TSN-PAIR-draft-linear-pattern`

#### 执行过程

1. 从机器队列领取唯一活动项；以真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 平移轨迹，采集交叠副本的 Shape、history、naming 和 FCStd 三阶段证据。

#### 完成证据

`draft->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1756.2556682`、面积 `902.884251` 和 66 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使体积在 `1756.2556682 -> 1856.2556682 -> 1756.2556682` 间变化，X 上界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `35cb7d6b...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `390`，唯一新活动项为 `TSN-PAIR-draft-polar-pattern`。

### `TSN-PAIR-draft-polar-pattern`

#### 执行过程

1. 从机器队列领取唯一活动项；以真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹，采集拓扑、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`draft->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、14 Face、30 Edge、18 Vertex、体积 `1378.1688669`、面积 `754.9351384` 和 66 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使体积在 `1378.1688669 -> 1540.7663948 -> 1378.1688669` 间变化，边界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `d1dd374c...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `391`，唯一新活动项为 `TSN-PAIR-draft-mirrored`。

### `TSN-PAIR-draft-mirrored`

#### 执行过程

1. 从最新队列领取唯一活动项；先以默认真实镜像变换加 Fuse 的 `5 -> 6 -> 5` 平面轨迹探测 Draft 实体是否仍关于 x=5 对称，再据实锁定代表性分类。

#### 完成证据

`draft->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 的 x=5 镜像结果为有效 1 Solid、12 Face、22 Edge、12 Vertex、体积 `1000`、面积 `600` 和 118 条原生 history；镜像补齐了非对称 Draft 的楔形差异，不是 no-op。
- `5 -> 6 -> 5` 镜像面轨迹使编辑态变为 14 Face、28 Edge、16 Vertex、体积 `1112.5113365`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `7a5113cd...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `392`，唯一新活动项为 `TSN-PAIR-draft-multi-transform`。

### `TSN-PAIR-draft-multi-transform`

#### 执行过程

1. 从机器队列领取 Draft 行最后一个活动项；使用真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 执行 `8 -> 9 -> 8` 线性距离轨迹，并锁定后续镜像整个中间结果的顺序语义。

#### 完成证据

`draft->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 结果为有效 1 Solid、28 Face、54 Edge、28 Vertex、体积 `2600`、面积 `1240` 和 376 条原生 history。
- `8 -> 9 -> 8` 距离轨迹使编辑态变为 32 Face、62 Edge、32 Vertex、体积 `2800`、面积 `1320`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `bed9f818...`。
- focused gate 与 `git diff --check` 通过；Draft 行 19/19 有序操作对全部闭合，队列完成项增加到 `393`，唯一新活动项为 `TSN-PAIR-thickness-fuse`。

### Draft 行边界完整验证

#### 执行过程

1. 在跨入 Thickness 行前运行完整 `./npmw run verify`，验证本批分类、活动队列、构建、PWA、发布文件与签名闭环。

#### 完成证据

- 完整 `./npmw run verify` 通过：263 个有序操作对分类、全套浏览器与单元测试、fuzz、生产构建、PWA、79 个发布文件、release closure 与 Ed25519 签名均通过。
- 发布矩阵仍严格保持 `0 exact / 26 compatible / 5 proxy / 3 development`，没有因局部有序操作对闭合而提升系统级 exact 声明。

### `TSN-PAIR-thickness-fuse`

#### 执行过程

1. 从机器队列领取 Thickness 行首个活动项；将 Fuse 工具锁定为与厚度实体有重叠的 `8 -> 7 -> 8` 偏移轨迹，避免默认断开 Compound，并执行真实 `BRepAlgoAPI_Fuse`、恢复与 FCStd 三阶段采样。

#### 完成证据

`thickness->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Thickness 为有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `187.456`、面积 `953.28` 和 38 条原生 history。
- 下游真实 `BRepAlgoAPI_Fuse` 结果为有效 1 Solid、19 Face、47 Edge、30 Vertex、体积 `304.776`、面积 `1055.6` 和 58 条原生 history。
- `8 -> 7 -> 8` 工具偏移轨迹使体积在 `304.776 -> 300.936 -> 304.776` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming；FCStd 三阶段稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `394`，唯一新活动项为 `TSN-PAIR-thickness-cut`。

### `TSN-PAIR-thickness-cut`

#### 执行过程

1. 从机器队列领取唯一活动项；使用真实 `BRepAlgoAPI_Cut` 和默认内部工具的 `4 -> 3 -> 4` 尺寸轨迹，采集厚度壳体的切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Cut` 结果为有效 1 Solid、15 Face、42 Edge、28 Vertex、体积 `175.296`、面积 `901.76` 和 54 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `175.296 -> 180.736 -> 175.296` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming；FCStd 三阶段稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `395`，唯一新活动项为 `TSN-PAIR-thickness-common`。

### `TSN-PAIR-thickness-common`

#### 执行过程

1. 从机器队列领取唯一活动项；将 Common 工具锁定为有实体交叠的 `7 -> 6 -> 7` 偏移轨迹，使用真实 `BRepAlgoAPI_Common` 采集交集、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Common` 结果为有效 1 Solid、8 Face、18 Edge、12 Vertex、体积 `11.52`、面积 `67.68` 和 203 条原生 history。
- `7 -> 6 -> 7` 工具偏移轨迹使体积在 `11.52 -> 15.36 -> 11.52` 间变化；恢复态精确回到名义 Shape、history hash 和语义 naming，FCStd 三阶段稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `396`，唯一新活动项为 `TSN-PAIR-thickness-rotate`。

### `TSN-PAIR-thickness-rotate`

#### 执行过程

1. 从机器队列领取唯一活动项；使用真实 `BRepBuilderAPI_Transform` 对 Thickness 实体执行 `15 -> 22.5 -> 15` 角度轨迹，采集刚体边界变化、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform` 保持有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `187.456`、面积 `953.28`，生成 155 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹改变包围盒后精确恢复名义 Shape、history hash 和语义 naming；FCStd save/reopen/resave 三阶段保持稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `397`，唯一新活动项为 `TSN-PAIR-thickness-pad`。

### `TSN-PAIR-thickness-pad`

#### 执行过程

1. 从机器队列领取唯一活动项；以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并使用真实 `PartDesign::Pad` 重算、事务回滚和干净 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`thickness->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakePrism` 的 `5 -> 7.5 -> 5` 三次尝试均在 builder 阶段稳定拒绝，不产出 result、Shape 或 history。
- 真实 FreeCAD `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 前后只保留 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全一致；FCStd save/reopen/resave 三阶段无临时 Body/Pad 污染。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `398`，唯一新活动项为 `TSN-PAIR-thickness-pocket`。

### `TSN-PAIR-thickness-pocket`

#### 执行过程

1. 从最新队列领取唯一活动项；使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集厚度实体的切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 结果为有效 1 Solid、14 Face、39 Edge、26 Vertex、体积 `176.592`、面积 `906.32` 和 72 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `176.592 -> 178.432 -> 176.592` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `6cb05565...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `399`，唯一新活动项为 `TSN-PAIR-thickness-loft`。

### `TSN-PAIR-thickness-loft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，并用真实 `Part::Loft` 重算区分 OCCT kernel 能力与 FreeCAD 实体 profile 合同。

#### 完成证据

`thickness->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 的三次 ruled 尝试均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `750`、面积 `580.2775638` 和 24 条 history；恢复态一致，但只属于 kernel superset。
- FreeCAD 1.1.1 真实 `Part::Loft` 文档重算以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Thickness 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后仅保留有效 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全恢复；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `400`，唯一新活动项为 `TSN-PAIR-thickness-pipe`。

### `TSN-PAIR-thickness-pipe`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，并以真实 `Part::Sweep` 重算锁定最终 FreeCAD 合同。

#### 完成证据

`thickness->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 的三次尝试均返回无效 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0` 和 28 条 history；`15 -> 12 -> 15` 使面积 `500 -> 440 -> 500` 后恢复，kernel 结论为稳定 `invalid-result`。
- FreeCAD 1.1.1 真实 `Part::Sweep` 文档重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后仅保留有效 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全恢复；FCStd 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `401`，唯一新活动项为 `TSN-PAIR-thickness-revolution`。

### `TSN-PAIR-thickness-revolution`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并用真实 `Part::Revolution` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`thickness->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakeRevol` 对 Thickness 实体执行 `360 -> 270 -> 360`；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `Part::Revolution` 文档重算返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全一致；FCStd 三阶段无失败 Revolution 污染。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `402`，唯一新活动项为 `TSN-PAIR-thickness-groove`。

### `TSN-PAIR-thickness-groove`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集薄壁实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 结果为有效 1 Solid、16 Face、45 Edge、30 Vertex、体积 `184.9681824`、面积 `947.4500354` 和 29 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态回到 Thickness 源体积 `187.456` 和面积 `953.28`，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `3aeb7354...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `403`，唯一新活动项为 `TSN-PAIR-thickness-fillet`。

### `TSN-PAIR-thickness-fillet`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepFilletAPI_MakeFillet` 对 Thickness 边集合执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，并采集 FreeCAD profile、回滚与 FCStd 证据。

#### 完成证据

`thickness->fillet` 已完成原生 builder 拒绝与 FreeCAD 选边接受的分层分类：

- 原生 history WASM 对 Thickness 全边 Fillet 的首次真实执行触发 `null function or function signature mismatch`；锁定后的 `0.4 -> 0.6 -> 0.4` 三次 builder 轨迹均为无 result、无 Shape、无 history 的稳定 abort。
- 原始 FreeCAD 全边 fixture 同样触发 SIGSEGV；将真实 profile 输入收窄为 GUI/生产合同中的显式 `Edge1` 后，`Part::Fillet` 重算成功为有效 1 Solid、12 Face、27 Edge、18 Vertex、体积 `187.1126371`、面积 `951.4945127`。
- 事务 abort 后仅保留 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全恢复；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `404`，唯一新活动项为 `TSN-PAIR-thickness-chamfer`。

### `TSN-PAIR-thickness-chamfer`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepFilletAPI_MakeChamfer` 对 Thickness 边集合执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，先由实测 builder 结果决定分类。

#### 完成证据

`thickness->chamfer` 已完成原生 builder 拒绝与 FreeCAD 选边接受的分层分类：

- 原生 `BRepFilletAPI_MakeChamfer` 对 Thickness 全边距离轨迹 `0.4 -> 0.6 -> 0.4` 三次均以 Emscripten C++ exception 拒绝，不产出 result、Shape 或 history。
- FreeCAD 全边 fixture 在同一薄壁输入上触发原生 SIGSEGV；按 GUI 显式选边合同收窄为 `Edge1` 后，真实 `Part::Chamfer` 重算成功为有效 1 Solid、12 Face、27 Edge、18 Vertex、体积 `186.656`、面积 `950.7768542`。
- 事务 abort 后仅保留 Thickness 源对象，Shape 与 BREP hash `eafb7b89...` 完全恢复；FCStd 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `405`，唯一新活动项为 `TSN-PAIR-thickness-hole`。

### `TSN-PAIR-thickness-hole`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 结果为有效 1 Solid、13 Face、30 Edge、20 Vertex、体积 `184.9427259`、面积 `945.7401776` 和 28 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `184.9427259 -> 181.8011332 -> 184.9427259` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `6d68be45...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `406`，唯一新活动项为 `TSN-PAIR-thickness-draft`。

### `TSN-PAIR-thickness-draft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_DraftAngle` 对锁定薄壁面执行 `5 -> 8 -> 5` 角度轨迹，由有效 Shape 或原生拒绝决定分类。

#### 完成证据

`thickness->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepOffsetAPI_DraftAngle` 结果为有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `143.7116682`、面积 `936.164251` 和 5 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使体积在 `143.7116682 -> 117.1855826 -> 143.7116682` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `facf324c...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `407`，唯一新活动项为 `TSN-PAIR-thickness-thickness`。

### `TSN-PAIR-thickness-thickness`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_MakeThickSolid` 对已厚度实体执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹，由有效变异、no-op、invalid-result 或拒绝实测确定分类。

#### 完成证据

`thickness->thickness` 已完成 OCCT/FreeCAD 双层 no-op 分类：

- OCCT `BRepOffsetAPI_MakeThickSolid` 的 `-0.4 -> -0.6 -> -0.4` 三次尝试均返回与上游输入摘要完全一致的有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `187.456`、面积 `953.28` 和 1 条稳定 history。
- FreeCAD 1.1.1 真实 `Part::Thickness` 对 `Face2` 重算保持 `Valid/Up-to-date`，结果 Shape 与输入逐字段一致，明确归类为 no-op 而非 accepted mutation。
- 事务 abort 后源对象集与 BREP hash `eafb7b89...` 完全一致；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `408`，唯一新活动项为 `TSN-PAIR-thickness-linear-pattern`。

### `TSN-PAIR-thickness-linear-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 平移轨迹，采集薄壁实体阵列、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、29 Face、60 Edge、36 Vertex、体积 `344.192`、面积 `1722.24` 和 130 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使体积在 `344.192 -> 359.552 -> 344.192` 间变化，X 上界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `52354b96...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `409`，唯一新活动项为 `TSN-PAIR-thickness-polar-pattern`。

### `TSN-PAIR-thickness-polar-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹，采集拓扑、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`thickness->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、27 Face、66 Edge、42 Vertex、体积 `326.5688209`、面积 `1625.3550126` 和 152 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使体积在 `326.5688209 -> 339.6931926 -> 326.5688209` 间变化，history 与边界同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `60e3972b...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `410`，唯一新活动项为 `TSN-PAIR-thickness-mirrored`。

### `TSN-PAIR-thickness-mirrored`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `5 -> 6 -> 5` 平面轨迹，采集对称态、偏移态、恢复、naming 与 FCStd 证据。

#### 完成证据

`linear-pattern->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 的 x=5 结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240`、X 下界 `-8` 和 258 条原生 history。
- `5 -> 6 -> 5` 镜像面轨迹使编辑态变为 30 Face、60 Edge、32 Vertex、体积 `2400`、X 下界 `-6`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `02771940...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `430`，唯一新活动项为 `TSN-PAIR-linear-pattern-multi-transform`。

### `TSN-PAIR-linear-pattern-multi-transform`

#### 执行过程

1. 从最新机器队列领取 Linear Pattern 行最后一个活动项；扩展连续探针前缀，使用真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 执行 `8 -> 9 -> 8` 线性距离轨迹，并锁定后续镜像整个中间结果的顺序语义。

#### 完成证据

`linear-pattern->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 结果为有效 1 Solid、38 Face、76 Edge、40 Vertex、体积 `4200`、面积 `1880` 和 783 条原生 history。
- `8 -> 9 -> 8` 距离轨迹使编辑态变为 54 Face、108 Edge、56 Vertex、体积 `4400`、面积 `1960`，边界与 history 同步扩展；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `7770e81b...`。
- focused gate 与 `git diff --check` 通过；Linear Pattern 行 19/19 有序操作对全部闭合，队列完成项增加到 `431`，唯一新活动项为 `TSN-PAIR-polar-pattern-fuse`。

### Linear Pattern 行边界完整验证

#### 执行过程

1. 在跨入 Polar Pattern 行前运行完整 `./npmw run verify`，验证新增分类、no-op/BREP 重序列化合同、活动队列、构建、PWA、发布文件与签名闭环。

#### 完成证据

- 完整 `./npmw run verify` 通过：301 个逐对原生分类与 4 个既有生产转换覆盖、全套浏览器与单元测试、FCStd/几何/Sketch fuzz、生产构建、PWA、79 个发布文件、release closure 与 Ed25519 签名全部通过。
- 发布矩阵继续严格保持 `0 exact / 26 compatible / 5 proxy / 3 development`，系统级 `systemExact=false`；局部有序操作对闭合没有越权提升能力声明。

### `TSN-PAIR-polar-pattern-fuse`

#### 执行过程

1. 从完整验证后的最新机器队列领取 Polar Pattern 行首个活动项；扩展连续探针前缀，以真实上游旋转阵列和下游 `BRepAlgoAPI_Fuse` 工具执行变异、恢复、naming 与 FCStd 三阶段采样。首轮默认 x=12 工具与上游不相交，返回 2 Solid Compound 且无 history，被门禁正确阻止；将工具轨迹修正为真实相交的 `8 -> 7 -> 8` 后重跑。

#### 完成证据

`polar-pattern->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Polar Pattern 为有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 78 条原生 history。
- 下游真实 `BRepAlgoAPI_Fuse` 结果为有效 1 Solid、21 Face、46 Edge、27 Vertex、体积 `1497.6497308`、面积 `829.0598923` 和 64 条原生 history。
- x=`8 -> 7 -> 8` 工具轨迹使体积在 `1497.6497308 -> 1472.6497308 -> 1497.6497308` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming；FCStd 三阶段保持 naming evidence hash `7edcf077...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `432`，唯一新活动项为 `TSN-PAIR-polar-pattern-cut`。

### `TSN-PAIR-polar-pattern-cut`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepAlgoAPI_Cut` 执行 `4 -> 3 -> 4` 工具尺寸轨迹，采集旋转阵列切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Cut` 结果为有效 1 Solid、17 Face、41 Edge、26 Vertex、体积 `1358.6497308`、面积 `801.0598923` 和 34 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `1358.6497308 -> 1395.6497308 -> 1358.6497308` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `567c4970...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `433`，唯一新活动项为 `TSN-PAIR-polar-pattern-common`。

### `TSN-PAIR-polar-pattern-common`

#### 执行过程

1. 从最新机器队列领取唯一活动项；根据上游实测 X 上界 `10` 避免默认 x=10 的退化接触，以真实 `BRepAlgoAPI_Common` 执行 `7 -> 6 -> 7` 工具偏移轨迹，采集体积交集、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Common` 名义结果为有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `75`、面积 `110` 和 213 条原生 history。
- `7 -> 6 -> 7` 工具偏移轨迹使编辑态体积变为 `100`、面积变为 `130`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `726029e7...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `434`，唯一新活动项为 `TSN-PAIR-polar-pattern-rotate`。

### `TSN-PAIR-polar-pattern-rotate`

#### 执行过程

1. 从最新机器队列领取唯一活动项；使用真实 `BRepBuilderAPI_Transform` 执行 `15 -> 22.5 -> 15` 角度轨迹，采集刚体边界变化、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Polar Pattern 为有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 78 条原生 history。
- 下游真实 `BRepBuilderAPI_Transform` 保持有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923`，生成 168 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹改变包围盒但保持质量属性，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `0f073ae2...`。
- 单对原生探针、focused gate 与队列生成通过，队列完成项增加到 `435`，唯一新活动项为 `TSN-PAIR-polar-pattern-pad`。

### `TSN-PAIR-polar-pattern-pad`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并用真实 `PartDesign::Pad` 重算、事务回滚和 FCStd 三阶段锁定实体 Profile 拒绝合同。

#### 完成证据

`polar-pattern->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakePrism` 的三次长度尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 前后只保留有效 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全一致；FCStd save/reopen/resave 三阶段无临时 Body/Pad 污染。
- focused gate 与队列生成通过，队列完成项增加到 `436`，唯一新活动项为 `TSN-PAIR-polar-pattern-pocket`。

### `TSN-PAIR-polar-pattern-pocket`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集阵列实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 结果为有效 1 Solid、16 Face、38 Edge、24 Vertex、体积 `1392.6497308`、面积 `799.0598923` 和 55 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `1392.6497308 -> 1398.6497308 -> 1392.6497308` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `c0fb0f57...`。
- focused gate 与队列生成通过，队列完成项增加到 `437`，唯一新活动项为 `TSN-PAIR-polar-pattern-loft`。

### `TSN-PAIR-polar-pattern-loft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，并用真实 `Part::Loft` 重算区分 OCCT kernel 能力与 FreeCAD 实体 section 合同。

#### 完成证据

`polar-pattern->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 的三次 ruled 尝试均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、面积 `556.1837862` 和 24 条 history；恢复态一致，但只属于 kernel superset。
- FreeCAD 1.1.1 真实 `Part::Loft` 重算以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Polar Pattern 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留有效 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全恢复；FCStd 三阶段干净稳定。
- focused gate 与队列生成通过，队列完成项增加到 `438`，唯一新活动项为 `TSN-PAIR-polar-pattern-pipe`。

### `TSN-PAIR-polar-pattern-pipe`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，并以真实 `Part::Sweep` 重算锁定最终 FreeCAD 合同。

#### 完成证据

`polar-pattern->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 三次尝试均返回无效 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0`；`15 -> 12 -> 15` 使面积 `500 -> 440 -> 500` 后恢复，kernel 结论为稳定 `invalid-result`。
- FreeCAD 1.1.1 真实 `Part::Sweep` 重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后仅保留有效 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全恢复；FCStd 三阶段干净稳定。
- focused gate 与队列生成通过，队列完成项增加到 `439`，唯一新活动项为 `TSN-PAIR-polar-pattern-revolution`。

### `TSN-PAIR-polar-pattern-revolution`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并用真实 `Part::Revolution` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`polar-pattern->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakeRevol` 的三次角度尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `Part::Revolution` 重算返回该拓扑特有的 `BRep_API: command not done`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid；检查器据原生事实锁定该诊断，没有套用其他实体的通用文本。
- 事务 abort 前后只保留 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全一致；FCStd 三阶段无失败 Revolution 污染。
- focused gate 与队列生成通过，队列完成项增加到 `440`，唯一新活动项为 `TSN-PAIR-polar-pattern-groove`。

### `TSN-PAIR-polar-pattern-groove`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集旋转阵列实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Groove 结果为有效 1 Solid、16 Face、41 Edge、26 Vertex、体积 `1413.279598`、面积 `787.2071345` 和 23 条原生 history。
- `360 -> 180 -> 360` 角度轨迹使编辑态回到 Polar Pattern 源体积与面积，但拓扑与 history 同步改变；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `bbb3977c...`。
- focused gate 与队列生成通过，队列完成项增加到 `441`，唯一新活动项为 `TSN-PAIR-polar-pattern-fillet`。

### `TSN-PAIR-polar-pattern-fillet`

#### 执行过程

1. 从最新机器队列领取唯一活动项；首次按接受路径运行真实 `BRepFilletAPI_MakeFillet`，原生 WASM 在构造阶段崩溃，门禁 fail-closed；随后显式转为拒绝探针，重复 `0.4 -> 0.6 -> 0.4` 并采集 FreeCAD 文档重算、事务回滚与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->fillet` 已完成真实 FreeCAD/OCCT 拒绝分类：

- OCCT 全边 `BRepFilletAPI_MakeFillet` 的三次半径尝试均在 builder 阶段稳定触发 `null function or function signature mismatch`，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `Part::Fillet` 对全部 26 条边重算返回 `BRep_API: command not done`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全一致；FCStd 三阶段无失败 Fillet 污染。
- focused gate 与队列生成通过，队列完成项增加到 `442`，唯一新活动项为 `TSN-PAIR-polar-pattern-chamfer`。

### `TSN-PAIR-polar-pattern-chamfer`

#### 执行过程

1. 从最新机器队列领取唯一活动项；首次按接受路径运行真实 `BRepFilletAPI_MakeChamfer` 时 builder 抛出原生 C++ exception，门禁 fail-closed；随后显式转为拒绝探针，执行 `0.4 -> 0.6 -> 0.4` 并采集 FreeCAD 文档重算、事务回滚和 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->chamfer` 已完成真实 FreeCAD/OCCT 拒绝分类：

- OCCT 全边 `BRepFilletAPI_MakeChamfer` 的三次距离尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `Part::Chamfer` 对全部 26 条边重算返回 `BRep_API: command not done`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Polar Pattern 源对象，Shape 与 BREP hash `35c40a35...` 完全一致；FCStd 三阶段无失败 Chamfer 污染。
- focused gate 与队列生成通过，队列完成项增加到 `443`，唯一新活动项为 `TSN-PAIR-polar-pattern-hole`。

### `TSN-PAIR-polar-pattern-hole`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Hole 结果为有效 1 Solid、13 Face、29 Edge、18 Vertex、体积 `1391.2338043`、面积 `825.6085601` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `1391.2338043 -> 1351.9638961 -> 1391.2338043` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `82648785...`。
- focused gate 与队列生成通过，队列完成项增加到 `444`，唯一新活动项为 `TSN-PAIR-polar-pattern-draft`。

### `TSN-PAIR-polar-pattern-draft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；首次按接受路径运行真实 `BRepOffsetAPI_DraftAngle` 时 builder 抛出原生 C++ exception，门禁 fail-closed；随后切换为拒绝探针，执行 `5 -> 8 -> 5` 并采集真实 `PartDesign::Draft` 重算、Shape 转移、事务回滚和 FCStd 三阶段证据。

#### 完成证据

`polar-pattern->draft` 已完成真实 FreeCAD/OCCT 拒绝分类：

- OCCT Draft 的三次角度尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `PartDesign::Draft` 通过 `DraftBase` 接收逐字段一致的 Shape 摘要，但 BREP 明确重序列化；重算状态为 `Touched/Invalid`、Shape 为 null/invalid，诊断字符串为空，均被检查器精确锁定。
- 事务 abort 后源对象集、Shape 摘要与原始 BREP hash `35c40a35...` 完全恢复；FCStd 三阶段无 DraftBase、Datum 或失败 Draft 污染。
- focused gate 与队列生成通过，队列完成项增加到 `445`，唯一新活动项为 `TSN-PAIR-polar-pattern-thickness`。

### `TSN-PAIR-polar-pattern-thickness`

#### 执行过程

1. 从最新机器队列领取唯一活动项；接受路径因 `-0.4 -> -0.6 -> -0.4` 三阶段 Shape/history 不变而 fail-closed，随后转入显式 `occt-no-op` 分支。STEP 往返带来单个边界值 `1e-7` 的重序列化差异，因此新增仅对该任务启用的“拓扑精确 + 几何度量 `1e-6` 容差”no-op 合同，并采集 FreeCAD 文档状态与回滚证据。

#### 完成证据

`polar-pattern->thickness` 已完成 OCCT/FreeCAD 双层 no-op 分类：

- OCCT `BRepOffsetAPI_MakeThickSolid` 的三次 offset 尝试均返回有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 1 条稳定 history；参数变异没有产生厚壳效果。
- 输出与输入仅在 Y 上界存在约 `1e-7` 的 STEP 数值重序列化，检查器显式要求 `noOpComparison=topology-and-metrics-within-1e-6`，未把该漂移隐藏为逐字段 exact。
- FreeCAD 1.1.1 真实 `Part::Thickness` 对 `Face2` 重算保持 `Valid/Up-to-date`，结果 Shape 摘要与输入一致；事务 abort 后几何双向差体积为零，但 BREP hash 从 `35c40a35...` 变为 `3258844f...`，该重序列化已明确分类。
- focused gate 与队列生成通过，队列完成项增加到 `446`，唯一新活动项为 `TSN-PAIR-polar-pattern-linear-pattern`。

### `TSN-PAIR-thickness-multi-transform`

#### 执行过程

1. 从最新机器队列领取 Thickness 行最后一个活动项；扩展连续探针前缀，使用真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 执行 `8 -> 9 -> 8` 线性距离轨迹，并锁定后续镜像整个中间结果的顺序语义。

#### 完成证据

`thickness->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 结果为有效 1 Solid、50 Face、104 Edge、64 Vertex、体积 `534.784`、面积 `2645.76` 和 714 条原生 history。
- `8 -> 9 -> 8` 距离轨迹使编辑态体积变为 `565.504`、面积变为 `2799.36`，边界同步扩展；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `9b00aefd...`。
- focused gate 与 `git diff --check` 通过；Thickness 行 19/19 有序操作对全部闭合，队列完成项增加到 `412`，唯一新活动项为 `TSN-PAIR-linear-pattern-fuse`。

### Thickness 行边界完整验证

#### 执行过程

1. 在跨入 Linear Pattern 行前运行完整 `./npmw run verify`，验证新增分类、原生崩溃/选边分层合同、活动队列、构建、PWA、发布文件与签名闭环。

#### 完成证据

- 完整 `./npmw run verify` 通过：282 个逐对原生分类与 4 个既有生产转换覆盖、全套浏览器与单元测试、FCStd/几何/Sketch fuzz、生产构建、PWA、79 个发布文件、release closure 与 Ed25519 签名全部通过。
- 发布矩阵继续严格保持 `0 exact / 26 compatible / 5 proxy / 3 development`，系统级 `systemExact=false`；局部有序操作对闭合没有越权提升能力声明。

### `TSN-PAIR-linear-pattern-fuse`

#### 执行过程

1. 从最新机器队列领取 Linear Pattern 行首个活动项；扩展连续探针前缀，以真实上游平移阵列和下游 `BRepAlgoAPI_Fuse` 工具执行变异、恢复、naming 与 FCStd 三阶段采样。

#### 完成证据

`linear-pattern->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Linear Pattern 为有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1800`、面积 `920` 和 66 条原生 history。
- 默认工具完全位于上游实体内部而成为 no-op；将下游 Fuse 工具修正为部分越出实体的 `16 -> 15 -> 16` 偏移轨迹后，名义结果体积 `1875`、编辑态体积 `1850`，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游真实 `BRepAlgoAPI_Fuse` 结果为有效 1 Solid、21 Face、45 Edge、26 Vertex 和 52 条原生 history；FCStd 三阶段保持 Shape 及 naming evidence hash `2834ea3b...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `413`，唯一新活动项为 `TSN-PAIR-linear-pattern-cut`。

### `TSN-PAIR-linear-pattern-cut`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepAlgoAPI_Cut` 执行 `4 -> 3 -> 4` 工具尺寸轨迹，采集阵列实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Cut` 结果为有效 1 Solid、18 Face、40 Edge、24 Vertex、体积 `1736`、面积 `952` 和 22 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使体积在 `1736 -> 1773 -> 1736` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `2c8836f5...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `414`，唯一新活动项为 `TSN-PAIR-linear-pattern-common`。

### `TSN-PAIR-linear-pattern-common`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepAlgoAPI_Common` 执行 `10 -> 9 -> 10` 工具偏移轨迹，采集交集、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Common` 名义结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `125`、面积 `150` 和 205 条原生 history。
- `10 -> 9 -> 10` 工具偏移轨迹保持体积 `125`，但编辑态变为 8 Face、17 Edge、11 Vertex，边界与 history 同步改变；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `655fa2c5...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `415`，唯一新活动项为 `TSN-PAIR-linear-pattern-rotate`。

### `TSN-PAIR-linear-pattern-rotate`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepBuilderAPI_Transform` 执行 `15 -> 22.5 -> 15` 角度轨迹，采集刚体边界变化、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepBuilderAPI_Transform` 保持有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1800`、面积 `920`，生成 182 条原生 history。
- `15 -> 22.5 -> 15` 角度轨迹改变包围盒但保持质量属性，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `aceb3c19...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `416`，唯一新活动项为 `TSN-PAIR-linear-pattern-pad`。

### `TSN-PAIR-linear-pattern-pad`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并用真实 `PartDesign::Pad` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`linear-pattern->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakePrism` 的 `5 -> 7.5 -> 5` 三次尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 前后仅保留 Linear Pattern 源对象，Shape 与 BREP hash `3294bb87...` 完全一致；FCStd save/reopen/resave 三阶段无临时 Body/Pad 污染。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `417`，唯一新活动项为 `TSN-PAIR-linear-pattern-pocket`。

### `TSN-PAIR-linear-pattern-pocket`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集阵列实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 结果为有效 1 Solid、17 Face、37 Edge、22 Vertex、体积 `1770`、面积 `920` 和 42 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使体积在 `1770 -> 1776 -> 1770` 间变化，恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `b06bd539...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `418`，唯一新活动项为 `TSN-PAIR-linear-pattern-loft`。

### `TSN-PAIR-linear-pattern-loft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，并用真实 `Part::Loft` 重算区分 OCCT kernel 能力与 FreeCAD 实体 section 合同。

#### 完成证据

`linear-pattern->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 的三次 ruled 尝试均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `750`、面积 `580.2775638` 和 24 条 history；恢复态一致，但只属于 kernel superset。
- FreeCAD 1.1.1 真实 `Part::Loft` 文档重算以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Linear Pattern 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后仅保留有效 Linear Pattern 源对象，Shape 与 BREP hash `3294bb87...` 完全恢复；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `419`，唯一新活动项为 `TSN-PAIR-linear-pattern-pipe`。

### `TSN-PAIR-linear-pattern-pipe`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，并以真实 `Part::Sweep` 重算锁定最终 FreeCAD 合同。

#### 完成证据

`linear-pattern->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 的三次尝试均返回无效 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0` 和 28 条 history；`15 -> 12 -> 15` 使面积 `500 -> 440 -> 500` 后恢复，kernel 结论为稳定 `invalid-result`。
- FreeCAD 1.1.1 真实 `Part::Sweep` 文档重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后仅保留有效 Linear Pattern 源对象，Shape 与 BREP hash `3294bb87...` 完全恢复；FCStd 三阶段干净稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `420`，唯一新活动项为 `TSN-PAIR-linear-pattern-revolution`。

### `TSN-PAIR-linear-pattern-revolution`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并用真实 `Part::Revolution` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`linear-pattern->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游真实 `BRepPrimAPI_MakeRevol` 对 Linear Pattern 实体执行 `360 -> 270 -> 360`；三次均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 真实 `Part::Revolution` 文档重算返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Linear Pattern 源对象，Shape 与 BREP hash `3294bb87...` 完全一致；FCStd 三阶段无失败 Revolution 污染。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `421`，唯一新活动项为 `TSN-PAIR-linear-pattern-groove`。

### `TSN-PAIR-linear-pattern-groove`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，使用真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集阵列实体切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 结果为有效 1 Solid、18 Face、40 Edge、24 Vertex、体积 `1795.287611`、面积 `926.5663706` 和 18 条原生 history。
- `360 -> 180 -> 360` 角度轨迹使编辑态回到 Linear Pattern 源体积 `1800` 和面积 `920`，但拓扑与 history 同步改变；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `1200720c...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `422`，唯一新活动项为 `TSN-PAIR-linear-pattern-fillet`。

### `TSN-PAIR-linear-pattern-fillet`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepFilletAPI_MakeFillet` 对 Linear Pattern 边集合执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，先由实测 builder 结果决定分类。

#### 完成证据

`linear-pattern->fillet` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepFilletAPI_MakeFillet` 结果为有效 1 Solid、42 Face、88 Edge、40 Vertex、体积 `1794.8665943`、面积 `893.7231781` 和 270 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使体积在 `1794.8665943 -> 1788.5462621 -> 1794.8665943` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `b22c4cbd...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `423`，唯一新活动项为 `TSN-PAIR-linear-pattern-chamfer`。

### `TSN-PAIR-linear-pattern-chamfer`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepFilletAPI_MakeChamfer` 对 Linear Pattern 边集合执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，先由实测 builder 结果决定分类。

#### 完成证据

`linear-pattern->chamfer` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepFilletAPI_MakeChamfer` 结果为有效 1 Solid、42 Face、80 Edge、40 Vertex、体积 `1788.1813333`、面积 `883.902117` 和 270 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使体积在 `1788.1813333 -> 1773.792 -> 1788.1813333` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `a68b7d31...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `424`，唯一新活动项为 `TSN-PAIR-linear-pattern-hole`。

### `TSN-PAIR-linear-pattern-hole`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、恢复、naming 与 FCStd 三阶段证据。

#### 完成证据

`linear-pattern->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 结果为有效 1 Solid、15 Face、31 Edge、18 Vertex、体积 `1768.5840735`、面积 `976.5486678` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使体积在 `1768.5840735 -> 1729.3141653 -> 1768.5840735` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `c92719e0...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `425`，唯一新活动项为 `TSN-PAIR-linear-pattern-draft`。

### `TSN-PAIR-linear-pattern-draft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_DraftAngle` 对锁定阵列面执行 `5 -> 8 -> 5` 角度轨迹，由有效 Shape 或原生拒绝决定分类。

#### 完成证据

`linear-pattern->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepOffsetAPI_DraftAngle` 结果为有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1756.2556682`、面积 `902.884251` 和 5 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使体积在 `1756.2556682 -> 1729.7295826 -> 1756.2556682` 间变化，面积同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游为无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `43f06ae0...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `426`，唯一新活动项为 `TSN-PAIR-linear-pattern-thickness`。

### `TSN-PAIR-linear-pattern-thickness`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实 `BRepOffsetAPI_MakeThickSolid` 对阵列实体执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹，由有效变异、no-op、invalid-result 或拒绝实测确定分类。首次按 accepted mutation 运行因三阶段 Shape/history 完全不变而 fail-closed，随后显式转入 `occt-no-op` 分支采集 FreeCAD 文档合同。

#### 完成证据

`linear-pattern->thickness` 已完成 OCCT/FreeCAD 双层 no-op 分类：

- OCCT `BRepOffsetAPI_MakeThickSolid` 的 `-0.4 -> -0.6 -> -0.4` 三次尝试均返回与上游输入摘要完全一致的有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1800`、面积 `920` 和 1 条稳定 history。
- FreeCAD 1.1.1 真实 `Part::Thickness` 对 `Face2` 重算保持 `Valid/Up-to-date`，结果 Shape 与输入逐字段一致，明确归类为 no-op 而非 accepted mutation。
- 事务 abort 后源 Shape 的几何、拓扑摘要与双向对称差体积精确恢复，但 FreeCAD 明确重序列化 BREP，hash 从 `3294bb87...` 变为 `aa2fbaf6...`；FCStd save/reopen/resave 三阶段稳定。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `427`，唯一新活动项为 `TSN-PAIR-linear-pattern-linear-pattern`。

### `TSN-PAIR-linear-pattern-linear-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以第二次真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 平移轨迹，采集重复阵列的顺序几何、恢复、naming 与 FCStd 证据。

#### 完成证据

`linear-pattern->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游第二次真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240`、X 上界 `26` 和 258 条原生 history。
- `8 -> 9 -> 8` 平移轨迹使编辑态变为 30 Face、60 Edge、32 Vertex、体积 `2700`、X 上界 `27`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `d86c008d...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `428`，唯一新活动项为 `TSN-PAIR-linear-pattern-polar-pattern`。

### `TSN-PAIR-linear-pattern-polar-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹，采集顺序阵列几何、恢复、naming 与 FCStd 证据。

#### 完成证据

`linear-pattern->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 结果为有效 1 Solid、34 Face、74 Edge、42 Vertex、体积 `2745.5216016`、面积 `1227.4462449` 和 190 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使编辑态变为 31 Face、65 Edge、36 Vertex、体积 `3100`、面积 `1398.5786438`，边界与 history 同步变化；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `786f8db0...`。
- focused gate 与 `git diff --check` 通过，队列完成项增加到 `429`，唯一新活动项为 `TSN-PAIR-linear-pattern-mirrored`。

### `TSN-PAIR-linear-pattern-mirrored`

#### 执行过程

1. 从最新机器队列领取唯一活动项；扩展连续探针前缀，以真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `5 -> 6 -> 5` 平面轨迹，采集对称态、偏移态、恢复、naming 与 FCStd 证据。

#### 完成证据

`linear-pattern->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游镜像与 Fuse 结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 258 条原生 history。
- `5 -> 6 -> 5` 平面轨迹使编辑态变为 30 Face、60 Edge、32 Vertex、体积 `2400`、面积 `1160`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `027719405b2d...`。
- focused gate 通过，队列完成项增加到 `430`，唯一新活动项为 `TSN-PAIR-linear-pattern-multi-transform`。

### `TSN-PAIR-linear-pattern-multi-transform`

#### 执行过程

1. 扩展连续探针前缀，以有序的真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 多变换平移轨迹，采集顺序几何、恢复、naming 与 FCStd 证据。

#### 完成证据

`linear-pattern->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游有序多变换结果为有效 1 Solid、38 Face、76 Edge、40 Vertex、体积 `4200`、面积 `1880` 和 783 条原生 history。
- `8 -> 9 -> 8` 轨迹使编辑态变为 54 Face、108 Edge、56 Vertex、体积 `4400`、面积 `1960`；恢复态精确回到名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd 三阶段保持 Shape 及 naming evidence hash `7770e81b7b87...`。
- focused gate 通过，队列完成项增加到 `431`，唯一新活动项为 `TSN-PAIR-polar-pattern-fuse`。

### `TSN-PAIR-polar-pattern-fuse`

#### 执行过程

1. 进入 Polar Pattern 行，以真实 `BRepAlgoAPI_Fuse` 执行 `8 -> 7 -> 8` 工具偏移轨迹，采集布尔、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Fuse 结果为有效 1 Solid、21 Face、46 Edge、27 Vertex、体积 `1497.6497308`、面积 `829.0598923` 和 64 条原生 history。
- `8 -> 7 -> 8` 轨迹使体积在 `1497.6497308 -> 1472.6497308 -> 1497.6497308` 间变化，恢复态精确返回名义 Shape、history hash 和语义 naming。
- FCStd 三阶段保持 Shape 及 naming evidence hash `7edcf0776ed0...`；队列完成项增加到 `432`，唯一新活动项为 `TSN-PAIR-polar-pattern-cut`。

### `TSN-PAIR-polar-pattern-cut`

#### 执行过程

1. 以真实 `BRepAlgoAPI_Cut` 执行 `4 -> 3 -> 4` 工具尺寸轨迹，采集切除、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Cut 结果为有效 1 Solid、17 Face、41 Edge、26 Vertex、体积 `1358.6497308`、面积 `801.0598923` 和 34 条原生 history。
- `4 -> 3 -> 4` 轨迹使体积在 `1358.6497308 -> 1395.6497308 -> 1358.6497308` 间变化，恢复态精确返回名义证据。
- FCStd 三阶段保持 Shape 及 naming evidence hash `567c4970bb66...`；队列完成项增加到 `433`，唯一新活动项为 `TSN-PAIR-polar-pattern-common`。

### `TSN-PAIR-polar-pattern-common`

#### 执行过程

1. 以真实 `BRepAlgoAPI_Common` 执行 `7 -> 6 -> 7` 工具偏移轨迹，采集交集、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Common 结果为有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `75`、面积 `110` 和 213 条原生 history。
- `7 -> 6 -> 7` 轨迹使编辑态体积变为 `100`、面积变为 `130`，恢复态精确返回名义证据。
- FCStd 三阶段保持 Shape 及 naming evidence hash `726029e76f1c...`；队列完成项增加到 `434`，唯一新活动项为 `TSN-PAIR-polar-pattern-rotate`。

### `TSN-PAIR-polar-pattern-rotate`

#### 执行过程

1. 以真实 `BRepBuilderAPI_Transform` 执行 `15 -> 22.5 -> 15` 角度轨迹，采集刚体边界变化、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Rotate 保持有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923`，并生成 168 条原生 history。
- 角度轨迹改变包围盒而保持质量属性，恢复态精确返回名义 Shape、history hash 和语义 naming。
- FCStd 三阶段保持 Shape 及 naming evidence hash `0f073ae2b76e...`；队列完成项增加到 `435`，唯一新活动项为 `TSN-PAIR-polar-pattern-pad`。

### `TSN-PAIR-polar-pattern-pad`

#### 执行过程

1. 以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并用真实 `PartDesign::Pad` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`polar-pattern->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游 Prism builder 的三次尝试均以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 前后仅保留 Polar Pattern 源对象，Shape 与 BREP hash `35c40a356cdc...` 恢复；FCStd 三阶段无失败 Pad 污染。
- focused gate 通过，队列完成项增加到 `436`，唯一新活动项为 `TSN-PAIR-polar-pattern-pocket`。

### `TSN-PAIR-polar-pattern-pocket`

#### 执行过程

1. 以真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集切除、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Pocket 结果为有效 1 Solid、16 Face、38 Edge、24 Vertex、体积 `1392.6497308`、面积 `799.0598923` 和 55 条原生 history。
- `5 -> 4 -> 5` 轨迹使编辑态体积变为 `1398.6497308`、面积变为 `793.0598923`，恢复态精确返回名义证据。
- FCStd 三阶段保持 Shape 及 naming evidence hash `c0fb0f578a88...`；队列完成项增加到 `437`，唯一新活动项为 `TSN-PAIR-polar-pattern-loft`。

### `TSN-PAIR-polar-pattern-loft`

#### 执行过程

1. 以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，并用真实 `Part::Loft` 重算锁定 FreeCAD 实体 section 合同。

#### 完成证据

`polar-pattern->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 生成有效 1 Solid、6 Face、12 Edge、8 Vertex 和 24 条 history，恢复态一致，但该结果只属于 kernel superset。
- FreeCAD 1.1.1 `Part::Loft` 以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Polar Pattern 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段干净稳定；队列完成项增加到 `438`，唯一新活动项为 `TSN-PAIR-polar-pattern-pipe`。

### `TSN-PAIR-polar-pattern-pipe`

#### 执行过程

1. 以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，并用真实 `Part::Sweep` 重算锁定最终 FreeCAD 合同。

#### 完成证据

`polar-pattern->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT Pipe 三次均返回无效 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0` 和 28 条 history，并在参数恢复后精确返回名义无效结果。
- FreeCAD 1.1.1 `Part::Sweep` 返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段干净稳定；队列完成项增加到 `439`，唯一新活动项为 `TSN-PAIR-polar-pattern-revolution`。

### `TSN-PAIR-polar-pattern-revolution`

#### 执行过程

1. 以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并用真实 `Part::Revolution` 重算、回滚和 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`polar-pattern->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- Revol builder 三次均以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `Part::Revolution` 重算返回 `BRep_API: command not done`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段无失败 Revolution 污染；队列完成项增加到 `440`，唯一新活动项为 `TSN-PAIR-polar-pattern-groove`。

### `TSN-PAIR-polar-pattern-groove`

#### 执行过程

1. 以真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集旋转减料、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Groove 结果为有效 1 Solid、16 Face、41 Edge、26 Vertex、体积 `1413.279598`、面积 `787.2071345` 和 23 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态变为 14 Face、36 Edge、25 Vertex，质量属性回到上游值；恢复态精确返回名义证据。
- FCStd 三阶段保持 Shape 及 naming evidence hash `bbb3977c389a...`；队列完成项增加到 `441`，唯一新活动项为 `TSN-PAIR-polar-pattern-fillet`。

### `TSN-PAIR-polar-pattern-fillet`

#### 执行过程

1. 以真实 `BRepFilletAPI_MakeFillet` 对 Polar Pattern 全边执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，并用真实 `Part::Fillet` 验证失败回滚。

#### 完成证据

`polar-pattern->fillet` 已完成真实 FreeCAD/OCCT 拒绝分类：

- Fillet builder 三次均在 builder 阶段以稳定 Emscripten wasm abort `null function or function signature mismatch` 拒绝，不产出 Shape 或 history。
- FreeCAD 1.1.1 `Part::Fillet` 重算返回 `BRep_API: command not done`，状态为 `Touched/Invalid`。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段干净稳定；队列完成项增加到 `442`，唯一新活动项为 `TSN-PAIR-polar-pattern-chamfer`。

### `TSN-PAIR-polar-pattern-chamfer`

#### 执行过程

1. 以真实 `BRepFilletAPI_MakeChamfer` 对 Polar Pattern 全边执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，并用真实 `Part::Chamfer` 验证失败回滚。

#### 完成证据

`polar-pattern->chamfer` 已完成真实 FreeCAD/OCCT 拒绝分类：

- Chamfer builder 三次均在 builder 阶段以稳定 Emscripten C++ exception 拒绝，不产出 Shape 或 history。
- FreeCAD 1.1.1 `Part::Chamfer` 重算返回 `BRep_API: command not done`，状态为 `Touched/Invalid`。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段干净稳定；队列完成项增加到 `443`，唯一新活动项为 `TSN-PAIR-polar-pattern-hole`。

### `TSN-PAIR-polar-pattern-hole`

#### 执行过程

1. 以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Hole 结果为有效 1 Solid、13 Face、29 Edge、18 Vertex、体积 `1391.2338043`、面积 `825.6085601` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 轨迹使编辑态体积变为 `1351.9638961`、面积变为 `849.170505`，恢复态精确返回名义证据。
- 下游获得无歧义 `native-evidence` naming；FCStd 三阶段保持 Shape 及 naming evidence hash `826487854eec...`。
- focused gate 通过，队列完成项增加到 `444`，唯一新活动项为 `TSN-PAIR-polar-pattern-draft`。

### `TSN-PAIR-polar-pattern-draft`

#### 执行过程

1. 以真实 `BRepOffsetAPI_DraftAngle` 对锁定阵列面执行 `5 -> 8 -> 5` 角度轨迹，并用真实 `PartDesign::Draft` 重算锁定失败合同。

#### 完成证据

`polar-pattern->draft` 已完成真实 FreeCAD/OCCT 拒绝分类：

- Draft builder 的三次尝试均以 Emscripten C++ exception 稳定拒绝，不产出 Shape 或 history。
- FreeCAD 1.1.1 `PartDesign::Draft` 产出 null/invalid Shape 和 `Touched/Invalid` 状态，无伪造成功结果。
- abort 后源 Shape 与 BREP hash `35c40a356cdc...` 恢复，FCStd 三阶段干净稳定；队列完成项增加到 `445`，唯一新活动项为 `TSN-PAIR-polar-pattern-thickness`。

### `TSN-PAIR-polar-pattern-thickness`

#### 执行过程

1. 以真实 `BRepOffsetAPI_MakeThickSolid` 执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹，并通过真实 `Part::Thickness` 重算区分接受变异与 no-op。

#### 完成证据

`polar-pattern->thickness` 已完成 OCCT/FreeCAD 双层 no-op 分类：

- OCCT ThickSolid 三次均返回与上游输入摘要一致的有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 1 条稳定 history。
- FreeCAD 1.1.1 `Part::Thickness` 保持 `Valid/Up-to-date`，结果 Shape 与输入摘要一致，明确归类为 no-op。
- abort 后几何和拓扑摘要精确恢复，但 FreeCAD 重序列化 BREP，hash 从 `35c40a356cdc...` 变为 `3258844f37ad...`；FCStd 三阶段稳定。
- focused gate 通过，队列完成项增加到 `446`，唯一新活动项为 `TSN-PAIR-polar-pattern-linear-pattern`。

### `TSN-PAIR-polar-pattern-linear-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；以真实平移 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 轨迹，采集顺序阵列几何、恢复、naming 与 FCStd 证据。

#### 完成证据

`polar-pattern->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Linear Pattern 结果为有效 1 Solid、36 Face、78 Edge、44 Vertex、体积 `2376.9059892`、面积 `1149.1931763` 和 175 条原生 history。
- `8 -> 9 -> 8` 轨迹使编辑态变为 33 Face、71 Edge、40 Vertex、体积 `2477.3502692`、面积 `1190.9401077`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd 三阶段保持 Shape 及 naming evidence hash `fa130287b001...`。
- `./npmw run check:freecad-ordered-operation-pairs` 通过，队列完成项增加到 `447`，唯一新活动项为 `TSN-PAIR-polar-pattern-polar-pattern`。

### `TSN-PAIR-polar-pattern-polar-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，以第二次真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹。
2. 首次聚焦检查仅因汇总锁停在 317 项而失败；将汇总同步为已分类 318、接受 230、拒绝 88、剩余 43 后重跑通过。

#### 完成证据

`polar-pattern->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游第二次 Polar Pattern 结果为有效 1 Solid、20 Face、44 Edge、26 Vertex、体积 `1845.2994616`、面积 `938.1197846` 和 228 条原生 history。
- `30 -> 45 -> 30` 轨迹使编辑态变为 30 Face、66 Edge、38 Vertex、体积 `2077.9724736`、面积 `1031.1889895`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `47e7c088e25a...`。
- focused gate 通过，队列完成项增加到 `448`，唯一新活动项为 `TSN-PAIR-polar-pattern-mirrored`。

### `TSN-PAIR-polar-pattern-mirrored`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，以真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `5 -> 6 -> 5` 平面轨迹。

#### 完成证据

`polar-pattern->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游 Mirrored 结果为有效 1 Solid、21 Face、47 Edge、28 Vertex、体积 `1834.9364905`、面积 `920.5771366` 和 250 条原生 history。
- `5 -> 6 -> 5` 轨迹使编辑态变为 32 Face、70 Edge、40 Vertex、体积 `2045.2994616`、面积 `1018.1197846`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `72f0a2e0f8fa...`。
- focused gate 通过，队列完成项增加到 `449`，唯一新活动项为 `TSN-PAIR-polar-pattern-multi-transform`。

### `TSN-PAIR-polar-pattern-multi-transform`

#### 执行过程

1. 从最新机器队列领取 Polar Pattern 行最后一项；将操作对加入连续探针前缀与聚焦检查器，以有序的真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 多变换平移轨迹。

#### 完成证据

`polar-pattern->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游有序 Multi Transform 结果为有效 1 Solid、115 Face、241 Edge、128 Vertex、体积 `3052.108193`、面积 `1415.9432402` 和 1187 条原生 history。
- `8 -> 9 -> 8` 轨迹使编辑态变为 91 Face、193 Edge、104 Vertex、体积 `3291.7085548`、面积 `1506.9573233`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `2fe760a0f6d3...`。
- focused gate 通过，队列完成项增加到 `450`，唯一新活动项为 `TSN-PAIR-mirrored-fuse`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；机器队列保持恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-fuse`

#### 执行过程

1. 从最新机器队列领取 Mirrored 行首项；将操作对加入连续探针前缀与聚焦检查器，首先以通用 `12 -> 11 -> 12` 工具偏移轨迹执行真实 `BRepAlgoAPI_Fuse`。
2. 首次探针 fail-closed：工具与上游实体脱离，OCCT 返回有效 2-Solid Compound、体积 `1125`，但 history 为空，不符合接受证据合同。
3. 为该操作对锁定部分相交的 `8 -> 7 -> 8` 工具偏移轨迹，重跑真实 Fuse、参数恢复、naming 和 FCStd 三阶段。

#### 完成证据

`mirrored->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Mirrored 为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `1000`、面积 `600` 和 156 条原生 history。
- 下游真实 `BRepAlgoAPI_Fuse` 结果为有效 1 Solid、13 Face、29 Edge、18 Vertex、体积 `1075`、面积 `660` 和 52 条原生 history。
- `8 -> 7 -> 8` 轨迹使编辑态体积变为 `1050`、面积变为 `640`、X 上界变为 `12`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `79a9b1faa46b...`。
- focused gate 通过，队列完成项增加到 `451`，唯一新活动项为 `TSN-PAIR-mirrored-cut`。

### `TSN-PAIR-mirrored-cut`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，以真实 `BRepAlgoAPI_Cut` 执行 `4 -> 3 -> 4` 工具尺寸轨迹。

#### 完成证据

`mirrored->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Cut` 结果为有效 1 Solid、10 Face、24 Edge、16 Vertex、体积 `936`、面积 `632` 和 22 条原生 history。
- `4 -> 3 -> 4` 轨迹使编辑态体积变为 `973`、面积变为 `618`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `20a01c32bcfc...`。
- focused gate 通过，队列完成项增加到 `452`，唯一新活动项为 `TSN-PAIR-mirrored-common`。

### `TSN-PAIR-mirrored-common`

#### 执行过程

1. 从最新机器队列领取唯一活动项；根据上游 X=`0..10` 边界，为该操作对锁定体交集 `7 -> 6 -> 7` 工具偏移轨迹，避免通用 X=`10` 边界接触产生空交集。
2. 以真实 `BRepAlgoAPI_Common` 执行参数变异与恢复，采集 history、naming 和 FCStd save/reopen/resave 证据。

#### 完成证据

`mirrored->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 `BRepAlgoAPI_Common` 结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `75`、面积 `110` 和 121 条原生 history。
- `7 -> 6 -> 7` 轨迹使编辑态体积变为 `100`、面积变为 `130`、X 下界变为 `6`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd 三阶段保持 Shape 及 naming evidence hash `0e46d8968ef1...`。
- focused gate 通过，队列完成项增加到 `453`，唯一新活动项为 `TSN-PAIR-mirrored-rotate`。

### `TSN-PAIR-mirrored-rotate`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，以真实 `BRepBuilderAPI_Transform` 执行 `15 -> 22.5 -> 15` 角度轨迹。

#### 完成证据

`mirrored->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Rotate 保持有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `1000`、面积 `600`，并生成 78 条原生 history。
- `15 -> 22.5 -> 15` 轨迹保持质量属性，但将包围盒从名义 X=`-2.5881906..9.6592584`、Y=`0..12.2474488` 改为编辑态 X=`-3.8268344..9.2387954`、Y=`0..13.0656297`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `2267188ff909...`。
- focused gate 通过，队列完成项增加到 `454`，唯一新活动项为 `TSN-PAIR-mirrored-pad`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-mirrored`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以第二次真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `5 -> 6 -> 5` 平面轨迹，区分名义对称态、偏移变异态与恢复态。

#### 完成证据

`mirrored->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 名义二次 Mirrored 保持有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `1000`、面积 `600`，但生成 156 条独立下游原生 history，不被误当作未执行。
- `5 -> 6 -> 5` 平面轨迹使编辑态变为有效 1 Solid、14 Face、28 Edge、16 Vertex、体积 `1200`、面积 `680`、X 上界 `12`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `a4b701c6a129...`。
- focused gate 通过，队列完成项增加到 `467`，唯一新活动项为 `TSN-PAIR-mirrored-multi-transform`。

### `TSN-PAIR-mirrored-multi-transform`

#### 执行过程

1. 从最新机器队列领取 Mirrored 行最后一个机器任务；将该操作对加入连续探针前缀与聚焦检查器。
2. 以有序的真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 先执行线性变换、再执行镜像合并，对 `multiTranslationX` 执行 `8 -> 9 -> 8` 轨迹。

#### 完成证据

`mirrored->multi-transform` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游有序 Multi Transform 结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240`、X 边界 `-8..18` 和 355 条原生 history。
- `8 -> 9 -> 8` 轨迹使编辑态体积变为 `2800`、面积变为 `1320`、X 边界变为 `-9..19`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `7daca50c6b9e...`。
- focused gate 通过，Mirrored 行机器任务闭合，队列完成项增加到 `468`，唯一新活动项为 `TSN-PAIR-multi-transform-fuse`。
- 行级收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；有序操作对剩余最后 19 项 Multi Transform 行任务。

### `TSN-PAIR-multi-transform-fuse`

#### 执行过程

1. 从最新机器队列领取 Multi Transform 行首项；确认上游 X 范围为 `-8..18`，避免使用完全内含工具产生 Fuse no-op。
2. 为该操作对锁定部分越出实体的 `16 -> 15 -> 16` 工具偏移轨迹，以真实 `BRepAlgoAPI_Fuse` 采集变异、恢复、naming 与 FCStd 证据。

#### 完成证据

`multi-transform->fuse` 已完成真实 OCCT/FreeCAD 接受分类：

- 上游 Multi Transform 为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 355 条原生 history。
- 下游真实 Fuse 结果为有效 1 Solid、29 Face、61 Edge、34 Vertex、体积 `2675`、面积 `1300`、X 上界 `21` 和 52 条原生 history。
- `16 -> 15 -> 16` 轨迹使编辑态体积变为 `2650`、面积变为 `1280`、X 上界变为 `20`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `89d7ded3221b...`；focused gate 通过，队列完成项增加到 `469`。
- 唯一新活动项为 `TSN-PAIR-multi-transform-cut`。

### `TSN-PAIR-multi-transform-cut`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepAlgoAPI_Cut` 执行 `4 -> 3 -> 4` 工具尺寸轨迹，采集切除几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->cut` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Cut 结果为有效 1 Solid、26 Face、55 Edge、31 Vertex、体积 `2536`、面积 `1272` 和 47 条原生 history。
- `4 -> 3 -> 4` 工具尺寸轨迹使编辑态体积变为 `2573`、面积变为 `1258`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `d9529dc97da1...`。
- focused gate 通过，队列完成项增加到 `470`，唯一新活动项为 `TSN-PAIR-multi-transform-common`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；有序操作对剩余 17 项未分类任务。

### `TSN-PAIR-multi-transform-common`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepAlgoAPI_Common` 执行 `10 -> 9 -> 10` 工具偏移轨迹，检查交集位置、拓扑、history、naming 和 FCStd 恢复。

#### 完成证据

`multi-transform->common` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Common 名义结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `125`、面积 `150`、X 边界 `10..15` 和 309 条原生 history。
- `10 -> 9 -> 10` 偏移轨迹保持体积与面积，但将编辑态变为 8 Face、17 Edge、11 Vertex、X 边界 `9..14` 和 304 条 history；该变异不以质量属性相同误判为 no-op。
- 恢复态精确返回名义 Shape、history hash 和语义 naming；FCStd 三阶段保持 naming evidence hash `09387999ac8c...`。
- focused gate 通过，队列完成项增加到 `471`，唯一新活动项为 `TSN-PAIR-multi-transform-rotate`。

### `TSN-PAIR-multi-transform-rotate`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepBuilderAPI_Transform` 执行 `15 -> 22.5 -> 15` 角度轨迹，采集刚体边界变化、history、naming、恢复与 FCStd 证据。

#### 完成证据

`multi-transform->rotate` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Rotate 保持有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240`，并生成 286 条原生 history。
- `15 -> 22.5 -> 15` 轨迹保持质量属性，但将编辑态 X 边界改为 `-11.2178707..16.6298317`、Y 边界改为 `-3.0614676..16.1270972`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `6309013fed1b...`。
- focused gate 通过，队列完成项增加到 `472`，唯一新活动项为 `TSN-PAIR-multi-transform-pad`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；有序操作对剩余 15 项机器任务。

### `TSN-PAIR-multi-transform-pad`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与拒绝检查器。
2. 以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并以真实 `PartDesign::Pad` 文档重算、事务 abort 与 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`multi-transform->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- OCCT `BRepPrimAPI_MakePrism` 的 `5 -> 7.5 -> 5` 三次尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Multi Transform 源对象，Shape 与 BREP hash `77e9b4530db9...` 精确恢复；FCStd 三阶段无临时 Body/Pad 污染。
- focused gate 通过，队列完成项增加到 `473`，唯一新活动项为 `TSN-PAIR-multi-transform-pocket`。

### `TSN-PAIR-multi-transform-pocket`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集切除几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Pocket 结果为有效 1 Solid、26 Face、54 Edge、30 Vertex、体积 `2570`、面积 `1270` 和 74 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使编辑态体积变为 `2576`、面积变为 `1264`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `54344de3b84e...`。
- focused gate 通过，队列完成项增加到 `474`，唯一新活动项为 `TSN-PAIR-multi-transform-loft`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；有序操作对剩余 13 项机器任务。

### `TSN-PAIR-mirrored-thickness`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，先按 accepted mutation 合同实测。
2. 以真实 `BRepOffsetAPI_MakeThickSolid` 执行 `-0.4 -> -0.6 -> -0.4` offset 轨迹，由是否产生有效变异、no-op、invalid-result 或拒绝决定最终分类。

#### 完成证据

`mirrored->thickness` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 ThickSolid 结果为有效 1 Solid、11 Face、24 Edge、16 Vertex、体积 `187.456`、面积 `953.28` 和 38 条原生 history，不是 no-op。
- `-0.4 -> -0.6 -> -0.4` offset 轨迹使编辑态体积变为 `272.064`、面积变为 `930.88`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `42ff0285de04...`。
- focused gate 通过，队列完成项增加到 `465`；`mirrored->linear-pattern` 已由既有顺序命名证据覆盖，因此唯一新活动项为 `TSN-PAIR-mirrored-polar-pattern`。

### `TSN-PAIR-mirrored-polar-pattern`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹，采集阵列几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Polar Pattern 结果为有效 1 Solid、12 Face、26 Edge、16 Vertex、体积 `1422.6497308`、面积 `769.0598923` 和 78 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使编辑态体积变为 `1585.7864376`、面积变为 `834.3145751`，同时改变 X/Y 边界；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `d24473db6bed...`。
- focused gate 通过，队列完成项增加到 `466`，唯一新活动项为 `TSN-PAIR-mirrored-mirrored`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-hole`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Hole 结果为有效 1 Solid、7 Face、15 Edge、10 Vertex、体积 `968.5840735`、面积 `656.5486678` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使编辑态体积变为 `929.3141653`、面积变为 `680.1106127`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游获得无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `676552c44f78...`。
- focused gate 通过，队列完成项增加到 `463`，唯一新活动项为 `TSN-PAIR-mirrored-draft`。

### `TSN-PAIR-mirrored-draft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器，不预设复杂阵列实体的拒绝结论。
2. 以真实 `BRepOffsetAPI_DraftAngle` 对锁定面执行 `5 -> 8 -> 5` 角度轨迹，采集拔模几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Draft 结果为有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `956.2556682`、面积 `582.884251` 和 5 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使编辑态体积变为 `929.7295826`、面积变为 `572.8745903`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游获得无歧义 `native-evidence` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `e187fbca3911...`。
- focused gate 通过，队列完成项增加到 `464`，唯一新活动项为 `TSN-PAIR-mirrored-thickness`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-fillet`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepFilletAPI_MakeFillet` 对 Mirrored 全边集合执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，采集圆角几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->fillet` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Fillet 结果为有效 1 Solid、26 Face、56 Edge、24 Vertex、体积 `995.9653557`、面积 `579.2169851` 和 150 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使编辑态体积变为 `991.0184753`、面积变为 `568.6895487`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `fdf15e219a78...`。
- focused gate 通过，队列完成项增加到 `461`，唯一新活动项为 `TSN-PAIR-mirrored-chamfer`。

### `TSN-PAIR-mirrored-chamfer`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepFilletAPI_MakeChamfer` 对 Mirrored 全边集合执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，采集倒角几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->chamfer` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Chamfer 结果为有效 1 Solid、26 Face、48 Edge、24 Vertex、体积 `990.7413333`、面积 `571.4001834` 和 150 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使编辑态体积变为 `979.552`、面积变为 `556.7387245`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `167858fc2d46...`。
- focused gate 通过，队列完成项增加到 `462`，唯一新活动项为 `TSN-PAIR-mirrored-hole`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-revolution`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与拒绝检查器。
2. 以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，并以真实 `Part::Revolution` 文档重算、事务 abort 与 FCStd 三阶段锁定实体输入合同。

#### 完成证据

`mirrored->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- OCCT `BRepPrimAPI_MakeRevol` 的 `360 -> 270 -> 360` 三次尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `Part::Revolution` 重算返回 `Solids are not Processed`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Mirrored 源对象，Shape 与 BREP hash `a7a1463754da...` 精确恢复；FCStd save/reopen/resave 三阶段无失败 Revolution 污染。
- focused gate 通过，队列完成项增加到 `459`，唯一新活动项为 `TSN-PAIR-mirrored-groove`。

### `TSN-PAIR-mirrored-groove`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集旋转减料、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`mirrored->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Groove 结果为有效 1 Solid、10 Face、24 Edge、16 Vertex、体积 `995.287611`、面积 `606.5663706` 和 18 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态变为 7 Face、16 Edge、12 Vertex、体积 `1000`、面积 `600` 和 56 条 history；虽质量属性回到上游值，拓扑与 history 明确变化。
- 恢复态精确返回名义 Shape、history hash 和语义 naming；下游保持原生 `ambiguous` naming。
- FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `dc3dd5eb0ad3...`。
- focused gate 通过，队列完成项增加到 `460`，唯一新活动项为 `TSN-PAIR-mirrored-fillet`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-loft`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与分层拒绝检查器。
2. 以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，再以真实 `Part::Loft` 重算、事务 abort 和 FCStd 三阶段锁定 FreeCAD 文档层输入合同。

#### 完成证据

`mirrored->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_ThruSections` 在三次 ruled 轨迹中均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `750`、面积 `580.2775638` 和 24 条 history；恢复态精确一致，但该结果只属于 kernel superset。
- FreeCAD 1.1.1 `Part::Loft` 以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Mirrored 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留源对象，Shape 与 BREP hash `a7a1463754da...` 精确恢复；FCStd save/reopen/resave 三阶段干净稳定。
- focused gate 通过，队列完成项增加到 `457`，唯一新活动项为 `TSN-PAIR-mirrored-pipe`。

### `TSN-PAIR-mirrored-pipe`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与分层拒绝检查器。
2. 以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，再以真实 `Part::Sweep` 文档重算、事务 abort 和 FCStd 三阶段锁定最终合同。

#### 完成证据

`mirrored->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- OCCT `BRepOffsetAPI_MakePipe` 三次均返回可生成但无效的 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0` 和 28 条 history。
- `15 -> 12 -> 15` 轨迹使无效结果面积在 `500 -> 440 -> 500` 间变化、Z 上界在 `25 -> 22 -> 25` 间变化，恢复态精确一致；kernel 权威为 `invalid-result`。
- FreeCAD 1.1.1 `Part::Sweep` 重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留源对象，Shape 与 BREP hash `a7a1463754da...` 精确恢复；FCStd 三阶段干净稳定。
- focused gate 通过，队列完成项增加到 `458`，唯一新活动项为 `TSN-PAIR-mirrored-revolution`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-mirrored-pad`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦拒绝检查器。
2. 以真实 `BRepPrimAPI_MakePrism` 执行 `5 -> 7.5 -> 5` 长度轨迹，并以真实 `PartDesign::Pad` 文档重算、事务 abort 和 FCStd save/reopen/resave 锁定实体输入合同。

#### 完成证据

`mirrored->pad` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 下游 Prism builder 的 `5 -> 7.5 -> 5` 三次尝试均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `PartDesign::Pad` 重算返回 `FeatureExtrusion: Length: Could not extrude the sketch!`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 前后只保留 Mirrored 源对象，Shape 与 BREP hash `a7a1463754da...` 精确恢复；FCStd 三阶段无临时 Body/Pad 污染。
- focused gate 通过，队列完成项增加到 `455`，唯一新活动项为 `TSN-PAIR-mirrored-pocket`。

### `TSN-PAIR-mirrored-pocket`

#### 执行过程

1. 从最新机器队列领取唯一活动项；将该操作对加入连续探针前缀与聚焦检查器。
2. 以真实 `BRepPrimAPI_MakePrism+BRepAlgoAPI_Cut` 执行 `5 -> 4 -> 5` 深度轨迹，采集切除几何、history、naming、恢复和 FCStd 三阶段证据。

#### 完成证据

`mirrored->pocket` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Pocket 结果为有效 1 Solid、9 Face、21 Edge、14 Vertex、体积 `970`、面积 `600` 和 42 条原生 history。
- `5 -> 4 -> 5` 深度轨迹使编辑态体积变为 `976`，同时保持面积与包围盒；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `41a368e2c236...`。
- focused gate 通过，队列完成项增加到 `456`，唯一新活动项为 `TSN-PAIR-mirrored-loft`。
- 批次收尾运行 `./npmw run check:execution-plan` 与 `git diff --check` 均通过；队列只读重建确认恰好一个 `in_progress` 任务。

### `TSN-PAIR-multi-transform-loft`

#### 执行过程

1. 从机器队列领取唯一活动项，以 `FREECAD_ONLY_PAIR='multi-transform->loft'` 重跑真实 OCCT/FreeCAD 聚焦探针。
2. 以真实 `BRepOffsetAPI_ThruSections` 执行 `false -> true -> false` ruled 轨迹，再以 `Part::Loft` 重算、事务 abort 和 FCStd save/reopen/resave 锁定 FreeCAD 文档层输入合同。

#### 完成证据

`multi-transform->loft` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- 上游 Multi Transform 使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)`，生成有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 355 条原生 history。
- OCCT `BRepOffsetAPI_ThruSections` 在三次 ruled 轨迹中均生成有效 1 Solid、6 Face、12 Edge、8 Vertex、体积 `1150`、面积 `758.6473016` 和 24 条 history；恢复态精确一致，但该结果只属于 kernel superset。
- FreeCAD 1.1.1 `Part::Loft` 以 `Profile shape is not a single vertex, edge, wire nor face.` 拒绝 Multi Transform 实体 section，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留源对象，Shape 几何与 BREP hash `77e9b4530db9...` 恢复；FCStd save/reopen/resave 三阶段干净稳定。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `475`，唯一新活动项为 `TSN-PAIR-multi-transform-pipe`。

### `TSN-PAIR-multi-transform-pipe`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->pipe` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepOffsetAPI_MakePipe` 执行 `15 -> 12 -> 15` spine 长度轨迹，再以 `Part::Sweep` 重算、事务 abort 和 FCStd 三阶段锁定拒绝合同。

#### 完成证据

`multi-transform->pipe` 已完成真实 FreeCAD/OCCT 分层拒绝分类：

- 上游 Multi Transform 使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)`，生成有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 355 条原生 history。
- OCCT `BRepOffsetAPI_MakePipe` 在三次轨迹中均返回无效 Shape：1 Solid、6 Face、12 Edge、8 Vertex、体积 `0`，面积按 spine 长度为 `500 -> 440 -> 500`，且均有 28 条 history；恢复态精确一致，kernel 权威为 `invalid-result`。
- FreeCAD 1.1.1 `Part::Sweep` 重算返回 `A fatal error occurred when making the sweep`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留 Multi Transform 源对象，Shape 与 BREP hash `77e9b4530db9...` 精确恢复；FCStd save/reopen/resave 三阶段干净稳定。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `476`，唯一新活动项为 `TSN-PAIR-multi-transform-revolution`。

### `TSN-PAIR-multi-transform-revolution`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->revolution` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepPrimAPI_MakeRevol` 执行 `360 -> 270 -> 360` 角度轨迹，再以 `Part::Revolution` 重算、事务 abort 和 FCStd 三阶段锁定拒绝合同。

#### 完成证据

`multi-transform->revolution` 已完成真实 FreeCAD/OCCT 拒绝分类：

- 上游 Multi Transform 使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)`，生成有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 355 条原生 history。
- OCCT `BRepPrimAPI_MakeRevol` 在 `360 -> 270 -> 360` 三次尝试中均在 builder 阶段以 Emscripten C++ exception 稳定拒绝，不产出 result、Shape 或 history。
- FreeCAD 1.1.1 `Part::Revolution` 重算返回精确诊断 `BRep_API: command not done`，状态为 `Touched/Invalid` 且 Shape 为 null/invalid。
- 事务 abort 后只保留 Multi Transform 源对象，Shape 与 BREP hash `77e9b4530db9...` 精确恢复；FCStd save/reopen/resave 三阶段无失败 Revolution 污染。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `477`，唯一新活动项为 `TSN-PAIR-multi-transform-groove`。

### `TSN-PAIR-multi-transform-groove`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->groove` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepPrimAPI_MakeRevol+BRepAlgoAPI_Cut` 执行 `360 -> 180 -> 360` 角度轨迹，采集旋转减料、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->groove` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Groove 名义结果为有效 1 Solid、26 Face、56 Edge、32 Vertex、体积 `2590.575222`、面积 `1259.1327412` 和 18 条原生 history。
- `360 -> 180 -> 360` 轨迹使编辑态变为 24 Face、52 Edge、32 Vertex、体积 `2600`、面积 `1240` 和 34 条 history；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `7e1cca710b45...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `478`，唯一新活动项为 `TSN-PAIR-multi-transform-fillet`。

### `TSN-PAIR-multi-transform-fillet`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->fillet` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepFilletAPI_MakeFillet` 执行 `0.4 -> 0.6 -> 0.4` 半径轨迹，采集圆角几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->fillet` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Fillet 名义结果为有效 1 Solid、58 Face、120 Edge、56 Vertex、体积 `2593.7678329`、面积 `1208.2293711` 和 390 条原生 history。
- `0.4 -> 0.6 -> 0.4` 半径轨迹使编辑态体积为 `2586.0740489`、面积为 `1192.2081276`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `9a6a00ac52f1...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `479`，唯一新活动项为 `TSN-PAIR-multi-transform-chamfer`。

### `TSN-PAIR-multi-transform-chamfer`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->chamfer` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepFilletAPI_MakeChamfer` 执行 `0.4 -> 0.6 -> 0.4` 距离轨迹，采集倒角几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->chamfer` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Chamfer 名义结果为有效 1 Solid、58 Face、112 Edge、56 Vertex、体积 `2585.6213333`、面积 `1196.4040506` 和 390 条原生 history。
- `0.4 -> 0.6 -> 0.4` 距离轨迹使编辑态体积为 `2568.032`、面积为 `1174.2445253`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `0e83ffacf7be...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `480`，唯一新活动项为 `TSN-PAIR-multi-transform-hole`。

### `TSN-PAIR-multi-transform-hole`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->hole` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepPrimAPI_MakeCylinder+BRepAlgoAPI_Cut` 执行 `1 -> 1.5 -> 1` 半径轨迹，采集孔切除、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->hole` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Hole 名义结果为有效 1 Solid、23 Face、47 Edge、26 Vertex、体积 `2568.5840735`、面积 `1296.5486678` 和 23 条原生 history。
- `1 -> 1.5 -> 1` 半径轨迹使编辑态体积为 `2529.3141653`、面积为 `1320.1106127`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游获得原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `e44576e22071...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `481`，唯一新活动项为 `TSN-PAIR-multi-transform-draft`。

### `TSN-PAIR-multi-transform-draft`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->draft` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepOffsetAPI_DraftAngle` 对锁定面执行 `5 -> 8 -> 5` 角度轨迹，采集拔模几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->draft` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Draft 名义结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2486.2647374`、面积 `1209.4972389` 和 17 条原生 history。
- `5 -> 8 -> 5` 角度轨迹使编辑态体积为 `2417.2969149`、面积为 `1191.9604684`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `3027a08991dc...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `482`，唯一新活动项为 `TSN-PAIR-multi-transform-thickness`。

### `TSN-PAIR-multi-transform-thickness`

#### 执行过程

1. 先按接受合同执行真实 `BRepOffsetAPI_MakeThickSolid`，发现 `-0.4 -> -0.6 -> -0.4` 未改变几何/history；随后切换原生 no-op 分支重放。
2. 采集 OCCT no-op 轨迹、FreeCAD `Part::Thickness` 重算状态、事务 abort 和 FCStd save/reopen/resave 三阶段证据。

#### 完成证据

`multi-transform->thickness` 已完成真实 FreeCAD/OCCT no-op 拒绝分类：

- 上游 Multi Transform 使用真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)`，生成有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240`和 355 条原生 history。
- OCCT `BRepOffsetAPI_MakeThickSolid` 在 `-0.4 -> -0.6 -> -0.4` 三次均返回与输入同拓扑和指标的有效 Shape，每次仅 1 条 history，权威为 `kernel-no-op`。
- FreeCAD 1.1.1 `Part::Thickness` 返回 `Valid/Up-to-date`，结果 Shape 等于输入 Shape，是明确 no-op，而非虚构成功几何。
- abort 后对象集、体积、面积、拓扑全部恢复，仅 BREP 因原生重序列化发生漂移（`sourceBrepReserialized=true`）；FCStd 三阶段干净稳定。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `483`，唯一新活动项为 `TSN-PAIR-multi-transform-linear-pattern`。

### `TSN-PAIR-multi-transform-linear-pattern`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->linear-pattern` 加入连续探针前缀与 focused checker。
2. 以真实 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `8 -> 9 -> 8` 平移轨迹，采集阵列几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->linear-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Linear Pattern 名义结果为有效 1 Solid、30 Face、60 Edge、32 Vertex、体积 `3400`、面积 `1560` 和 466 条原生 history，X 边界为 `-8..26`。
- `8 -> 9 -> 8` 平移轨迹使编辑态体积为 `3500`、面积为 `1600`、X 边界扩展至 `-8..27`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `b394abb85573...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `484`，唯一新活动项为 `TSN-PAIR-multi-transform-polar-pattern`。

### `TSN-PAIR-multi-transform-polar-pattern`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->polar-pattern` 加入连续探针前缀与 focused checker。
2. 以真实旋转 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `30 -> 45 -> 30` 角度轨迹，采集阵列几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->polar-pattern` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Polar Pattern 名义结果为有效 1 Solid、55 Face、119 Edge、66 Vertex、体积 `3627.2391992`、面积 `1586.2768775`、XY 边界 `-11.9282034..18` / `-4..17.6602542` 和 317 条原生 history。
- `30 -> 45 -> 30` 角度轨迹使编辑态体积为 `3974.4155877`、面积为 `1756.0606076`，XY 边界扩展至 `-12.7279222..18` / `-5.6568544..19.79899`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `9b336c1a8cd0...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `485`，唯一新活动项为 `TSN-PAIR-multi-transform-mirrored`。

### `TSN-PAIR-multi-transform-mirrored`

#### 执行过程

1. 从机器队列领取唯一活动项，将 `multi-transform->mirrored` 加入连续探针前缀与 focused checker。
2. 以真实镜像 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse` 执行 `5 -> 6 -> 5` 平面参数轨迹，采集几何、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->mirrored` 已完成真实 OCCT/FreeCAD 接受分类：

- 下游真实 Mirrored 名义结果为有效 1 Solid、22 Face、44 Edge、24 Vertex、体积 `2600`、面积 `1240` 和 572 条原生 history。
- `5 -> 6 -> 5` 轨迹使编辑态变为 38 Face、76 Edge、40 Vertex、体积 `2800`、面积 `1320`、X 上界 `20`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `a8d686199c1b...`。
- 聚焦探针与 focused gate 通过，队列完成项增加到 `486`，唯一新活动项为 `TSN-PAIR-multi-transform-multi-transform`。

### `TSN-PAIR-multi-transform-multi-transform`

#### 执行过程

1. 从机器队列领取最后一个有序操作对，将 `multi-transform->multi-transform` 加入连续探针前缀与 focused checker。
2. 以真实有序 `BRepBuilderAPI_Transform+BRepAlgoAPI_Fuse(ordered)` 执行 `8 -> 9 -> 8` 多变换轨迹，采集复合阵列、history、naming、恢复与 FCStd 三阶段证据。

#### 完成证据

`multi-transform->multi-transform` 已完成真实 OCCT 接受分类，并闭合全部 19×19 有序操作对：

- 下游真实 Multi Transform 名义结果为有效 1 Solid、38 Face、76 Edge、40 Vertex、体积 `4200`、面积 `1880`和 1187 条原生 history，X 边界为 `-16..26`。
- `8 -> 9 -> 8` 轨迹使编辑态变为 62 Face、124 Edge、64 Vertex、体积 `4400`、面积 `1960`、X 边界为 `-17..27`；恢复态精确返回名义 Shape、history hash 和语义 naming。
- 下游保持原生 `ambiguous` naming；FCStd save/reopen/resave 三阶段保持 Shape 及 naming evidence hash `ce7e7e2afb3a...`。
- 聚焦探针与 focused gate 通过，19×19 有序操作对全部分类完成，队列完成项增加到 `487`，下一个唯一活动项为 `PROP-app-propertyacceleration-A`。

### `PROP-app-propertyacceleration-A/B`

#### 执行过程与完成证据

- A 阶段生成 `config/freecad-property-acceleration-inventory.json`，锁定 `App::PropertyAcceleration` 的唯一原生记录：适用对象 `Robot::TrajectoryDressUpObject`、属性 `Acceleration`、分组 `TrajectoryDressUp`、默认 `1000.0 mm/s^2`、量纲 `length/time^2`、空依赖，且保留 `opaque-fcstd-proxy` 分类。`check:freecad-property-acceleration-inventory` 通过。
- B 阶段使用真实 FreeCAD 1.1.1 实例化对象，采集默认 `1000`、名义 `500`、下界 `0`、负值边界 `-500 mm/s^2`；四次赋值均无异常，property status 为空，单位返回为 FreeCAD 加速度量纲，Shape 明确记为不适用。`check:freecad-property-acceleration-success` 通过。
- 账本已追加 A/B 两项机器证据，队列完成项增加到 `489`，下一个唯一活动项为 `PROP-app-propertyacceleration-C`。

### `PROP-app-propertyacceleration-C`

#### 执行过程

1. 从机器队列领取 `App::PropertyAcceleration` 的原生失败/取消任务，复跑既有探针后发现文档未启用 `UndoMode`，导致 `abortTransaction()` 未形成可回滚事务；同时既有产物缺少禁用态证据。
2. 将探针收紧为两类非法输入、`ReadOnly + Immutable` 禁用态和启用 Undo 的事务取消，并逐阶段对比属性值与文档对象集。
3. focused checker 锁定原生异常类型与精确消息、禁用状态、事务活动/关闭状态、回滚结果和文档无污染；不把同步属性 setter 伪装成支持原生 cancel hook。

#### 完成证据

- `5 mm` 以 `ArithmeticError: Not matching Unit!` 拒绝，`not-a-quantity` 以 `ParserError: syntax error` 拒绝；两次失败前后均保持 `1000 mm/s^2` 和唯一 `Robot::TrajectoryDressUpObject` 对象。
- 禁用态同时记录 editor `ReadOnly` 与属性 `Immutable`，写入 `750 mm/s^2` 精确返回 `AttributeError: Object attribute 'Acceleration' is read-only`；解除状态后 status/editor mode 均恢复为空。
- 原生 setter 为同步操作且没有 cancel hook，明确保持 `supported: false`；取消替代路径使用启用 `UndoMode=1` 的活动文档事务，`1000 -> 250 -> abort -> 1000 mm/s^2` 完整恢复，活动事务关闭且对象集不变。
- `probe:freecad-property-acceleration-failure` 与 `check:freecad-property-acceleration-failure` 通过；C 阶段证据已追加到连续账本，等待机器队列生成并核对下一任务。

### `PROP-app-propertyacceleration-D`

#### 执行过程与完成证据

- 先用 FreeCAD console 验证有效原生对象图：`Robot::TrajectoryObject` 提供两个 waypoint，`Robot::TrajectoryDressUpObject` 绑定 Source 并启用 `UseAcceleration` 后重算为 `Valid / Up-to-date`。
- 新增变异探针，以 XML parser 解析原生 `Trajectory.Content`，执行 `1000 -> 500 -> 1000 mm/s^2`；三阶段重算计数为 `2 / 1 / 1`，两个 waypoint 的 `acc` 均按 `1000 -> 500 -> 1000` 变化。
- 编辑后原生对象状态为 `Touched` 且 `MustExecute=false`；这是实际 FreeCAD 语义，重算仍执行一次并将输出轨迹 Duration 从 `0.141421356` 变为 `0.2`，恢复后返回原值。
- 恢复态的属性值、轨迹结构、Duration、XML 内容 hash、property status、editor mode、Source link 和对象状态均与 before 逐字段一致；Source 轨迹和文档对象集全程不变。
- 该对象没有 Shape，几何边界明确记录为 `not-applicable-no-shape-property`，未伪造拓扑证据。`probe/check:freecad-property-acceleration-mutation` 均通过，D 阶段证据已加入连续账本。

### `PROP-app-propertyacceleration-E`

#### 执行过程与完成证据

- 将 `App::PropertyAcceleration` 加入 Facade 的 `NativeEditablePropertyType`，并接入数值校验、属性设置、表达式适用类型和 UI 数值编辑器；保留 FreeCAD 允许负加速度的原生边界，没有套用 Length 的非负限制。
- 单位系统新增 acceleration 量纲及 `mm/cm/m/in/ft per s^2` 换算，Facade 快照使用原生基准单位 `mm/s^2`；聚焦测试确认 `9.81 m/s^2 = 9810 mm/s^2`。
- FCStd writer/reader 将该类型作为原生 `<Float>` 编解码，并把 `Robot::TrajectoryObject`/`Robot::TrajectoryDressUpObject` 纳入识别清册；`Acceleration` 写入静态原生属性，不使用动态 `group/doc/attr` fallback。
- 新增 `test:freecad-property-acceleration-facade`，只通过公开 Facade 设置 `1000 -> 500`，验证版本、dirty、重算 touched、类型/单位保持；字符串和 Infinity 均被有限数值校验拒绝，归档检查与 decoder 返回原生数值 `500`。
- focused test 与完整 `./npmw run build` 通过；构建仅保留既有 OCCT chunk 体积警告。E 阶段生产实现与检查证据已加入连续账本。

### `PROP-app-propertyacceleration-F`

#### 执行过程与完成证据

- 在 `SetPropertyInput` 增加可选 `expectedDocumentVersion` 和 `AbortSignal`；同步属性写入对预取消 signal 返回 `AbortError`，对旧版本返回精确 stale 诊断，两者都在 observer 事件和历史栈写入前 fail-closed。
- 成功写入 `1000 -> 500` 只产生一组同 transaction ID 的 `property.before-change -> property.changed -> transaction.committed`，提交记录锁定版本 `1 -> 2` 和 `property.set` 操作。
- Facade undo 将属性和值恢复到版本 1，redo 返回版本 2/值 500；redo 后旧版本写入、预取消写入和非法字符串写入均保持文档 JSON、事件数及 undo/redo 可用性不变。
- 属性事务不分配几何 Shape；测试逐项比较 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount`，前后完全一致。
- `test:freecad-property-acceleration-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertyacceleration-G`

#### 执行过程与完成证据

- 新增受限的 `rewriteFcstdNumericProperty`：先用现有 ZIP/XML 安全边界校验对象、Property TypeId、`Float` payload、有限目标值和期望旧值，再用 `fast-xml-parser/XMLBuilder` 结构化修改，禁止正则替换原生 XML。
- 首轮重写暴露 builder 会把 `CustomEnum=""` 压为被读取器禁止的布尔属性，并二次转义已编码实体；已明确设置保留空属性值、自闭合空节点和不重复处理实体，FreeCAD 可正常读取。
- 第二轮原生检查发现只改 `<Float>` 会让 FreeCAD 沿用归档内旧派生轨迹；重写器现同时把目标对象声明标记为 `Touched="1"`，强制原生重算。这一缺陷曾使 focused check 失败，未被写成虚假通过。
- 最终真实链路为 FreeCAD 创建 `1000` -> Web 校验并编辑 `500` -> FreeCAD reopen/recompute -> saveAs -> reopen；属性值为 `1000 -> 500 -> 500 -> 500`，两个 waypoint 的 `acc` 在后两次原生打开时均为 `500`。
- Web 编辑前后对象集及除目标值外的属性语义一致；本次 FreeCADCmd 归档只含 `Document.xml`，外部 opaque 条目数为 0，保留判定为真且未虚构资源证据。`probe/check:freecad-property-acceleration-roundtrip` 均通过，G 阶段证据已加入连续账本。

### `PROP-app-propertyacceleration-H`

#### 执行过程与完成证据

- 新增真实 Chrome harness，直接复用生产 `PropertyEditor` 和 `createProductionFacade`，通过数值输入框的真实 focus/input/blur 事件完成 `1000 -> 500 mm/s^2`；文档版本 `1 -> 2`、dirty 为真、对象状态变为 `touched`，UI 未产生错误。
- 通过具名 `bitbybit-persistence` Worker 执行 initialize、save/load、checkpoint、recovery、resource put/get/release 和 dispose；Chrome 报告锁定 `sqlite-opfs`、SQLite WASM/OPFS 均可用、恢复完整性为 `ok`。
- 浏览器内 FCStd metadata 仍编码为原生 `App::PropertyAcceleration` / `<Float value="500">`；OPFS 资源 36 bytes 往返一致，release 后读取为 null，独立 marker 已删除。
- Facade 新增显式 `project.dispose()`，取消待执行 autosave 并关闭持久化 Worker；最终 Shape 数和 kernel 引用数均为 0，Worker 终止事件已记录。
- `build`、`test/check:chrome-property-acceleration`、E/F 聚焦测试均通过；H 阶段机器证据已追加到连续账本，等待队列重建后领取 I 阶段。

### `PROP-app-propertyacceleration-I`

#### 执行过程与完成证据

- 新增独立 promotion 生成器与 focused checker，逐项读取 A-H 连续账本、原生成功/失败/变异、Facade/事务、FCStd 往返和 Chrome 报告；缺少任一阶段或任一报告非 pass 时均拒绝提升。
- 将 `App::PropertyAcceleration` 加入全局原生可编辑 codec 清册；`config/freecad-native-property-semantics.json` 现记录该类型为 `native-editable-codec`，保持 1 个原生 record 和 1 个对象类型。
- 全局支持分区由 `22 / 4304 native-editable`、`58 / 523 opaque` 收敛为 `23 / 4305 native-editable`、`57 / 522 opaque`；连同 5 类 specialized codec，native codec 总记录数为 4988。
- exact blocker 同步为 `57 runtime property types and 522 records remain opaque-only`；系统级 exact 继续 fail-closed，不因单类型完成而提前宣称整体 exact。
- 队列生成器现在会从进度账本携带已开始/已提升的 Property 类型，避免类型退出 opaque 集合后丢失 A-I 历史，同时继续从当前 opaque 清册生成后续任务。
- `probe/check:freecad-native-property-semantics` 与 `generate/check:freecad-property-acceleration-promotion` 均通过；I 阶段证据已追加到连续账本。

### `PROP-app-propertyarea-A`

#### 执行过程与完成证据

- 从锁定的 FreeCAD 1.1.1 runtime oracle 提取唯一 `App::PropertyArea` 记录：宿主 `Measure::MeasureArea`、属性 `Area`、分组 `Measurement`、默认 `0.0 mm^2`、状态位 `PropReadOnly + PropOutput`。
- 原生值模型锁定为 `length^2` 的只读派生 quantity；结果不拥有 Shape，不能把测量值伪装成几何对象。
- 输入合同锁定为 `Elements: App::PropertyLinkSubList`，scope 为 Global、允许外部文档且必须至少一个元素；`Elements` 变化会立即重算 `Area`。
- 选择适用性锁定为非空且全部有效，只接受 PLANE/CYLINDER/SURFACE/VOLUME；INVALID/POINT/LINE/CURVE 明确不适用。执行语义为逐元素面积求和，失效诊断固定为 `Cannot calculate area`。
- inventory 同时锁定 runtime oracle 与 `MeasureArea.cpp/.h` 的 bytes/SHA-256，并由 focused checker复核源代码中的 Global、allowExternal、ReadOnly/Output 与诊断声明；`generate/check:freecad-property-area-inventory` 均通过。

### `PROP-app-propertyarea-B`

#### 执行过程与完成证据

- 使用真实 FreeCAD 1.1.1 创建 Box、Cylinder、Sphere 与 `Measure::MeasureArea`，覆盖 empty default、planar Face、cylindrical Face、surface Face、完整 solid 和多元素求和六个成功态。
- 原生结果依次为 `0`、`10`、`75.398223877`、`50.265483856`、`160`、`95.398223877 mm^2`；每项都以源 Shape 的真实 `Area` 独立求和并在 OCCT 测量容差内一致。
- 六个阶段的 `Area` TypeId 均为 `App::PropertyArea`，原生状态位固定为 `24/27`、editor mode 为 `ReadOnly`，对象均为 `Valid / Up-to-date`。
- 测量对象全程没有 Shape，源几何则逐项锁定 ShapeType、有效性、Face/Edge/Vertex 数；未用伪造拓扑替代只读 quantity 的真实边界。
- `probe/check:freecad-property-area-success` 均通过，B 阶段证据已加入连续账本。

### `PROP-app-propertyarea-C`

#### 执行过程与完成证据

- 用真实 FreeCAD 1.1.1 将 `Measure::MeasureArea.Elements` 分别指向 `Vertex1` 和 `Edge1`；赋值本身不抛异常，`document.recompute()` 仍返回 true，但测量对象稳定进入 `Touched + Invalid`，精确诊断为 `Cannot calculate area`，旧的最后有效面积 `10 mm^2` 保持不变。
- 每个失败态都恢复到 `AreaBox.Face1` 并重新计算，`Area`、`Elements`、对象状态和文档对象集精确回到初值；没有把重算返回值误当成对象成功状态。
- 原生 `PropReadOnly + PropOutput`/editor `ReadOnly` 只限制 GUI，Python 仍可临时写入派生 `Area`；叠加 `Immutable` 后写入 `30 mm^2` 精确抛出 `AttributeError: Object attribute 'Area' is read-only`，解除状态并重算后恢复原生只读派生值。
- 该测量重算没有原生 cancel hook，报告明确分类为同步重算并用活动 Document transaction abort 作为取消边界；`Elements` 从 Box Face 改到 Cylinder Face 后 abort，重算恢复 `10 mm^2`，事务、对象集和文档状态无污染。
- `probe/check:freecad-property-area-failure` 与 execution-plan 门禁通过，C 阶段证据已加入连续账本。

### `PROP-app-propertyarea-D`

#### 执行过程与完成证据

- 只变异输入 `Elements`：从 `AreaBox.Face1` 改为 `AreaBox.Face1 + AreaBox.Face2 + AreaCylinder.Face1`，派生值按原生同步通知从 `10` 变为 `95.398223877 mm^2`，随后恢复为 `10 mm^2`。
- 首轮 checker 因用 JSON 字符串比较对象而错误地把键顺序当成语义差异，保持 fail-closed；已改为结构化深比较。原生 artifact 同时揭示 `MeasureArea::onChanged` 在 `Elements` 赋值时即同步更新 `Area`，对象进入 `Touched` 但 `MustExecute=false`，因此 checker 按真实行为锁定，而非假定等待 recompute 才更新。
- before/edit/restore 三态均保持 `App::PropertyArea`、`ReadOnly`、状态位 `24/27`、无 Shape 和 `Valid / Up-to-date`；源 Box/Cylinder 的拓扑、边界、面积、体积全部未变，文档对象集保持三对象。
- 原生探针独立复跑两次得到相同 artifact SHA-256 `fb9a6b4d6d396335e85bf242a270931ac40df5421ada0f48131a807d13e4972b`；`probe/check:freecad-property-area-mutation` 均通过，D 阶段证据已加入连续账本。

### `PROP-app-propertyarea-E`

#### 执行过程与完成证据

- 将 `App::PropertyArea` 接入 typed Property snapshot、有限数值 codec 和 Property UI 分支；当前原生记录携带 `PropReadOnly + PropOutput`，因此生产 UI 走只读文本路径，公开 `setProperty(Area)` 在事件和版本变更前拒绝。
- FCStd writer/reader 新增 `App::PropertyArea` 原生 `<Float>` 编解码，并把 `Measure::MeasureArea` 及其静态 `Area/Elements` 纳入原生对象清册；两项属性不再落入带 `group/doc/attr` 的动态 fallback，`Elements` 保持原生 `<LinkSubList>`。
- 生产 Facade 在修改 `Measure::MeasureArea.Elements` 时，从源对象稳定 face topology signature 同步求和并更新只读 `Area`；支持 `FaceN`、ElementMap 映射、稳定 TopoRef 和 whole-object face 汇总，缺失拓扑、非 Face、歧义或非法面积统一在提交前以 `Cannot calculate area` fail-closed。
- 聚焦测试锁定 `AreaBox.Face1 -> Face1+Face2` 时 `Area 10 -> 20 mm^2`、测量对象 touched、单事务事件序列，以及 `Edge1` 失败时状态/事件零变化；FCStd inspect 将对象识别为 `recognized` 并结构化解码 Area/Elements。
- `test:freecad-property-area-facade`、完整 `test:facade` 199 项和 `build` 均通过；构建仅保留既有 OCCT chunk 体积警告，E 阶段证据已加入连续账本。

### `PROP-app-propertyarea-F`

#### 执行过程与完成证据

- 通过公开 Facade 将 `Elements` 从 `AreaBox.Face1` 改为 `Face1 + Face2`，在同一 transaction ID 内只产生一组 `property.before-change -> property.changed -> transaction.committed`，文档版本 `1 -> 2`，派生 `Area 10 -> 20 mm^2`。
- undo 同时恢复单 Face 输入、`Area=10` 和版本 1；redo 同时恢复双 Face 输入、`Area=20` 和版本 2，历史栈可用性按预期切换。
- redo 后依次注入旧版本写入、预取消 signal、`Edge1` 非适用输入和直接写只读 `Area`；四项均在提交前 fail-closed，文档 JSON、属性事务事件数及 undo/redo 可用性完全不变。
- 测量事务不分配几何 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-area-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertyarea-G/H/I` 与 `PROP-app-propertyboollist-A`

#### 执行过程与完成证据

- Area G 首次真实 FreeCAD -> Web -> FreeCAD 回放发现 checker 用 JSON 字符串比较对象键顺序，误报 `nativeOutputMatches=false`；保持 fail-closed 后改为结构化深比较，并让 runner 顶层 status 跟随 `zeroUnknownDrift`，避免报告自称 pass。修正后 `Area 10 -> 20 -> 20 mm^2`、LinkSubList 两个面、源几何、对象集和唯一 opaque 归档项均无未知漂移。
- Area H 新增真实 headless Chrome harness，复用生产 `PropertyEditor`。Area 按原生 `PropReadOnly + PropOutput` 保持只读，真实点击 `Clear subshape links` 将 `Elements 2 -> 0`，派生 UI 值 `20 -> 0 mm^2`；SQLite OPFS、FCStd Float/LinkSubList、checkpoint/recovery、OPFS 资源释放和 `bitbybit-persistence` Worker 终止均通过。
- Area I 新增独立 promotion 生成器/checker，A-H 连续证据全部通过；`App::PropertyArea` 以 `read-only-derived-mm^2-with-link-sub-list-input` 值模型提升到 native codec。全局分区更新为 `24 / 4306 native-editable`、`56 / 521 opaque`，native codec 总记录 `4989`；exact blocker 同步为 `56 runtime property types and 521 records remain opaque-only`，系统 exact 仍为 false。
- 随后领取 `PROP-app-propertyboollist-A`，从 FreeCAD 1.1.1 oracle 锁定 7 条 `App::PropertyBoolList` 记录：`App::FeatureTest`、`App::FeatureTestException`、四种 Link/LinkPython `VisibilityList` 和 `Surface::GeomFillSurface.ReversedList`。清册 checker 通过，3 条默认可写、4 条 `Immutable + Hidden + LockDynamic`，当前仍保持 `opaque-fcstd-proxy`。
- 本轮门禁：Area Chrome、Area Facade/transaction/FCStd、Area promotion、native property semantics、execution plan、active queue、JSON parse、`git diff --check` 均通过；生产 build 通过，仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertyboollist-B`

#### 执行过程与完成证据

- 首轮真实 FreeCAD 探针因错误使用不存在的 `App::Feature` 目标中止，未生成通过产物；修正为真实 `Part::Feature`，并用四条闭合边界为 `Surface::GeomFillSurface` 建立有效 Shape。
- `App::FeatureTest` 与 `App::FeatureTestException.BoolList` 均接受 empty、singleton、mixed、257 项大列表和恢复值；后者的 `execute()` 按类型设计固定报 `Testexception ;-)`，artifact 将其分类为 intrinsic host diagnostic，不误判为 BoolList setter 失败。
- `Surface::GeomFillSurface.ReversedList` 在 all-false、one-reversed、alternating、all-reversed 与恢复阶段均保持有效单 Face、4 Edge、4 Vertex 和 `Valid / Up-to-date`。
- 四种 Link/LinkPython 宿主不绕过 `Immutable` 直接写值，而是使用原生 LinkBaseExtension `setElementVisible()`；四项都得到 `[true,true] -> [false,true] -> [true,true]`，返回码为 1，状态保持 `Immutable + Hidden + LockDynamic`。
- `probe/check:freecad-property-boollist-success` 均通过，B 阶段证据已加入连续账本。

### `PROP-app-propertyboollist-C`

#### 执行过程与完成证据

- 首轮失败探针发现标量整数 `7` 和字符串 `"10201"` 是原生接受分支，分别归一化为 `[true]` 与 `[true,false,false,false,true]`；两项移入 `acceptedCoercions`，没有伪造成拒绝。
- 真正非法输入 `None`、含 float 子项和含 string 子项均以精确 `TypeError: type in list must be bool or int, not ...` 拒绝，值和对象集保持不变。
- 普通 `BoolList` 在 `ReadOnly + Immutable` 状态下返回精确 `AttributeError`，解除状态后 status/editor mode 回空；活动事务将 `[false] -> [true,false,true] -> abort -> [false]` 完整恢复。
- 四类 Link 的直接 `VisibilityList` 写入均因 immutable 拒绝，无效元素名返回 `-1` 且无变异；有效隐藏后 abort 立即恢复值但原生对象保持 `Touched`，随后一次 recompute 返回 `Up-to-date / Valid`，这一两阶段恢复由 checker 锁定。
- 原生 setter/Link extension 没有 cancel hook，明确记录同步取消边界由 Document transaction abort 代替；`probe/check:freecad-property-boollist-failure` 均通过。

### `PROP-app-propertyboollist-D`

#### 执行过程与完成证据

- 对 7 个宿主分别执行 before/edit/recompute/restore/recompute；所有 case 的 BoolList 值、文档对象集和适用 Shape 均恢复到原生初始态。
- `App::FeatureTest` 执行 `[false] -> [true,false,true] -> [false]`，赋值后 `Touched`、重算后 `Up-to-date / Valid`；`FeatureTestException` 保留其固有 Invalid 诊断，但属性值仍精确恢复。
- 有效 `GeomFillSurface` 在 reversal 编辑时面积、边界和拓扑计数不变，但 BREP SHA-256 从 `ea7baeb0...` 变为 `f6c587bb...`；恢复后精确返回 `ea7baeb0...`，证明不是仅比较最终数值。
- 四类 Link 均执行 `[true,true] -> [false,true] -> [true,true]`；C++ Link 变体 touched 时 `MustExecute=false`，Python Link 变体为 true，重算后均回到 `Up-to-date / Valid`。
- `probe/check:freecad-property-boollist-mutation` 均通过，D 阶段证据已加入连续账本。

### `PROP-app-propertyboollist-E`

#### 执行过程与完成证据

- 将 `App::PropertyBoolList` 加入 Facade 原生可编辑类型和 `PropertyValue`，布尔数组在文档快照、事务历史及公开对象读取中保持独立深拷贝；生产 setter 只接受逐项 boolean 的数组，字符串、数字和混合数组在事件与版本变更前 fail-closed。
- 对照锁定 FreeCAD `src/App/PropertyStandard.cpp` 的 `PropertyBoolList::Save/Restore` 实现，将 FCStd codec 固定为原生反序 `dynamic_bitset` 字符串：例如 `[true,false,false]` 编码为 `<BoolList value="001"/>`，读取时按低位顺序恢复；未使用通用 JSON 或伪造的列表子节点。
- `App::FeatureTest`、`App::FeatureTestException`、`Surface::GeomFillSurface` 及四类 Link 宿主进入 FCStd 识别清册；其 `BoolList/ReversedList/VisibilityList` 作为静态原生属性写入，不携带动态 `group/doc/attr` fallback。`VisibilityList` 的 `Immutable + Hidden + LockDynamic` 状态位保持为 266，公开 setter 明确拒绝直接写入。
- 生产 `PropertyEditor` 新增可逆的 BoolList 编辑分支，接受 `true/false` 与 `1/0` 逗号列表，非法 token 恢复旧显示值；隐藏的 Link `VisibilityList` 继续由原生 Hidden 状态从属性面板过滤。
- 聚焦测试锁定 `[false] -> [true,false,true]`、文档版本/dirty/touched、事务事件、非法输入零污染、immutable Link 拒绝、原生 bitset XML 和结构化 decoder；`test:freecad-property-boollist-facade`、完整 `test:facade` 199 项、`build` 与 `git diff --check` 均通过。构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertyboollist-F`

#### 执行过程与完成证据

- 通过公开 Facade 将普通 `App::FeatureTest.BoolList` 从 `[false]` 改为 `[true,false,true]`；同一 transaction ID 内只产生 `property.before-change -> property.changed -> transaction.committed`，文档版本 `1 -> 2`、dirty 为真且宿主进入 touched。
- setter 对调用方数组做深拷贝，`getObject()` 返回的数组也不能反向修改内部状态；undo 精确恢复 `[false]`/版本 1，redo 返回 `[true,false,true]`/版本 2，历史栈可用性按预期切换。
- redo 后注入旧版本写入、预取消 signal、含字符串的混合数组和 immutable `VisibilityList` 直接写入；四项均在提交前 fail-closed，文档 JSON、属性事务事件数及 undo/redo 可用性完全不变。
- BoolList 属性事务不分配 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-boollist-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertyboollist-G`

#### 执行过程与完成证据

- 新增受限的 `rewriteFcstdBoolListProperty` 及 Facade `project.fcstd.rewriteBoolList`：先验证对象、属性、`App::PropertyBoolList` TypeId、原生 `BoolList` payload、纯布尔目标数组和预期旧值，再用结构化 XML parser/builder 修改反序 bitset；目标对象标记 touched，其他 ZIP 条目逐项复制。
- 首次真实检查发现 `App::FeatureTest.FloatList` 使用合法的外部 `<FloatList file="FloatList"/>`，旧 parser 错误要求内联 `count`；已按 FreeCAD 格式把 resource-backed FloatList 留在 opaque 边界。第二次检查发现普通 `App::PropertyPath` 使用 `<Path value="c:\\temp"/>`，已按 TypeId 与 CAM `Path::PropertyPath file="*.nc"` 分流，两次失败均未写成通过报告。
- 最终真实链路为 FreeCAD 1.1.1 创建 `[false]` -> Web 校验并编辑 `[true,false,true,false]` -> FreeCAD reopen/recompute -> saveAs -> reopen；原生重开与再保存均精确返回目标数组，宿主保持 `App::FeatureTest`、普通 property status/editor mode、无 Shape。
- Web 编辑前后对象集及目标属性之外的 inspection 语义一致；原生归档的 `ColourList`、`FloatList`、`MaterialList`、`VectorList` 四个 opaque 条目逐字节保留，未知语义漂移为零。
- `probe/check:freecad-property-boollist-roundtrip` 与生产 `build` 均通过；G 阶段证据已加入连续账本。

### `PROP-app-propertyboollist-H`

#### 执行过程与完成证据

- 新增真实 Chrome harness，直接复用生产 `PropertyEditor` 和 `createProductionFacade`；通过文本输入框真实 focus/input/blur 将 `false` 改为 `true, false, true, false`，文档版本 `1 -> 2`、dirty 为真、宿主状态为 touched，UI 无错误。
- 通过具名 `bitbybit-persistence` Worker 执行 initialize、save/load、checkpoint、recovery、resource put/get/release 和 dispose；报告锁定 `sqlite-opfs`、SQLite WASM/OPFS 可用及恢复完整性 `ok`。
- 浏览器持久化重载保持 `App::PropertyBoolList` 和目标数组；FCStd metadata 识别为原生 `BoolList` 并结构化解码为 `[true,false,true,false]`。
- OPFS 资源 32 bytes 往返一致，release 后读取为 null，独立 marker 已删除；最终 Shape/内核引用均为 0，持久化 Worker 终止事件已记录。
- `build`、`test/check:chrome-property-boollist`、E/F 聚焦测试均通过；H 阶段机器证据已追加到连续账本。

### `PROP-app-propertyboollist-I`

#### 执行过程与完成证据

- 新增 BoolList 独立 promotion 生成器/checker，对 A-H 的连续证据、原生值模型、FCStd `BoolList` payload、真实 FreeCAD 回放及 Chrome 持久化结果进行闭环校验。
- `App::PropertyBoolList` 的 7 条记录全部从 opaque 提升为 native-editable：3 条普通可写属性，4 条 Link `VisibilityList` 保持 `Immutable + Hidden + LockDynamic`，没有因提升放宽原生编辑边界。
- 全局语义分区更新为 `25 / 4313 native-editable`、`5 / 683 specialized`、`55 / 514 opaque`，native codec 总记录为 `4996`；exact blocker 同步为 `55 runtime property types and 514 records remain opaque-only`，系统 exact 仍为 false。
- `EX-DOC-01` 及早期 Acceleration/Area promotion 报告已同步到当前全局快照，避免已完成证据携带过期分区统计；两项旧 promotion checker 重跑通过。
- `generate/check:freecad-property-boollist-promotion`、`probe/check:freecad-native-property-semantics` 均通过；首次 execution-plan 总检仅在末尾指出活动队列尚未在 I 登记后重生成，本节记账后立即重建并复验。

### `PROP-app-propertycolor-A`

#### 执行过程与完成证据

- BoolList I 登记后活动队列重建为 `514 completed / 1 in-progress / 1241 pending`，`check:execution-plan` 全部通过，唯一队首切换到 `PROP-app-propertycolor-A` 并直接接领。
- 从 FreeCAD 1.1.1 运行时清册锁定 8 条 `App::PropertyColor` 记录，覆盖 `App::FeatureTest`、`App::FeatureTestException`、`App::Part`、两种 Assembly 对象和三种 TechDraw 视图；8 个宿主均 available、状态为空且可写。
- 默认值精确分为黑色不透明 `[0,0,0,1]` 与白色全透明 `[1,1,1,0]`；值模型锁定为 RGBA 四通道浮点 tuple，alpha `1=opaque / 0=transparent`，无 Shape 前置且无跨属性依赖。
- 源码溯源锁定三类 setter：3/4 元同类 float tuple、3/4 元同类 integer tuple（按 255 归一化）及 32 位 `0xRRGGBBAA` packed integer；FCStd 存储为 `<PropertyColor value="unsigned-decimal"/>`，1.1 前文档读取时单独反转 alpha byte。
- `generate/check:freecad-property-color-inventory` 通过；A 阶段仅锁定 inventory/preconditions，能力分类仍为 `opaque-fcstd-proxy`，成功边界留给 B 的真实 FreeCAD 探针。

### `PROP-app-propertycolor-B`

#### 执行过程与完成证据

- 在 8 个清册宿主上逐个新建独立 FreeCAD 文档，经公开 Python property setter 依次写入 3 元 float、4 元 float、3 元 byte、4 元 byte、`0x11223344` packed integer、全透明边界，最后恢复宿主原默认值。
- 3 元 float 精确归一为 `[0.25,0.5,0.75,1]`；byte tuple 按 255 归一化，`0x11223344` 按 `RRGGBBAA` 顺序解码为 `17/255,34/255,51/255,68/255`；float32 回读精度和 alpha 全透明值均由 checker 锁定。
- `TechDraw::DrawViewSpreadsheet` 首轮未关联 Source 时出现可避免的 `No spreadsheet linked`；探针补建有效 `Spreadsheet::Sheet` 后重跑，7 个普通宿主每个阶段均为 `Up-to-date / Valid`。
- `App::FeatureTestException` 仍按类型设计在变更后固定报 `Testexception ;-)`，颜色值与恢复不受影响；该诊断标记为 intrinsic host diagnostic，没有误归类为 PropertyColor setter 失败。
- 所有阶段的 TypeId、空 status/editor mode、宿主对象集、无 Shape 适用性、重算状态和诊断均已入机器产物；`probe/check:freecad-property-color-success` 通过。

### `PROP-app-propertycolor-C`

#### 执行过程与完成证据

- 真实失败探针先分离原生接受的 coercion：float tuple 通道不夹取，超出 `[0,1]` 的值原样保留；integer tuple 即使超出 byte 范围仍直接除以 255；bool tuple 按 integer 处理。
- packed integer 锁定低 32 位语义：`0xFFFFFFFF -> [1,1,1,1]`、`0x100000000 -> [0,0,0,0]`、`-1 -> [1,1,1,1]`，三项均为原生接受分支，未伪造成拒绝。
- `None`、list、长度 2/5 tuple、首项 string、float/int 混合 tuple 及标量 float 共 8 类非法输入均以精确 `TypeError` 拒绝，属性值、文档对象集和后续事务基线零污染。
- editor `ReadOnly` 只约束 UI，Python setter 仍可写；追加 `Immutable` 后精确拒绝并报 `Object attribute 'Colour' is read-only`，解除后 status/editor mode 恢复为空。
- 活动事务中将 `[0,0,0,1]` 改为 `[0.75,0.5,0.25,0.125]`，abort 立即恢复 RGBA 但对象保持 Touched，后续 recompute 返回 `Up-to-date / Valid`；取消边界明确为同步 setter 无 cancel hook，由 Document transaction abort 替代。
- `probe/check:freecad-property-color-failure` 通过，C 阶段机器证据已加入连续账本。

### `PROP-app-propertycolor-D`

#### 执行过程与完成证据

- 对 8 个原生宿主分别执行 `before -> edit -> recompute -> restore -> recompute`，统一目标为 `[0.125,0.375,0.625,0.875]`；每个宿主都检测到真实值变异并恢复自身默认 RGBA。
- 7 个普通宿主的状态序列精确为 `Valid -> Touched -> Valid -> Touched -> Valid`；这锁定了 setter 立即写值与 recompute 清除 touched 的两阶段语义。
- `App::FeatureTestException` 在第一次重算后进入固有 `Touched + Invalid / Testexception ;-)`，恢复属性不清除该宿主诊断，但 RGBA 仍精确回到 `[0,0,0,1]`。
- `TechDraw::DrawViewSpreadsheet` 使用有效 `Spreadsheet::Sheet` 前置；App::Part/Assembly 自动创建的 Origin 对象集以及所有其他宿主对象集在变异和恢复中完全不变。
- 8/8 的 TypeId、空 status/editor mode、无 Shape 适用性、对象集与恢复值均通过 focused checker；`probe/check:freecad-property-color-mutation` 通过。

### `PROP-app-propertycolor-E`

#### 执行过程与完成证据

- 将数据域 `App::PropertyColor` 固定为四通道有限数值 RGBA，并与视图域既有 `#RRGGBB` 表示分流；Facade 的输入、对象快照和事务历史均深拷贝颜色数组，错误长度、非数值和非有限通道在版本及事件变更前 fail-closed，原生允许的有限越界通道不被擅自夹取。
- FCStd codec 按 FreeCAD 原生 `<PropertyColor value="unsigned-decimal"/>` 实现 `0xRRGGBBAA` 打包和读取，写出使用与 C++ `lround` 一致的半值远离零舍入；同时保留 GuiDocument 视图颜色的既有编码路径，未混淆数据属性与显示属性。
- `App::FeatureTest`、`App::FeatureTestException`、`App::Part`、两类 Assembly 对象及三类 TechDraw 视图进入 FCStd 静态宿主清册；`Colour/Color/TextColor` 作为原生静态属性写入，不携带动态 `group/doc/attr` fallback，结构化 decoder 可恢复四通道 byte fraction。
- 生产 `PropertyEditor` 为数据颜色增加原生颜色 swatch 与独立 alpha 数值输入；swatch 仅为浏览器显示夹取 RGB，提交仍保留原生有限数值语义，失败时控件恢复旧值；视图颜色继续使用原来的不透明十六进制编辑器。
- 聚焦测试锁定八类宿主、深拷贝、事件/版本、非法输入零污染、有限越界值、透明/不透明 packed 边界、无动态属性元数据及数据/视图作用域分离；`test:freecad-property-color-facade`、完整 `test:facade` 199 项、生产 `build` 与 `git diff --check` 均通过。构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertycolor-F`

#### 执行过程与完成证据

- 通过公开 Facade 将普通 `App::FeatureTest.Colour` 从 `[0,0,0,1]` 改为 `[0.125,0.375,0.625,0.875]`；同一 transaction ID 内只产生 `property.before-change -> property.changed -> transaction.committed`，文档版本 `1 -> 2`、dirty 为真且宿主进入 touched。
- setter 对调用方 RGBA 数组做深拷贝，`getObject()` 暴露的数组也不能反向修改内部状态；undo 精确恢复黑色不透明值和版本 1，redo 返回目标 RGBA 和版本 2，历史栈可用性按预期切换。
- redo 后依次注入旧版本写入、预取消 signal、NaN 通道和 immutable 颜色直接写入；四项均在提交前 fail-closed，文档 JSON、属性事务事件数及 undo/redo 可用性完全不变。
- PropertyColor 属性事务不分配 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-color-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertycolor-G`

#### 执行过程与完成证据

- 新增受限的 `rewriteFcstdColorProperty` 及 Facade `project.fcstd.rewriteColor`：先验证对象、属性、`App::PropertyColor` TypeId、唯一原生 `PropertyColor` payload、四通道有限目标值和预期旧值，再用结构化 XML parser/builder 修改 packed RGBA；目标对象标记 touched，其他 ZIP 条目逐项复制。
- focused test 锁定 `0x11223344 -> 0x336699CC`、错误 expectedValue 和 NaN 目标的 fail-closed 边界；改写后重新 inspect/decode，确保 FCStd 的 byte 量化结果与目标四通道一致。
- 真实链路由 FreeCAD 1.1.1 创建 `0x11223344` -> Web 校验并编辑为 `[0.2,0.4,0.6,0.8]`/packed `862362060` -> FreeCAD reopen/recompute -> saveAs -> reopen；两次原生回读均为同一组预期 float32 值 `[0.200000003,0.400000006,0.600000024,0.800000012]`。
- Web 编辑前后对象集及目标属性之外的 inspection 语义一致；`Document.xml` 之外的 4 个原生归档条目逐字节保留，宿主保持 `App::FeatureTest`、普通 property status/editor mode、无 Shape，未知语义漂移为零。
- `probe/check:freecad-property-color-roundtrip`、完整 `test:facade` 199 项、生产 `build` 与 `git diff --check` 均通过；G 阶段证据已加入连续账本，构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertycolor-H`

#### 执行过程与完成证据

- 新增真实 Chrome harness，直接复用生产 `PropertyEditor` 和 `createProductionFacade`；通过原生 HTMLInputElement value setter 与浏览器事件真实操作颜色 swatch `#000000 -> #336699`，再将 alpha `1 -> 0.8`，最终 RGBA 为 `[0.2,0.4,0.6,0.8]`，文档版本 `1 -> 3`、dirty 为真、宿主 touched 且 UI 无错误。
- 首次浏览器运行因直接赋 `input.value` 同步了 React value tracker，未触发颜色 `onChange`；该次报告保持 failed 并完整 dispose。harness 改为绕过 tracker 的原生 setter 后重新执行通过，没有把测试注入问题伪造成产品成功。
- 通过具名 `bitbybit-persistence` Worker 执行 initialize、save/load、checkpoint、recovery、resource put/get/release 和 dispose；报告锁定 `sqlite-opfs`、SQLite WASM/OPFS 可用及恢复完整性 `ok`。
- 浏览器持久化重载保持 `App::PropertyColor` 与四通道目标值；FCStd metadata 识别为原生 `PropertyColor`，packed 值为 `862362060`。OPFS 资源 29 bytes 往返一致，release 后读取为 null，独立 marker 已删除。
- 最终 Shape/内核引用均为 0，持久化 Worker 终止事件已记录；`test/check:chrome-property-color`、E/F focused 测试、生产 `build` 与 `git diff --check` 均通过，H 阶段机器证据已追加到连续账本。

### `PROP-app-propertycolor-I`

#### 执行过程与完成证据

- 新增 Color 独立 promotion 生成器/checker，对 A-H 的连续证据、四通道有限 RGBA 值模型、FCStd `PropertyColor` packed payload、真实 FreeCAD 回放及 Chrome 持久化结果进行闭环校验。
- `App::PropertyColor` 的 8 条记录全部从 opaque 提升为 native-editable；8 个宿主属性均保持普通可写状态，数据域四通道 RGBA 与视图域 `#RRGGBB` 继续分流，FCStd 明确保留 8-bit packed 量化边界。
- 全局语义分区更新为 `26 / 4321 native-editable`、`5 / 683 specialized`、`54 / 506 opaque`，native codec 总记录为 `5004`；exact blocker 同步为 `54 runtime property types and 506 records remain opaque-only`，系统 exact 仍为 false。
- `EX-DOC-01`、当前工作文档、主执行计划及早期 Acceleration/Area/BoolList promotion 报告已同步到当前全局快照，避免已完成证据携带过期分区统计；三项旧 promotion checker 重跑通过。
- `generate/check:freecad-property-color-promotion`、`probe/check:freecad-native-property-semantics`、Property status oracle 与 `git diff --check` 均通过；I 阶段证据已加入连续账本，下一步重建活动队列并运行 execution-plan 总检。

### `PROP-app-propertycolorlist-A`

#### 执行过程与完成证据

- Color I 登记后活动队列重建为 `523 completed / 1 in-progress / 1232 pending`，`check:execution-plan` 全部通过，唯一队首切换到 `PROP-app-propertycolorlist-A` 并直接接领。
- 从 FreeCAD 1.1.1 运行时清册锁定 2 条 `App::PropertyColorList` 记录，宿主为 `App::FeatureTest` 与 `App::FeatureTestException` 的 `ColourList`；两项均 available、状态为空且可写，默认值均为单个黑色不透明颜色 `[[0,0,0,1]]`，无 Shape 或跨属性前置。
- 列表输入边界由 `PropertyListsBase` 与 `PropertyColorList::getPyValue` 源码共同锁定：接受 sequence、iterable、单个颜色值及整数索引字典，字典 `-1/current-size` 可追加；每个元素复用 PropertyColor 的 3/4 元 float tuple、3/4 元 integer tuple和 packed `0xRRGGBBAA` setter。
- FCStd XML 为 `<ColorList file="property-name"/>`，非空值写入同名外部二进制资源，布局固定为 little-endian `uint32 count` 后接逐项 `uint32 packed RRGGBBAA`；空列表使用空 file 属性，1.1 前读取时逐项反转 alpha。
- `generate/check:freecad-property-colorlist-inventory` 与 `git diff --check` 均通过；A 阶段仍保持 `opaque-fcstd-proxy`，真实成功、失败和变异边界留给 B/C/D。

### `PROP-app-propertycolorlist-B`

#### 执行过程与完成证据

- 在 `App::FeatureTest` 与 `App::FeatureTestException` 两个清册宿主上经公开 Python property setter 覆盖 empty、单 float tuple、混合 float/byte/packed 元素、单 packed 标量、generator iterable、字典索引更新/追加、257 项大列表和恢复值。
- 原生容器归一化符合 A 阶段源码边界：单 packed 标量变为单项列表，generator 被完整消费；`{1: 0x11223344, -1: (0,255,0,128)}` 在两项基线上更新索引 1 并追加第三项，值顺序和 alpha 均精确锁定。
- 混合元素逐项复用 PropertyColor float32/byte/packed 归一化；257 个 `0x01020304` 全部回读为同一 RGBA，未发生截断、重排或共享引用，最后精确恢复默认 `[[0,0,0,1]]`。
- 普通宿主每阶段均为 `Up-to-date / Valid`；`FeatureTestException` 在第一次实际变更重算后固定进入 `Touched + Invalid / Testexception ;-)`，属性写入、列表长度和恢复不受影响，该诊断明确归类为 intrinsic host diagnostic。
- 两宿主的 TypeId、空 status/editor mode、无 Shape 适用性和对象集均保持稳定；`probe/check:freecad-property-colorlist-success` 与 `git diff --check` 均通过，B 阶段机器证据已加入连续账本。

### `PROP-app-propertycolorlist-C`

#### 执行过程与完成证据

- 真实失败探针分离 6 个原生接受 coercion：bool packed 标量、bytes 整数序列、裸 3/4 元同类 float/integer tuple 单颜色、2 元 packed tuple 颜色序列和空字典清空；tuple 的单颜色/列表消歧据实回写 A 清册，没有把接受分支伪造成失败。
- `None`、裸 float list、float/int 混合 tuple、短 nested tuple、含 `None` 的列表、标量 float、字符串、nested list、非整数字典键和正负越界索引共 11 项精确拒绝且保持原列表；对象集全程不变。
- 字典 `{0: 0x01020304, 1: None}` 是唯一非原子失败：索引 0 已变更后，索引 1 抛出 TypeError，原生属性留下部分变异；checker 显式锁定该行为，后续 Facade 必须把公开事务边界设计与此原生 Python setter 风险区分开。
- editor `ReadOnly` 只约束 UI，Python setter 仍可将两项列表替换为一项；追加 `Immutable` 后精确拒绝并报 `Object attribute 'ColourList' is read-only`，解除状态后 status/editor mode 恢复为空。
- 活动事务中将两项基线改为三项混合颜色，abort 立即恢复列表但对象保持 Touched，后续 recompute 返回 `Up-to-date / Valid`；同步 setter 无 cancel hook，由 Document transaction abort 替代。
- `probe/check:freecad-property-colorlist-failure`、更新后的 A checker 与 `git diff --check` 均通过，C 阶段机器证据已加入连续账本。

### `PROP-app-propertycolorlist-D`

#### 执行过程与完成证据

- 对 `App::FeatureTest` 与 `App::FeatureTestException` 分别执行 `before -> edit -> recompute -> restore -> recompute`；统一目标含 float、packed、byte 和全透明四种颜色，完整列表顺序与逐通道 float32 回读均由 checker 锁定。
- 两宿主都从默认 `[[0,0,0,1]]` 真实变异为四项列表，并在恢复阶段精确返回默认值；对象集、无 Shape 适用性、TypeId、空 status/editor mode 全程保持不变。
- 普通宿主状态序列精确为 `Valid -> Touched -> Valid -> Touched -> Valid`，证明整表 setter 立即触发 touched 且 recompute 清除状态。
- `FeatureTestException` 在第一次重算后进入固有 `Touched + Invalid / Testexception ;-)`，恢复属性不清除该宿主诊断，但颜色列表仍精确恢复。
- `probe/check:freecad-property-colorlist-mutation` 与 `git diff --check` 均通过，D 阶段机器证据已加入连续账本。

### `PROP-app-propertycolorlist-E`

#### 执行过程与完成证据

- 将 `App::PropertyColorList` 接入 typed `ColorListValue`、Facade 原生可编辑类型与文档/持久化快照深拷贝；公开 setter 只接受有序四通道有限 RGBA 数组，非法长度、NaN 和字符串输入均在事件及版本变更前原子拒绝，未复刻原生 Python 字典逐项写入可能留下部分变异的非原子风险。
- FCStd writer 按 FreeCAD 原生格式输出 `<ColorList file="..."/>` 和 little-endian `uint32 count + uint32 packed RRGGBBAA[]` 外部资源；同名属性按 `ColourList`、`ColourList1` 唯一化，空列表固定 `file=""` 且不生成资源，数据属性不再携带动态 `group/doc/attr` fallback。
- inspector 新增严格 ColorList hydration：缺失、截断、count/字节数不一致或非法资源路径全部 fail-closed；结构化 decoder 恢复逐项 8-bit RGBA 量化值。`rewriteMetadata` 会移除旧的已知 ColorList 条目并按当前文档重建，避免与 opaque 资源碰撞或保留陈旧 payload。
- 生产 `PropertyEditor` 新增 ColorList 逐项编辑器，每项提供颜色 swatch、独立 alpha 数值输入和删除按钮，并提供添加颜色按钮；所有提交仍经公开 Facade，未从 UI 直接写文档状态。
- 聚焦测试锁定嵌套数组双向深拷贝、单事务事件序列、非法嵌套值零污染、两个同名宿主的资源唯一化、二进制字节布局、空列表、缺失资源拒绝和 metadata rewrite 量化结果。`test:freecad-property-colorlist-facade`、完整 `test:facade` 199 项、PropertyColor/BoolList 相邻回归、`test:fcstd-roundtrip`、生产 `build` 与 `git diff --check` 均通过；构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertycolorlist-F`

#### 执行过程与完成证据

- 通过公开 Facade 将普通 `App::FeatureTest.ColourList` 从单个黑色不透明项改为两个 RGBA 项；同一 transaction ID 只产生 `property.before-change -> property.changed -> transaction.committed`，文档版本 `1 -> 2`、dirty 为真且宿主进入 touched。
- setter、Facade 快照、history undo/redo 均验证嵌套颜色项的深拷贝：修改调用方数组或 `getObject()` 返回值不会反向改变文档；undo 恢复单项和版本 1，redo 恢复双项和版本 2，历史栈可用性符合预期。
- redo 后依次注入旧版本写入、预取消 signal、含 NaN 的嵌套颜色和 immutable ColorList 写入；四项均在提交前 fail-closed，文档 JSON、属性事务事件数及 undo/redo 可用性完全不变。
- ColorList 事务不分配几何 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-colorlist-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertycolorlist-G`

#### 执行过程与完成证据

- 新增受限 FCStd 直改入口 `rewriteFcstdColorListProperty` 并经公开 Facade `project.fcstd.rewriteColorList` 暴露；入口校验对象、属性、原生类型、唯一 XML declaration/data/payload、外部资源路径、旧值前置条件及目标 RGBA 有限值，任一歧义均 fail-closed。
- 直改保持原有 `ColourList` 资源路径，只将目标二进制按 `uint32 count + packed RRGGBBAA[]` 重写并标记宿主 touched；写后重新 inspect/decode，按 8-bit 原生量化值闭环校验。聚焦测试同时锁定正常改写、旧值不匹配和 NaN 拒绝。
- 真实 FreeCAD 链路从单项 `0x11223344` 文件开始，经 Web 改成 `[[0.2,0.4,0.6,0.8],[17/255,34/255,51/255,68/255]]`，随后由 FreeCAD 打开、recompute、另存并再次打开；两次原生回读均为相同 float32 量化结果，未发生顺序或 alpha 漂移。
- `ColourList` 路径保持不变，资源由 8 字节变为 12 字节且内容确实改变；其余 3 个 opaque archive entry 逐字节保持，对象集合、TypeId、status/editor mode、无 Shape 状态及非目标语义对象均保持，`zeroUnknownDrift=true`。
- `probe/check:freecad-property-colorlist-roundtrip`、E/F 聚焦测试、完整 `test:facade` 199 项、生产 `build` 与 `git diff --check` 均通过；G 阶段机器证据已加入连续账本。

### `PROP-app-propertycolorlist-H`

#### 执行过程与完成证据

- 新增独立真实 Chrome `PropertyColorList` harness，直接挂载生产 `PropertyEditor` 和 `createProductionFacade`；页面在 cross-origin isolation 下启动实际 `bitbybit-persistence` Worker，没有使用 DOM 外捷径写文档。
- 真实 UI 从单项黑色列表出发，连续点击两次新增达到 3 项、删除第 3 项回到 2 项，再通过两个原生 color input 和两个 alpha number input 写成 `[[0.2,0.4,0.6,0.8],[17/255,34/255,51/255,0.4]]`；所有 aria label、输入类型、颜色显示值、项目数和无 UI 错误均由 checker 锁定。
- 7 次 UI 提交将文档版本从 1 推进到 8，dirty 为真且宿主为 touched；SQLite OPFS save/load、version 8 checkpoint 和 recovery integrity 均恢复完整嵌套列表与 `App::PropertyColorList` 类型。
- 浏览器内 FCStd 检查确认原生 `ColorList` 元素、`ColourList` 外部资源路径和 12 字节二进制 payload；独立资源 put/get/release 往返成功，OPFS marker 创建后可删除。
- Worker 请求覆盖 initialize/save/load/checkpoint/recovery/resource/dispose，最终 persistence Worker 已 terminate；几何 `shapeCount=0`、`kernelReferenceCount=0`。`test/check:chrome-property-colorlist`、E/F 聚焦测试、生产 `build`、JSON 校验与 `git diff --check` 均通过，H 阶段机器证据已加入连续账本。

### `PROP-app-propertycolorlist-I`

#### 执行过程与完成证据

- 新增 ColorList 独立 promotion 生成器/checker，逐项核对 A-H 连续账本、两个可写原生宿主、有序变长 RGBA 值模型、外部 FCStd 二进制资源、真实 FreeCAD 往返和 Chrome OPFS 结果。
- `App::PropertyColorList` 的 2 条记录从 `opaque-fcstd-proxy` 提升为 `native-editable-codec`；能力报告锁定 `ColorList` 元素、`ColourList` 路径、12 字节双项 payload、逐项 8-bit packing 和零未知语义漂移。
- 全局 Property 分区同步为 `27 / 4323 native-editable`、`5 / 683 specialized`、`53 / 504 opaque`，native codec 总记录为 `5006`；exact blocker 更新为 `53 runtime property types and 504 records remain opaque-only`，系统 exact 保持 false，`EX-DOC-01` 继续 in-progress。
- 主执行计划、当前工作文档、exact parity blocker 以及 Acceleration/Area/BoolList/Color 四份既有 promotion 报告均同步到新快照；四个旧 checker 与 ColorList 新 checker 全部重跑通过，没有保留陈旧分区数字。
- `generate/check:freecad-property-colorlist-promotion`、`probe/check:freecad-native-property-semantics`、Property status oracle、exact parity plan、JSON 校验和 `git diff --check` 均通过；I 阶段证据已加入连续账本。

### `PROP-app-propertydirection-A`

#### 执行过程与完成证据

- 从锁定 FreeCAD 1.1.1 运行时清册确认 2 条 `App::PropertyDirection`：`Part::Mirroring.Normal`（Plane 组）和 `Part::ProjectOnSurface.Direction`（Projection 组）；两项均 available、无 status、可写，默认值均为 `[0,0,1]`。
- 源码锁定 Direction 直接继承 `App::PropertyVector`，属性 setter 接受 `Base.Vector` 或恰好三个 float/integer 分量的 tuple，属性层不执行归一化；暴露 `x/y/z` 子路径，编辑器为 `Gui::PropertyEditor::PropertyDirectionItem`，并沿用 `Base::Unit::Length`。
- FCStd 继承 `<PropertyVector valueX="..." valueY="..." valueZ="..."/>` 三个 decimal double 属性，无外部资源；外层 Property TypeId 仍为 `App::PropertyDirection`。
- 属性写入本身不要求 Shape，但宿主成功执行依赖几何输入且下游 `gp_Dir` 要求非零方向：Mirroring 依赖 Source/Base，MirrorPlane 可覆盖 Base/Normal 并令两者 ReadOnly；ProjectOnSurface 依赖单一 SupportFace 与 Projection 列表。
- `generate/check:freecad-property-direction-inventory`、JSON 校验和 `git diff --check` 均通过；A 阶段保持 `opaque-fcstd-proxy`，真实 setter、重算、失败和 Shape 变异证据留给 B/C/D。

### `PROP-app-propertydirection-B`

#### 执行过程与完成证据

- 真实 FreeCAD 为 `Part::Mirroring.Normal` 建立 2×3×4 Box 镜像，为 `Part::ProjectOnSurface.Direction` 建立 z=-5 的封闭 Wire、z=0 平面 Face、Edges 模式投影夹具；两个宿主默认和恢复均为 `[0,0,1]`、Valid、Up-to-date。
- 每个宿主依次接受轴向 tuple、整数 tuple `[1,1,2]`、非单位 float tuple `[0.25,-0.5,1.5]`、`Base.Vector`、近轴有限值和大有限值；属性回读逐分量保持请求值，没有隐式单位化。
- Mirroring 每个成功阶段均产出有效 Solid（1 solid/6 faces/12 edges/8 vertices，volume 24，area 52）；ProjectOnSurface 每个成功阶段均产出有效 Compound（4 edges/4 vertices，无 solids/faces），对象集和属性 TypeId/status/editor mode 均稳定。
- setter 后两宿主都进入 Touched；Mirroring `MustExecute=true`，ProjectOnSurface 保持原生 `MustExecute=false`，随后 recompute 均返回成功并恢复 Up-to-date/Valid。除重复轴向项外，各方向均产生不同 BRep 哈希，恢复阶段与默认 BRep/bounds 精确一致。
- `probe/check:freecad-property-direction-success`、JSON 校验与 `git diff --check` 均通过；B 阶段机器证据已加入连续账本，零向量、NaN/Inf、空依赖和取消行为留给 C。

### `PROP-app-propertydirection-C`

#### 执行过程与完成证据

- 原生 setter 进一步锁定 Python coercion：混合 integer/float 三元 tuple 和 bool 三元 tuple 均被接受，bool 按 `1/0` 回读；`None`、list、长度 2/4 tuple、含 string 分量、标量 float/int 共 7 类输入精确 TypeError 拒绝，方向值和对象集零污染。
- 零向量在 Property 层被接受，但两个真实宿主重算后均进入 `Touched + Invalid / gp_Dir() - input vector has zero norm`；`document.recompute()` 仍返回 true，最后有效 Solid/Compound Shape 及 BREP hash 保持不变，没有把宿主错误误报成 setter 拒绝。
- NaN 与正负 Infinity 的宿主边界改用独立 FreeCAD 子进程并各复跑两次：Mirroring 六次均在 setter 触发的同步 `onChanged/recompute` 内达到 5 秒硬超时；ProjectOnSurface 六次均记录 `Courbes non jointives` 后以状态 0 提前退出且无完成标记。两类结果均稳定，主探针不会被单个原生挂起吞掉。
- 移除 Mirroring Source 和 ProjectOnSurface SupportFace 分别得到 `No object linked`、`No support face specified` 并保留最后有效 Shape；清空 Projection 是原生合法边界，宿主保持 Valid 并产出 Null Shape，未伪造成依赖失败。
- editor `ReadOnly` 仍只约束 UI，Python setter 可写；`Immutable` 精确拒绝并报 `Object attribute 'Normal' is read-only`。活动事务中方向变异后 abort 恢复 `[0,0,1]` 和对象集，宿主经重算回到 Up-to-date/Valid；同步 setter 无 cancel hook，由 Document transaction abort 替代。
- `probe/check:freecad-property-direction-failure`、JSON 校验与 `git diff --check` 均通过；C 阶段机器证据已加入连续账本。

### `PROP-app-propertydirection-D`

#### 执行过程与完成证据

- 对 `Part::Mirroring.Normal` 和 `Part::ProjectOnSurface.Direction` 分别执行 `before -> [0.25,-0.5,1.5] -> recompute -> [0,0,1] -> recompute`，两个宿主的属性值均真实变异并精确恢复。
- Mirroring 的 BREP SHA-256 由 `ba656082...` 变为 `78c098a6...` 后恢复，ProjectOnSurface 由 `ba524197...` 变为 `3c78808d...` 后恢复；两者的 bounds、拓扑数、面积、体积和完整 Shape 快照均回到初值，不是仅比较方向数值。
- 两个宿主状态序列均为 `Valid -> Touched -> Valid -> Touched -> Valid`；Mirroring setter 后 `MustExecute=true`，ProjectOnSurface 延续原生 `MustExecute=false`，重算后均回到 Up-to-date/Valid。
- 属性 TypeId、空 status/editor mode、对象集和有效 Solid/Compound 拓扑全程不变；`probe/check:freecad-property-direction-mutation` 与 `git diff --check` 均通过，D 阶段机器证据已加入连续账本。

### `PROP-app-propertydirection-E`

#### 执行过程与完成证据

- 将 `App::PropertyDirection` 加入 Facade 原生可编辑类型并复用 `VectorValue` 的三轴有限数值模型、深拷贝和事务路径；公开 setter 接受非单位有限向量及原生属性层允许的零向量，NaN、数组和缺分量对象在事件与版本变更前原子拒绝。
- FCStd writer 保留外层 `App::PropertyDirection` TypeId，内层严格写为 `<PropertyVector valueX="..." valueY="..." valueZ="..."/>`；decoder 只接受该原生 payload，伪装成 String 的 JSON 向量保持 fail-closed。
- `Part::Mirroring.Normal` 与 `Part::ProjectOnSurface.Direction` 加入静态原生宿主清册，写出时不携带动态 `group/doc/attr` fallback；两个对象 TypeId 进入 recognized 范围，结构化 inspector 可恢复完整非单位方向。
- 生产 `PropertyEditor` 复用三轴数值编辑器，所有提交继续经过公开 Facade；没有增加 UI 到内核或 FCStd 的旁路，也没有在 UI 层擅自归一化方向。
- 聚焦测试锁定深拷贝、事件/版本、零向量、非法值零污染、两个宿主的原生 XML 和严格 decoder；`test:freecad-property-direction-facade`、完整 `test:facade` 199 项、Color/ColorList 相邻回归、`test:fcstd-roundtrip`、生产 `build` 与 `git diff --check` 均通过，构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertydirection-F`

#### 执行过程与完成证据

- 通过公开 Facade 将 `Part::Mirroring.Normal` 从 `{x:0,y:0,z:1}` 改为 `{x:0.25,y:-0.5,z:1.5}`；同一 transaction ID 内只产生 `property.before-change -> property.changed -> transaction.committed`，文档版本 `1 -> 2`、dirty 为真且宿主进入 touched。
- setter、公开对象快照和 history 均保持向量深拷贝；undo 精确恢复初值/版本 1，redo 返回非单位目标值/版本 2，历史栈可用性按预期切换。
- redo 后依次注入旧版本写入、预取消 signal、Infinity 分量和 immutable Direction 写入；四项均在提交前 fail-closed，文档 JSON、属性事务事件数及 undo/redo 可用性完全不变。
- Direction 属性事务不分配 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-direction-transaction` 与 E 阶段 focused test 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertydirection-G`

#### 执行过程与完成证据

- 新增受限的 `rewriteFcstdDirectionProperty` 及 Facade `project.fcstd.rewriteDirection`：先验证对象、属性、`App::PropertyDirection` TypeId、唯一 `PropertyVector` payload、三轴有限目标值和预期旧值，再结构化修改 valueX/Y/Z 并标记宿主 touched；写后重新 inspect/decode 闭环确认。
- 真实链路由 FreeCAD 1.1.1 创建 `Part::Box + Part::Mirroring`、初始 Normal `{x:0,y:0,z:1}`，经 Web 改成 `{x:0.25,y:-0.5,z:1.5}`，随后 FreeCAD reopen/recompute、saveAs/reopen；两次原生方向回读均精确保持目标值。
- 目标 Direction 令镜像 Solid 的 bounds 与 BREP 确实变化，同时保持 1 solid/6 faces/12 edges/8 vertices、area 52、volume 24。首次真实检查发现重开重算 BREP hash `78c098a6...` 在 FreeCAD 保存再开后变为 `d2f2dec7...`，未把报告伪写为通过。
- 第二次独立 verify/saveAs/reopen 精确复现相同 `78c098a6... -> d2f2dec7...` 演进；方向、bounds、拓扑、质量属性和 validity 在四个快照中一致，故按主文档登记为 `native-allowed-evolution / brep-serialization`，结构漂移与未知语义漂移均为零。
- Web 编辑前后目标属性之外的 inspection 语义一致，`Document.xml` 外 3 个归档条目逐字节保持，对象集、TypeId、status/editor mode 均稳定；`probe/check:freecad-property-direction-roundtrip`、E/F 聚焦测试与 `git diff --check` 均通过。

### `PROP-app-propertyfile-E`

#### 执行过程与完成证据

- 接续时机器队列唯一活动任务为 `PROP-app-propertyfile-E`；A-D 的原生清册、成功、失败和变异 checker 全部通过，锁定 `App::PropertyFile` 是继承 `PropertyString` 的外部文件路径语义，宿主绝对路径不能直接写入浏览器项目。
- Facade 将 `App::PropertyFile` 纳入原生可编辑属性类型，公开 setter 只接受空值或最长 4096 字符的安全项目相对路径；绝对路径、盘符、URL scheme、反斜杠、NUL、空路径段和 `.`/`..` 路径段均在事务事件和文档版本变化前 fail-closed。
- FCStd writer 保持 FreeCAD 原生 `<Property name="..." type="App::PropertyFile"><String value="..."/></Property>` 结构；`Mesh::Import.FileName` 作为静态原生属性写出，不携带动态属性 fallback。decoder 只接受 `String` payload，并拒绝宿主绝对路径和伪造元素类型。
- 生产 `PropertyEditor` 的普通文本输入仍只调用 `facade.app.document.setProperty()`，没有 UI 到文档或 FCStd 的旁路；`createProductionFacade` 与聚焦测试使用同一 Facade 核心，能力边界是显式项目资源引用代理，不伪装成宿主文件系统访问。
- 首次 focused test 发现 `decodeFcstdPropertyValue()` 的 PropertyFile `try/catch` 分支缺少闭合花括号，已修复语法后重跑。`test:freecad-property-file-facade` 2/2、生产 `build`、四个 A-D checker 和 `git diff --check` 均通过；构建仅保留既有 OCCT chunk 体积警告。

### `PROP-app-propertyfile-F`

#### 执行过程与完成证据

- 新增独立 PropertyFile 事务夹具，普通与 `Immutable` 两个 `Mesh::Import.FileName` 属性均通过公开 Facade 操作；一次成功写入只产生同一 transaction ID 的 `property.before-change -> property.changed -> transaction.committed`，版本 `1 -> 2`、dirty 和 touched 状态正确。
- undo 精确恢复 `mesh-data/cube.stl` 与版本 1，redo 恢复 `project-files/updated.stl` 与版本 2；历史栈可用性按预期切换。
- redo 后依次注入旧版本写入、预取消 signal、`..` 目录穿越、超过 4096 字符的引用和 Immutable 属性写入；五项均在提交前 fail-closed，文档 JSON、属性事务事件数和 undo/redo 状态完全不变。
- PropertyFile 事务不分配 Shape；前后 `shapeCount`、`kernelReferenceCount` 和 `releasedShapeCount` 完全一致，并显式 dispose 项目持久化边界。
- `test:freecad-property-file-transaction` 1/1、E 阶段 focused test 2/2 与 `git diff --check` 均通过，F 阶段证据已加入连续账本。

### `PROP-app-propertyfile-G`

#### 执行过程与完成证据

- 新增受限 `rewriteFcstdFileProperty` 并经公开 Facade `project.fcstd.rewriteFile` 暴露；入口只接受唯一 `App::PropertyFile/String` payload、安全项目相对路径和可选旧值前置条件，结构化修改目标 XML、标记宿主 touched，并逐项复制其他归档条目。
- focused test 锁定成功直改、旧值不匹配和宿主绝对路径拒绝；一次测试失败仅因 XML 属性顺序断言过窄，改为无序属性匹配后通过，未改动实现语义。
- 真实 FreeCAD 链路创建 `Mesh::Import.FileName = .cache/freecad/FreeCAD/data/tests/mesh.obj`，Web 改为 `.cache/freecad/property-file-roundtrip/alternate.obj`，FreeCAD 再开、重算、另存并重开；三阶段路径值均与预期一致。
- 外部资源没有伪装为 FCStd 内嵌数据：初始 OBJ 哈希对应 12 facets/8 points、bounds `[-5,-5,-5,5,5,5]`，目标 OBJ 哈希对应 1 facet/3 points、bounds `[0,0,0,4,3,0]`；目标 Mesh 在原生 resave 后完全稳定，证明 FreeCAD 实际消费了新引用。
- Web 编辑前后目标属性之外的 inspection 语义一致，`Document.xml` 外原生归档条目逐字节保持，对象集、TypeId、status/editor mode、无 Shape/有 Mesh 边界均稳定，`zeroUnknownDrift=true`。
- `probe/check:freecad-property-file-roundtrip`、E/F focused 测试、生产 `build`、JSON 校验与 `git diff --check` 均通过；构建仅保留既有 OCCT chunk 体积警告，G 阶段证据已加入连续账本。

### `PROP-app-propertyfile-H`

#### 执行过程与完成证据

- 新增独立真实 Chrome `PropertyFile` harness，直接挂载生产 `PropertyEditor` 和 `createProductionFacade`；页面在 cross-origin isolation 下启动实际 `bitbybit-persistence` Worker，没有从 DOM 外直接修改文档。
- 真实文本输入将 `FileName` 从 `project-files/initial.obj` 改为 `project-files/chrome-updated.obj`；文档版本 `1 -> 2`、dirty 为真、宿主进入 touched，UI 没有错误，输入类型和 aria label 分别为 `text`、`File name`。
- SQLite OPFS save/load、version 2 checkpoint 和 recovery integrity `ok` 均恢复目标字符串与 `App::PropertyFile` TypeId；浏览器内 FCStd metadata 固定为原生 `String` 元素和相同项目相对路径。
- 63 bytes OBJ 资源通过项目资源 API put/get/release，释放后读取为 null；独立 OPFS marker 创建并删除成功。Worker 请求覆盖 initialize/save/load/checkpoint/recovery/resource/dispose，最终 persistence Worker 已 terminate。
- 最终 `shapeCount=0`、`kernelReferenceCount=0`；`test/check:chrome-property-file`、E/F focused、G checker、生产 `build`、JSON 校验与 `git diff --check` 均通过，H 阶段机器证据已加入连续账本。

### `PROP-app-propertyfile-I`

#### 执行过程与完成证据

- 新增 PropertyFile 独立 promotion 生成器/checker，逐项核对 A-H 连续账本、16 条可写原生宿主、项目相对路径值模型、`String` FCStd payload、真实 FreeCAD 往返与 Chrome OPFS/Worker 释放证据。
- `App::PropertyFile` 的 16 条记录从 `opaque-fcstd-proxy` 提升为 `native-editable-codec`；Facade 边界固定为最长 4096 字符的安全项目相对路径，宿主绝对路径、URL scheme、目录穿越和非法分隔符仍 fail-closed，外部资源字节不伪装成 FCStd 内嵌数据。
- 全局 Property 分区同步为 `29 / 4341 native-editable`、`5 / 683 specialized`、`51 / 486 opaque`，native codec 总记录为 `5024`；exact blocker 更新为 `51 runtime property types and 486 records remain opaque-only`，系统 exact 保持 false，`EX-DOC-01` 继续 in-progress。
- 主执行计划、当前工作文档、exact parity blocker 以及既有 Acceleration/Area/BoolList/Color/ColorList/Direction promotion 报告已同步到同一全局快照，未携带过期分区数字。
- `generate/check:freecad-property-file-promotion`、`check:freecad-native-property-semantics` 及 Property status oracle 通过；I 阶段证据已追加到连续账本，下一步重建活动队列并直接接领 `PROP-app-propertyfileincluded-A`。

### `PROP-app-propertyfileincluded-A`

#### 执行过程与完成证据

- PropertyFile I 登记后活动队列重建为 `550 completed / 1 in-progress / 1205 pending`，唯一队首切换到 `PROP-app-propertyfileincluded-A`并直接接领。
- 从锁定 FreeCAD 1.1.1 运行时清册确认 20 条 `App::PropertyFileIncluded` 记录、15 个宿主类型；20/20 可实例化，状态分区为 11 条空状态、8 条 `ReadOnly`、1 条 `PropOutput`，8 条默认为空，12 条已有文档 transient 副本。
- 源码锁定该类型不是普通路径字符串：setter 要求源文件存在，将外部文件复制到文档 transient 目录，或将可写 transient 文件重命名后接管，并将目标设为只读；替换、同名冲突、Copy/Paste 与 Undo/Redo 都维护每属性文件所有权。
- FCStd 普通归档使用 `<FileIncluded file="..."/>` 并将原始字节作为独立 ZIP entry，force-XML 模式使用 `data` 属性内嵌二进制流；重开后属性值是运行时 transient 路径，不是可移植语义值。浏览器边界因此必须保存项目资源标识与字节，不得暴露或持久化宿主路径。
- 6 条 App/VRML/Image/Robot/Sketcher 记录为直接资源；14 条 TechDraw 记录分别从 `FileGeomPattern/FileHatchPattern/FilePattern/HatchPattern/Template/SymbolFile/ImageFile` 经宿主 `onChanged` 复制字节，派生关系已逐项进入机器清册。
- `generate/check:freecad-property-fileincluded-inventory`、JSON 解析和 `git diff --check` 通过；A 阶段仍保持 `opaque-fcstd-proxy`，真实 setter、字节哈希、同名冲突和宿主派生成功边界留给 B。

### `PROP-app-propertyfileincluded-B`

#### 执行过程与完成证据

- 在 `App::DocumentObjectFileIncluded.File` 上真实验证 UTF-8 字符串路径、bytes 路径、`(sourcePath, archiveName)` 改名、打开的 IO 文件和 `{filename,filter}` 字典五类入口；所有输入均复制到文档 transient 目录，目标字节 SHA-256 与源文件一致且写权限位为 0。
- 已有值后设置空字符串是原生成功 no-op，路径、字节和状态不变；两个属性同时请求 `collision.bin` 时第二个稳定改名为 `collision1.bin`，两份资源路径和字节哈希均不同，没有覆盖。
- 对清册中 20 条宿主属性分别注入匹配的 BIN/VRML/PNG/Robot CSV/SKF/PAT/SVG 真实资源；20/20 都返回 transient 只读文件、20/20 字节哈希精确一致、20/20 对象集不变且重算后为 `Up-to-date / Valid`。
- 8 条 `ReadOnly` 记录的 Python setter 仍按 FreeCAD 原生语义写入，但 editor mode 保持 `ReadOnly`；普通属性写入后进入 Touched，唯一 `PropOutput` 的 `DrawSVGTemplate.PageResult` 按原生语义抑制 touch，`recompute()` 返回 false 且宿主保持 Valid。
- 唯一带 Shape 的 `Sketcher::SketchObjectSF` 在资源写入前后均为空 Shape，边数/面数/点数为 0；其他 19 条明确记录 Shape 不适用，未用伪几何补足成功证据。
- `probe/check:freecad-property-fileincluded-success`、A checker、JSON 解析和 `git diff --check` 均通过；B 阶段机器证据已追加到连续账本。

### `PROP-app-propertyfileincluded-C`

#### 执行过程与完成证据

- 缺失源文件、错误标量类型、错误 tuple 长度、tuple 文件名类型、字典 filename 类型和当前 transient 路径重复设置共 6 类输入分别稳定抛出 `OSError/TypeError`；每项都保持旧路径、字节 SHA-256、只读权限和对象集。
- 首次探针发现目录路径不被原生 setter 拒绝：FreeCAD 在无异常情况下先删除旧 transient 文件，随后将属性留为指向目录的非文件值。该行为已单独分类为 `accepted non-atomic risk`，并验证可通过合法文件重建有效只读副本；后续 Facade 必须预先原子拒绝目录。
- 仅含 `filter` 的字典被接受为值 no-op，文件与对象集不变。editor `ReadOnly` 不禁止 Python setter，仍可生成新的只读 transient 副本；追加 `Immutable` 后精确拒绝并报 `Object attribute 'File' is read-only`，解除后 status 恢复为空。
- 首次事务探针因未开启 `UndoMode=1` 而没有形成 pending transaction，该次报告保持失败并未伪写。补齐原生前置后重跑：编辑使用不同字节 hash，abort 后恢复旧路径与 hash，新 `transaction-write.bin` 副本已删除，pending/active transaction 归零，对象集不变。
- setter 是同步边界且没有 native cancel hook，取消语义明确由活动 Document transaction abort 承担。`probe/check:freecad-property-fileincluded-failure`、B/A checker、JSON 解析和 `git diff --check` 均通过，C 阶段已入账。

### `PROP-app-propertyfileincluded-D`

#### 执行过程与完成证据

- 对清册 20 条宿主属性分别执行 `before -> edited -> recompute -> restored -> recompute`，每个 case 都在同一归档名上用两份不同 BIN/VRML/PNG/Robot CSV/SKF/PAT/SVG 字节替换，排除仅路径改名的假变异。
- 20/20 的 edited SHA-256 与 before 不同，20/20 的 restored SHA-256 精确返回 before；每个 case 的 transient 路径和 basename 三阶段不变，文件始终存在、位于文档 transient 目录且写权限位为 0。
- 19 条非 `PropOutput` 记录的状态序列为 `Valid -> Touched -> Valid -> Touched -> Valid`；8 条 `ReadOnly` 仍保持原 editor mode。`DrawSVGTemplate.PageResult` 在两次替换中都保持 `Up-to-date / Valid`，两次 recompute 均返回 false，锁定 `PropOutput` touch 抑制。
- 20/20 对象集全程不变；`Sketcher::SketchObjectSF` 的唯一 Shape 边界在 before/edited/restored 都为 Null Shape 且 0 edges/faces/vertices，其他宿主保持 Shape 不适用。
- `probe/check:freecad-property-fileincluded-mutation`、A/B/C focused checker 和 `git diff --check` 均通过；D 阶段机器证据已追加到连续账本。

### `PROP-app-propertyfileincluded-E`

#### 执行过程与完成证据

- 将 `App::PropertyFileIncluded` 接入 typed `IncludedFileValue` 与可编辑 Facade；可移植值只保存安全归档基名、SHA-256 资源标识、字节数和 MIME，权威字节始终由项目资源库持有，没有暴露宿主 transient 路径。
- 新增专用 `setIncludedFile` 边界：先深拷贝并存储 `Uint8Array`，再提交结构化属性；同名资源按 FreeCAD 规则分配 `name1.ext`，失败时释放新资源，目录穿越、分隔符、控制字符、非 SHA-256 标识和过大 payload 均在事件及版本变更前 fail-closed。
- FCStd writer 使用原生 `<FileIncluded file="..."/>` 并将字节写为独立 ZIP entry；inspector 对缺失资源、非安全基名和冲突字节拒绝打开，`extractIncludedFiles/storeIncludedFiles` 在导入后重建项目资源标识，空值保持 `<FileIncluded file=""/>`。
- 生产 `PropertyEditor` 新增文件选择器，读取浏览器 `File` 字节后仅通过 Facade 提交；20 条原生宿主的 XML、资源字节、解析、提取、存储、空值和缺失资源边界已由 focused 测试锁定。
- `test:freecad-property-fileincluded-facade`、A-D focused checker 和 `git diff --check` 均通过；E 阶段证据已加入连续账本。

### `PROP-app-propertyfileincluded-F`

#### 执行过程与完成证据

- 新增独立 PropertyFileIncluded 事务夹具，从空资源值经公开 `setIncludedFile` 提交 5 bytes 二进制负载；唯一 transaction ID 下仅产生 `property.before-change -> property.changed -> transaction.committed`，版本 `1 -> 2`、dirty 与 touched 状态正确。
- 调用方 `Uint8Array` 在提交后变异不会污染已存字节；undo 精确恢复 null/版本 1，redo 恢复结构化资源值/版本 2，且权威字节在两侧都可读，没有将历史状态与资源生命周期割裂。
- 预检 stale、预取消和 Immutable 写入全部在资源存储前拒绝；资源写入后取消和 MIME 校验失败均回收已存 hash，文档、事务事件和历史栈零污染。
- 两个同版本并发提交稳定地只允许一个胜者进入版本 3，败者以 stale 拒绝并立即删除其资源；胜者资源仍能完成第二轮 undo/redo。PropertyFileIncluded 事务全程不分配几何 Shape。
- 首次完整 Facade 回归发现 E 阶段将只读 FCStd 的 GuiDocument 和 resource 覆盖错误合并为泛化诊断；已恢复 GuiDocument 既有精确错误并为 opaque/resource 保留独立 fail-closed 分支。`test:freecad-property-fileincluded-transaction`、E 阶段 focused test、A-D checker、完整 `test:facade` 199 项、生产 `build`、JSON 校验与 `git diff --check` 均通过。

### `PROP-app-propertyfileincluded-G`

#### 执行过程与完成证据

- 新增受限 `rewriteFcstdIncludedFileProperty` 并经公开 Facade `project.fcstd.rewriteIncludedFile` 暴露；目标与可选旧值均先按 SHA-256 从项目资源库取回权威字节，再校验唯一对象/属性/`FileIncluded` payload、字节数和逐字节旧值前置条件。
- 直改严格保持原生 `file="payload.bin"` 归档身份，只替换对应 ZIP entry 并标记宿主 touched；改名、缺失项目资源、元数据/字节不匹配和旧值不符全部 fail-closed。写后重新 inspect 闭环核对路径、字节数和内容摘要。
- 真实 FreeCAD 1.1.1 链路创建 `App::DocumentObjectFileIncluded.File`，内嵌 13 bytes `payload.bin`；Web 经项目资源身份替换为 20 bytes 二进制，FreeCAD 随后 reopen/recompute/saveAs/reopen 的 transient 文件 SHA-256 两次均精确为 `09f4e485...`。
- 原生重开和再保存后的资源基名始终为 `payload.bin`，字节始终为 20，文件位于 Document transient 目录且写权限位为 0；对象集、TypeId、property status/editor mode、Up-to-date/Valid 和无 Shape 边界稳定。
- 该最小原生归档精确只含 `Document.xml + payload.bin`，所以排除目标后 opaque 条目数锁定为 0，而非伪造“至少 1 条”。`probe/check:freecad-property-fileincluded-roundtrip`、E/F focused test、完整 `test:facade` 199 项、生产 `build`、JSON 校验与 `git diff --check` 均通过，`zeroUnknownDrift=true`。

### `PROP-app-propertyfileincluded-H`

#### 执行过程与完成证据

- 新增独立真实 Chrome `PropertyFileIncluded` harness，直接挂载生产 `PropertyEditor` 和 `createProductionFacade`；通过 `DataTransfer + File` 驱动真实 `<input type="file">` change 事件，没有从 DOM 外直改文档。
- UI 将空 `App::DocumentObjectFileIncluded.File` 提交为 16 bytes `chrome-resource.bin`；输入类型/标签为 `file / Embedded file`，显示从 `Empty` 变为目标归档名，成功通知只出现一次，文档版本 `1 -> 2`、dirty 和 touched 正确。
- SQLite OPFS save/load、version 2 checkpoint 和 recovery integrity `ok` 均恢复完整 `IncludedFileValue` 与 `App::PropertyFileIncluded` TypeId；浏览器内 FCStd 检查确认 `FileIncluded file="chrome-resource.bin"`、16 bytes 内嵌 entry 与目标字节逐项一致。
- 文档资源按 SHA-256 回读为同一 16 bytes；独立 48 bytes 资源的 put/get/release 后读取为 null，OPFS marker 已创建并删除。Worker 请求覆盖 initialize/save/load/checkpoint/recovery/resource/dispose，最终 persistence Worker 已 terminate。
- 最终 `shapeCount=0`、`kernelReferenceCount=0`；`test/check:chrome-property-fileincluded`、E/F focused test、G checker、生产 `build`、JSON 校验与 `git diff --check` 均通过，H 阶段机器证据已加入连续账本。

## 23. 2026-08-17 接续执行记录

### `PROP-app-propertyintegerset-A..H` 接续审计

#### 执行过程与完成证据

- 接续时发现已提交的连续进度账本包含 `PROP-app-propertyintegerset-A..H`，但活动队列仍停在 A；`check:freecad-active-work-queue` 按预期以 stale 失败，没有把过期队列误当成当前真值。
- 逐项复核 A-H 已有证据：原生清册锁定 2 条可写宿主；成功探针锁定去重、排序、空集合、负数、标量和最大安全整数；失败探针锁定类型拒绝、Immutable/ReadOnly 与事务回滚；变异探针锁定两个 FEM 宿主的编辑/恢复。
- Facade 与事务测试确认 Web 值模型为排序、唯一的安全整数数组，原生 FCStd payload 为 `IntegerSet`；stale、cancel、非法值和资源指标均零污染。真实 FreeCAD 往返保持 `[-1,8]` 且零未知漂移，Chrome SQLite OPFS/Worker 回放恢复相同值并释放资源和 Worker。
- A、B、C、D、E、F、G、H 及 promotion 九个 focused gate 全部通过；重建机器队列后恢复为单一活动任务 `PROP-app-propertyintegerset-I`，未改写既有原生或浏览器证据。

### `PROP-app-propertyintegerset-I`

#### 执行过程与完成证据

- promotion checker 逐项核对 A-H 连续账本、2 条原生宿主、排序唯一安全整数数组、`IntegerSet` FCStd payload、真实 FreeCAD 往返和 Chrome OPFS/Worker 释放证据。
- `App::PropertyIntegerSet` 已从 `opaque-fcstd-proxy` 提升为 `native-editable-codec`；全局快照保持 `34 / 4370 native-editable`、`46 / 457 opaque`，exact blocker 仍为剩余 46 个 opaque Property 类型，系统 exact 保持 false。
- 原生绑定对从未赋值的空集合读取会终止进程；Facade 使用“先赋空数组再读取”的安全等价边界，没有把该原生缺陷隐藏成普通成功路径。
- `check:freecad-property-integerset-promotion` 通过，I 阶段证据已加入连续账本；下一步重建活动队列并直接接领新的唯一 `nextTask`。

### `PROP-app-propertylinklisthidden-A`

#### 执行过程与完成证据

- 从锁定 FreeCAD 1.1.1 桌面 oracle 确认仅有 `Sketcher::SketchObject.Exports` 与 `Sketcher::SketchObjectPython.Exports` 两条记录；两者均可实例化、默认空列表、分组为 Sketch，原生状态位 26 解码为 `PropHidden`。
- 将属性状态 `PropHidden` 与类型的 `LinkScope::Hidden` 分开锁定：前者隐藏普通属性编辑入口，后者使链接不建立 backlink、默认 `getLinks()` 和 DAG 依赖，但 `getLinks(all=true)` 仍可枚举。
- 源码合同确认该类型继承 `App::PropertyLinkList`，只接受已挂接的同文档对象列表，空列表或单 null 列表清空；未开启外部链接标志时拒绝跨文档对象。列表顺序与重复项保留，持久化仍使用 `LinkList/Link`。
- Sketch 的 Exports 用于按对象名解析导出子对象，并兼容从旧 `App::PropertyLinkList` 归档恢复；属性写入本身不要求 Shape。
- 新增 `generate/check:freecad-property-linklisthidden-inventory`，同时锁定 runtime 与四份 FreeCAD 源码的字节数和 SHA-256；生成器、focused checker、脚本语法、JSON 与 package 清单均通过。A 阶段仍保持 `opaque-fcstd-proxy`，真实 setter、回链/依赖、错误边界和宿主行为留给 B/C。

### `PROP-app-propertylinklisthidden-B`

#### 执行过程与完成证据

- 对 `Sketcher::SketchObject.Exports` 与 `Sketcher::SketchObjectPython.Exports` 运行真实 FreeCAD 1.1.1 setter；先显式赋空列表再读取，覆盖单对象、有序双对象、重复对象和恢复空列表。
- 两个宿主都原样保留 `[ExportB, ExportA]` 顺序及 `[ExportA, ExportB, ExportA]` 重复项；属性状态稳定为 `26 / PropHidden`，editor mode 为 Hidden。
- 所有阶段的宿主 `OutList` 与两个目标的 `InList` 均为空，锁定 `LinkScope::Hidden` 不泄漏普通 DAG/backlink；对象集始终为一个 Sketch 与两个 Part Feature。
- 两个空 Sketch 始终是 Valid、Up-to-date 的 Null Shape；目标 box/cylinder 分别保持 1 solid 与稳定 BREP hash，没有用伪 Shape 替代链接成功证据。
- `probe/check:freecad-property-linklisthidden-success`、A checker、脚本语法、JSON 和 `git diff --check` 均通过；B 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-C`

#### 执行过程与完成证据

- 字符串/整数的标量和列表元素分别以精确 TypeError 原子拒绝；跨文档对象以 `PropertyLinkList does not support external object` 的 ValueError 拒绝。五个 case 都保持 `[ExportA, ExportB]`、对象集、Shape hash、OutList/InList 和宿主状态不变。
- 首次原生探针发现该类型不能套用普通属性的只读假设：叠加 editor ReadOnly 后 Python setter 仍写成 `[ExportB]`；叠加 property Immutable 后也仍成功写入。两项均作为 `python-setter-accepted` 原生边界保留，没有伪造拒绝结果。
- 开启 `UndoMode=1` 后，活动事务把列表改成 `[ExportB, ExportA, ExportB]`；abort 恢复原值但宿主暂为 Touched，随后一次原生 recompute 返回 Up-to-date/Valid，隐藏依赖、目标 Shape 与对象集全程不变。
- setter 没有 native cancel hook，取消合同固定为 abort 活动 Document transaction；pending/active transaction 最终归零，外部文档对象也未污染。
- `probe/check:freecad-property-linklisthidden-failure`、B checker、脚本语法、JSON 和 `git diff --check` 均通过；C 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-D`

#### 执行过程与完成证据

- 对 `Sketcher::SketchObject` 和 `Sketcher::SketchObjectPython` 分别执行 `[ExportA, ExportB] -> [ExportB, ExportA, ExportB] -> [ExportA, ExportB]`，真实覆盖顺序变化与重复项。
- 两个宿主在每次 setter 后都由 Up-to-date/Valid 进入 Touched，原生 recompute 后返回 Up-to-date/Valid；最终 value 与完整 semantic snapshot 精确恢复。
- 五个阶段中的属性 TypeId、Sketch 分组、`26 / PropHidden`、Hidden editor mode、Null Sketch Shape、box/cylinder 拓扑与 BREP hash、对象集均保持稳定。
- owner OutList 与 target InList 全程为空，证明参数变异和恢复不会临时泄漏普通 DAG/backlink。
- `probe/check:freecad-property-linklisthidden-mutation`、C checker、脚本语法、JSON 与 `git diff --check` 均通过；D 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-E`

#### 执行过程与完成证据

- 将 `App::PropertyLinkListHidden` 加入 typed Facade，复用有序字符串链接数组但保留独立 TypeId；setter 校验所有目标都属于当前文档，顺序和重复项不归一化，非法类型和未知目标在事件/版本变化前拒绝。
- 依赖收集器仅为普通 `PropertyLinkList` 生成边，Hidden 类型明确保持零依赖；成功写入仍按原生行为将宿主标脏并进入统一事务事件路径。
- FCStd writer 为 `Sketcher::SketchObject.Exports` 与 `Sketcher::SketchObjectPython.Exports` 写出静态原生 `PropertyLinkListHidden + LinkList/Link`，保留 `PropHidden` mask，不携带动态 `group/doc/attr/ro/hide` 元数据；decoder 恢复完整有序重复列表。
- 两个 Sketch TypeId 均进入 recognized/static host 清册；生产 PropertyPanel 已按 `isFreecadPropertyHidden(nativeStatus)` 过滤该属性，不暴露普通 UI 编辑入口，程序化修改只能走 Facade。
- focused test、完整 `test:facade` 199 项、A-D checker、生产 `build`、JSON 与 `git diff --check` 均通过；构建仅保留既有 OCCT 模块 externalized 与大 chunk 警告。E 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-F`

#### 执行过程与完成证据

- 通过公开 Facade 将 Exports 从 `[ExportA, ExportB]` 改为 `[ExportB, ExportA, ExportB]`；一次提交只产生同一 transaction ID 的 `before-change -> changed -> committed`，版本 `1 -> 2`、dirty 与宿主 touched 状态正确。
- setter、文档快照和 history 均深拷贝字符串数组；调用方和读取方后续变异不会污染存储值。undo 精确恢复原列表/版本 1，redo 恢复重复有序列表/版本 2。
- stale 版本、预取消、未知目标和非字符串元素均在提交前 fail-closed；文档 JSON、事务事件数与 undo/redo 可用性零污染。
- 成功、undo/redo 和全部失败路径中的 dependency edges 始终为空，未把 Hidden 链接提升为普通 DAG；Shape 数、内核引用与释放计数完全不变，并显式 dispose 项目持久化边界。
- `test:freecad-property-linklisthidden-transaction`、E focused test、JSON 与 `git diff --check` 均通过；F 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-G`

#### 执行过程与完成证据

- 新增受限 `rewriteFcstdLinkListHiddenProperty` 并经公开 Facade `project.fcstd.rewriteLinkListHidden` 暴露；只允许 `Sketcher::SketchObject/SketchObjectPython.Exports`，写前校验对象、属性 TypeId、所有同归档目标和可选旧值，写后重新 inspect 精确闭环。
- 真实 FreeCAD 1.1.1 链路创建 `Exports=[ExportA,ExportB]`，Web 直改为 `[ExportB,ExportA,ExportB]`；FreeCAD reopen/recompute/saveAs/reopen 均精确保留新顺序与重复项，宿主仍为 Hidden、Valid、Up-to-date 的 Null Shape。
- 原生基线确认 Hidden link 的运行时 `OutList/InList` 始终为空，但 FCStd 加载顺序表仍含目标名：Web 编辑原样保留初始 `[ExportA,ExportB]`，原生再保存后规范化为 `[ExportB,ExportA,ExportB]`。探针分别锁定两层语义，未把 FCStd 加载依赖误判为运行时 DAG。
- 两个目标 box/cylinder 的对象集、拓扑、面积、体积及三阶段 BREP SHA-256 全部稳定；除 `Document.xml` 外 4 个 opaque 条目逐字节不变，排除目标属性后的语义对象不变。
- `probe/check:freecad-property-linklisthidden-roundtrip`、focused Facade test、TypeScript noEmit 与生产 `build` 均通过，`zeroUnknownDrift=true`；G 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-H`

#### 执行过程与完成证据

- 新增独立真实 Chrome `PropertyLinkListHidden` harness，直接挂载生产 `PropertyPanel` 与 `createProductionFacade`；为此只把既有面板函数导出，没有复制或绕开生产过滤逻辑。
- 面板用可见 `Label` 控件证明已正常渲染，而 `Exports` 在程序化修改前后均为 0 个控件、0 次可见文字；`PropHidden` 状态有效，没有把该属性误暴露为普通编辑器。
- 通过同一生产 Facade 将隐藏列表从 `[ExportA,ExportB]` 改为 `[ExportB,ExportA,ExportB]`；版本 `1 -> 2`、dirty/touched 正确，运行时依赖始终为 0，通知错误为空。
- SQLite OPFS save/load、version 2 checkpoint 和 recovery integrity `ok` 均恢复完整有序重复列表及 `App::PropertyLinkListHidden` TypeId；浏览器内 FCStd 检查确认 `LinkList` payload、`67108864 / PropHidden` 与目标列表完全一致。
- Worker 请求覆盖 initialize/save/load/checkpoint/recovery/resource/dispose；44 bytes 独立资源 put/get/release 后读取为 null，OPFS marker 已创建并删除，最终 persistence Worker terminate、`shapeCount=0`、`kernelReferenceCount=0`。
- `test/check:chrome-property-linklisthidden`、E/F focused test、生产 `build`、TypeScript noEmit、JSON 与脚本语法均通过；H 阶段证据已加入连续账本。

### `PROP-app-propertylinklisthidden-I`

#### 执行过程与完成证据

- 将 `App::PropertyLinkListHidden` 纳入全局 native-editable codec 分区；原生语义清册现为 35 种/4372 条 native-editable、5 种/683 条 specialized、45 种/455 条 opaque，15 类 status 仍全部有类型化 Facade 行为。
- promotion 报告逐项锁定 A-H 连续账本、2 条可写记录、2 个 Sketch 宿主、`PropHidden` 属性状态、`LinkScope::Hidden` 运行时零依赖、`LinkList` FCStd 元素、有序重复值和 Web 隐藏面板过滤。
- G 阶段 FreeCAD-Web-FreeCAD 往返 `zeroUnknownDrift=true`，H 阶段 Chrome Worker/OPFS/FCStd/资源释放证据通过；旧有 acceleration、area、boollist、color、colorlist、direction、file、fileincluded、font、force、heatflux、integerset promotion 报告同步到同一 blocker 计数。
- exact parity blocker 已从 `46 types/457 records` 更新为 `45 types/455 records`；`systemExact=false` 仍明确表示剩余 opaque 类型未全部完成，未将局部提升误报为全局 exact。
- `probe/check:freecad-native-property-semantics`、全部 13 个 promotion checker（含本 I）、focused Facade/transaction、Chrome checker、生产 `build`、JSON 与 `git diff --check` 均通过；I 阶段证据已加入连续账本，机器队列随后进入下一个能力。

### `PROP-app-propertylinksubhidden-A`

#### 执行过程与完成证据

- 从锁定 FreeCAD 1.1.1 runtime oracle 确认 4 条记录：`App::Link.ColoredElements`、`App::LinkGroup.ColoredElements`、`App::LinkPython.ColoredElements`、`App::LinkGroupPython.ColoredElements`。
- 四条记录均为可用宿主，分组为 ` Link`，默认 `null`，状态为 `LockDynamic + PropHidden`；继承 `App::PropertyLinkSub`，接受同文档对象与有序子元素名称，空子列表/空对象清空，跨文档和 detached 对象拒绝。
- 源码合同锁定专用 `PropertyLinkSubHidden` 的 `LinkScope::Hidden`：普通 `getLinks`、backlink 和 DAG 排除，`getLinks(all=true)` 仍可枚举；FCStd 使用 `LinkSub/Sub`，Draft Link 扩展动态添加并隐藏 `ColoredElements`。
- 新增 `generate/check:freecad-property-linksubhidden-inventory`，runtime 与 `PropertyLinks.h/.cpp`、`Link.h`、Draft `draftlink.py` 字节数和 SHA-256 provenance 均锁定，4 条记录与类型合同 checker 通过。A 阶段证据已加入连续账本。

### `PROP-app-propertylinksubhidden-B`

#### 执行过程与完成证据

- 真实 FreeCAD 1.1.1 对 `App::Link`、`App::LinkGroup`、`App::LinkGroupPython`、`App::LinkPython` 四个宿主执行 `ColoredElements=(ColorSourceA,[Face1,Face3])`、重复子元素、空子列表和 `None` 清空。
- 四宿主均精确保留有序子元素与重复项；空子列表原生语义是“整对象引用”，不是清空，直接赋 `None` 才清空。属性 TypeId、`LockDynamic + PropHidden`、Hidden editor mode 和对象集稳定。
- LinkGroup 两类无普通边；Link/LinkPython 的 `LinkedObject=ColorSourceA` 仅产生其自身既有 OutList/InList，隐藏 ColoredElements 未额外增加依赖/backlink；两个目标 box/cylinder 拓扑和 BREP hash 全阶段稳定。
- 新增 `probe/check:freecad-property-linksubhidden-success`，四宿主、ordered/duplicates/wholeObject/explicitNull 四阶段全部通过；B 阶段证据已加入连续账本。
