feat: establish production facade composition root

This commit is contained in:
2026-08-10 16:28:12 -04:00
parent b962a5c3b5
commit 7f10bba38f
11 changed files with 285 additions and 20 deletions

View File

@@ -0,0 +1,23 @@
# 真实验证 CI
`npm run verify` 负责检查仓库中已生成的证据和静态门禁它不应被误解为重新启动浏览器、FreeCAD 或 WASM。真实验证入口是
```bash
./npmw run ci:real -- --lane=chrome
./npmw run ci:real -- --lane=oracle
./npmw run ci:real -- --lane=wasm
```
`--lane=all` 会按 oracle、WASM、Chrome 顺序执行全部 lane。任一命令退出非零都会使整个 lane 失败;运行摘要写入 `.cache/ci/real-verification.json`,该文件不作为仓库基线证据提交。
## Runner 要求
工作流使用标签为 `self-hosted, linux, cad` 的 runner因为 FreeCAD 原生编译和外围 CAM harness 需要较大的本地工具链。runner 必须提供:
- Node `22.23.2`、CMake、Ninja、C/C++ 编译器和 Python
- Chrome/Chromium通过 `CHROME_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不接受旧报告代替。
工作流中的 `actions/checkout` 不会恢复被 `.gitignore` 忽略的外部工作树runner 镜像或预热步骤必须提前准备它们。缺少任一依赖时harness 应失败并暴露缺失项,而不是降级为读取历史 JSON。