# 11-缺口风险与边界锁定 ## 一票否决风险 | 风险 | 触发条件 | 处理规则 | | --- | --- | --- | | 自研 CNC 语义 | JS/TS 或项目自有 C/C++ 实现 G-code、刀补、固定循环、remap、tooldata、TP、运动学、HAL 数控逻辑,且不能证明是 LinuxCNC thin wrapper | 立即判定不通过,必须迁回 LinuxCNC 源码或明确为非对标扩展 | | vendor drift | vendored 文件与 LinuxCNC 基线不一致且无上游来源说明 | `verify_vendor_sync.sh` 必须失败,不能人工标绿 | | UI 第二真相 | Web UI 坐标、模态、刀具、程序状态与底层 WASM/task/HAL snapshot 不一致 | UI 相关功能不得标 L5 | | 未知失败 | expected_fail 无固定原因,或 unexpected_fail 被计入通过率 | 整体不得宣称完全通过 | | 降级 full-process | 将 task/HAL/motion/full-process 测试降级为普通解释器通过 | Web/WASM simulation runtime 可按 `22` 晋级;宿主 native process topology 仍条件通过或 Blocked | ## 当前已锁定边界 | 边界 | 当前口径 | 解除条件 | | --- | --- | --- | | Python remap Web/WASM | 已解除 | Pyodide CPython/WASM、Native/WASM/Browser 成对 proof、53 行源码覆盖和目标 Web 接线已闭合 | | User-M Web/WASM | 已解除 | M128/M129 预编译 handler、HAL 状态、Node/Web proof 和 release 接线已闭合 | | 任意宿主 User-M/Python 外部进程 | Blocked | 仍需明确 host opt-in、安全策略和人工批准;不由 Web promotion 继承 | | 硬件驱动 | Blocked | 有虚拟边界或真实硬件实验环境,且不影响浏览器沙箱安全 | | 实时内核 | 条件通过或 Blocked | `22` 已定义 Web/WASM runtime proof;`hostRealtimeKernel=false` 必须保留,不能宣称 Linux realtime | | full native process topology | 条件通过 | NML/task/motion/HAL/io 进程拓扑和状态机有 native/WASM/browser 可比证据 | | Vismach/Tk/AXIS 原生 GUI | Web 等效实现 | 继续以 LinuxCNC GUI 为行为参考,不迁移 Tk/Python GUI 作为浏览器实现 | | `04基于Web...txt` 声称通过但无逐项 evidence | 不得自动继承通过 | 按 `13-04验收文档任务对标矩阵.md` 逐项绑定源码、测试和 gate | | HAL Scope/Meter 原生工具 | 条件通过或待实现 gate | `halmeter` 需结构化当前值 JSON;`halscope` 需结构化 waveform JSON、采样/触发/通道字段和 Node/Browser gate,截图、`halGraph`、`halNets` 或 gmoccapy HAL model 不能替代 | | HAL Scope/Meter JSON gate | L3 条件通过 | 两个 JSON、schema/sample/trigger、Web 和 compare gate 已由 `28` 闭合;原生 RT/GTK process 和 L5 交互 UI 不继承通过 | | 五轴 profile 范围 | 条件通过或按 profile 完成 | 默认 `xyzbc-trt`、`xyzac-trt`、`xyzab-tdr`、gmoccapy 和 TRSRN/max5 等必须分别绑定 INI、kins、G-code 和 evidence gate,不能跨 profile 继承通过 | | `loadrt` 运行时动态加载 | Blocked 或预编译 allowlist 条件通过 | 五组件 allowlist 已真实实例化和执行;未知组件及任意 LinuxCNC realtime module 动态链接继续 blocked | | HAL `.comp` 基础组件 | L3 条件通过 | `and2`、`or2`、`not`、`mux2`、`scale` 的 source、halcompile 派生、manifest、truth-table/formula、thread/net 和 Web 代表配置 gate 已通过;仅限 Web/WASM simulation | | HAL component manifest | 已有证据 | manifest、generation report、source/generated hash 和三个 component gate 已闭合;任何 source/generator/generated drift 必须失败 | | HAL component P1 源码同步 | 已有证据 | 五个 `.comp` 的 commit/双清单/字节/hash gate 已通过;1 个非上游 `xyzac-trt_cmds.hal` 由独立 overlay manifest 锁定且全量 gate 通过,overlay 仍不得描述为上游文件 | | HAL component 伪执行 | 已解除并防回退 | `hal_export_funct` callback、servo step、pin/signal 输出变化和 session reset 已由 `27` 验证;若退回只登记 event,component gate 必须失败 | | 自定义/并联运动学运行时加载 | 条件通过或 Blocked | `verify_kinematics_wasm.sh` 只覆盖已预编译 kinematics;任意用户自定义 `.so`/动态链接继续阻塞 | | Project release ready 与 host promotion 混淆 | 一票否决 | `project-release-readiness.json ready=true` 只表示已声明发布范围通过;只要 blocked family/manual lock/host false 存在,就不得宣称宿主能力完成,详见 `25` | | Opt-in 状态跳级 | 一票否决 | host ready、dispatch allowed、默认禁用、native pass、evidence accepted、manual unlock、promotion 必须分层;`ready_disabled_by_default`/skip/block 不能算 pass | | 单 fixture 批量继承 | 禁止晋级 | Python stop-lookahead native pass 只能绑定该 fixture,不能自动晋级全部 Python remap rows | | Process probe 权限扩散到 realtime/hardware | 禁止 | 三个 process opt-in probe 不授权 realtime kernel 或硬件驱动;二者必须另建专用安全任务和人工授权 | ## 已知文档漂移 | 位置 | 问题 | 后续处理 | | --- | --- | --- | | `完善wasm/04基于Web的LinuxCNC兼容数控仿真平台.txt` | 已补齐,但包含“100%/通过/超越”等结论性表述 | 作为任务输入和目标声明;完成结论必须由 working evidence 复核 | | `web-rtcp-5axis-xyzbc-trt-sim-plan/README.md` | native evidence 示例命令仍包含 `/home/mes123456/linuxcnc-master` | 应统一为 `/home/mes123456/cnc_wams/linuxcnc` | | `linuxcnc` 工作树 | 存在未跟踪本地文件 | 不能自动视为上游变更;source/vendor 校验仍以 commit 和 manifest 为准 | ## 风险处理流程 1. 在 `09-联合任务矩阵.md` 新增或更新任务。 2. 在本文件登记边界、风险和解除条件。 3. 修改底层项目代码或证据。 4. 按 `10-联合验证命令清单.md` 复验。 5. 更新 `05-验收证据.md` 和相关底层项目 working 文档。 ## ACC-039 后 HAL Component 边界更新 - 已解除:五个基础 `.comp` 缺少 LinuxCNC 派生生成、precompile manifest、WASM factory、truth-table/formula、thread/net 和 Web 代表配置执行证据的风险。 - 仍锁定:`dynamicLoadrtSupported=false`;未知组件、任意动态模块、宿主 RTAPI realtime、内核模块和硬件驱动不得继承 `ACC-039` 的 Web/WASM 仿真结论。 - 防回退:组件 gate 必须同时校验 source/generated hash、unknown blocked 和第二 HAL session reset;只出现 `loadrt` 文本或 `call:` event 不足以通过。