feat: advance FreeCAD parity verification and runtime boundaries
This commit is contained in:
@@ -8,7 +8,9 @@
|
||||
./npmw run ci:real -- --lane=wasm
|
||||
```
|
||||
|
||||
`--lane=all` 会按 oracle、WASM、Chrome 顺序执行全部 lane。任一命令退出非零都会使整个 lane 失败;运行摘要写入 `.cache/ci/real-verification.json`,该文件不作为仓库基线证据提交。
|
||||
Chrome 还提供显式的两阶段入口:`./npmw run ci:real:chrome` 只启动真实 Chrome harness 并生成报告,`./npmw run ci:check:chrome` 只读取并校验这些报告。CI 会按这两个步骤执行并上传 JSON/截图证据;因此历史报告检查不会被误认为重新执行了浏览器。随后 `test:browser-matrix` / `check:browser-matrix` 会用 Playwright 的 Firefox 和 WebKit 对生产构建执行 shell、OCCT canvas、COOP/COEP、SharedArrayBuffer 和持久化能力 smoke gate;Firefox 强制 OPFS,WebKit 缺少 OPFS 时必须明确报告 `memory-fallback`。
|
||||
|
||||
`--lane=all` 会按 oracle、WASM、Chrome 顺序执行全部 lane。任一命令退出非零都会使整个 lane 失败;完整运行摘要写入 `.cache/ci/real-verification.json`,分阶段运行分别写入 `real-verification-execute.json` 和 `real-verification-check.json`,这些文件不作为仓库基线证据提交。
|
||||
|
||||
oracle lane 默认会重新抓取锁定的 FreeCAD commit 并初始化子模块。仅在本机已经具备该 commit、且需要离线复现时,才可显式使用 `FREECAD_SOURCE_OFFLINE=1`;该模式会拒绝未锁定的 checkout,并跳过网络相关子模块更新,不会替代 CI 的真实 fetch。
|
||||
|
||||
@@ -17,7 +19,7 @@ oracle lane 默认会重新抓取锁定的 FreeCAD commit 并初始化子模块
|
||||
工作流使用标签为 `self-hosted, linux, cad` 的 runner,因为 FreeCAD 原生编译和外围 CAM harness 需要较大的本地工具链。runner 必须提供:
|
||||
|
||||
- Node `22.23.2`、CMake、Ninja、C/C++ 编译器和 Python;
|
||||
- Chrome/Chromium(通过 `CHROME_BIN` 指定)以及可用的无头模式;
|
||||
- Chrome/Chromium(通过 `CHROME_BIN` 指定)、Firefox 和 WebKit(缓存版本不匹配时分别通过 `FIREFOX_BIN`、`WEBKIT_BIN` 指定)以及可用的无头模式;
|
||||
- Emscripten(通过 `EMSDK` 指定)和 OCCT 源码目录(通过 `OCCT_SOURCE_DIR` 指定);
|
||||
- `CAMotics/`、`OpenCAMLib/`、`cnc_wams_gpt6/`、`working_ocl/` 外部工作树。它们不进入 Git,版本由 `config/` 中的锁定清单和 drift check 校验;
|
||||
- FreeCAD 构建所需的系统开发包。`ci:real -- --lane=oracle` 会重新抓取锁定的 FreeCAD 源码、配置、编译、安装并执行 oracle,不接受旧报告代替。
|
||||
|
||||
@@ -182,7 +182,7 @@ Owner:IO。Gate:G5。
|
||||
| FC-10 | IO+ORACLE:FreeCAD→Web→FreeCAD 核心/代理报告 | 无静默丢失;差异全部分类 |
|
||||
| FC-11 | IO+QUALITY:大文件、损坏、取消、中断和恢复 | 能力内不崩溃;超限明确拒绝 |
|
||||
|
||||
P06 已由 `check:fcstd-closure` 聚合关闭:FreeCAD 1.1.1 原生双向 22 场景没有未知差异,未知 proxy 归档逐字节保持;Chrome 锁定 Expression/Link/LinkSubList/TopoRef/Sketcher/GuiDocument/BRep/ElementMap 语义。100 模型 FCStd+BRep 以及 STEP/IGES/BREP 三格式质量、毫米单位和容差矩阵全部通过;DXF/SVG/PDF、OBJ/PLY/STL、IFC、CSV 八种次级格式分别具有成功、错误签名拒绝和字节精确回环。FCStd ZIP/XML/stream 限额、损坏、取消与 checkpoint 恢复由 `check:fcstd-hardening` 锁定。
|
||||
P06 已由 `check:fcstd-closure` 聚合关闭:FreeCAD 1.1.1 原生双向 23 场景没有未知差异,未知 proxy 归档逐字节保持;Chrome 锁定 Expression/Link/LinkSubList/TopoRef/Sketcher/GuiDocument/BRep/ElementMap 语义。100 模型 FCStd+BRep 以及 STEP/IGES/BREP 三格式质量、毫米单位和容差矩阵全部通过;DXF/SVG/PDF、OBJ/PLY/STL、IFC、CSV 八种次级格式分别具有成功、错误签名拒绝和字节精确回环。FCStd ZIP/XML/stream 限额、损坏、取消与 checkpoint 恢复由 `check:fcstd-hardening` 锁定。
|
||||
|
||||
### P07 TechDraw、Spreadsheet、Draft、Plot
|
||||
|
||||
@@ -327,7 +327,7 @@ Points、ReverseEngineering、OpenSCAD、IDF、JT、Material、Import 七个专
|
||||
|
||||
## 16. P10 QA 与发布闭包证据
|
||||
|
||||
QA-01/02 由 24 个测试套件、217 个 Node 用例、100 个成功/50 个失败 FreeCAD golden、19 类 Sketcher 成功/失败 oracle、17 个 PartDesign oracle 和 22 个 FCStd 双向 round-trip 场景关闭。QA-03 的 Chrome 150 生产构建回放 8 个核心流程,桌面/移动截图均为有效 PNG;初始几何预览来自 Bitbybit OCCT,任务态 canvas 仍通过像素和 WebGL 检查。
|
||||
QA-01/02 由 24 个测试套件、217 个 Node 用例、100 个成功/50 个失败 FreeCAD golden、19 类 Sketcher 成功/失败 oracle、17 个 PartDesign oracle 和 23 个 FCStd 双向 round-trip 场景关闭。QA-03 的 Chrome 150 生产构建回放 8 个核心流程,桌面/移动截图均为有效 PNG;初始几何预览来自 Bitbybit OCCT,任务态 canvas 仍通过像素和 WebGL 检查。
|
||||
|
||||
QA-04 三套固定种子 fuzz 覆盖 1000 个 FCStd parser、2000 个 geometry input、2000 个 Sketch solver 模型,均有正/负分类、输入不变性、确定性和 P95。QA-05 覆盖 1000 对象、1000000 三角形、100000 表格单元,Chrome 堆约 35 MB;QA-06 覆盖 Worker/WASM 取消、崩溃、恢复、stale、OPFS 迁移和事务回滚;QA-07 覆盖路径/归档/XML/权限、Addon 和 Script、CSP/依赖审计。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user