# 05-验收证据 ## 证据索引 | 证据编号 | 任务编号 | 类型 | 命令/页面/文件 | 结果 | | --- | --- | --- | --- | --- | | EV-W5-001 | W5-001 | 文件 | `/home/mes123456/cnc_wams/work/working5` | 已创建 README 和 01-06 工作控制文件 | | EV-W5-020 | W5-020/W5-100/W5-110/W5-120/W5-130/W5-140 | 命令 | `cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app && npm run smoke:node` | 通过,输出包含 `gmoccapy_xyzab_gates_smoke=ok`、`gmoccapy_hal_model_smoke=ok`、`real_linuxcnc_5axis_program_cases_smoke=ok`、`linear_unit_conversion_smoke=ok` | | EV-W5-030 | W5-030 | 命令 | `cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app && npm run build` | 通过,输出 `gmoccapy_static_build=ok` | | EV-W5-040 | W5-040/W5-150 | 命令 | `cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app && npm run smoke` | 通过,输出 `gmoccapy_shell_smoke=ok`、`gmoccapy_dist_smoke=ok` | | EV-W5-110 | W5-110/W5-150 | 命令 | `node ../tests/node/verify_gmoccapy_xyzab_gates.mjs && node ../tests/node/verify_run_preconditions.mjs && bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证下电禁用 Manual/Jog/MDI/Auto,上电未回零只允许 Manual/Jog,回零后允许 Auto/MDI | | EV-W5-160 | W5-120/W5-160 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_profile_boundary.mjs` | 通过,验证 `gmoccapy_postgui.hal` 换刀策略为 `iocontrol-loopback`、手动 gmoccapy 换刀 GUI pins 未连接、3 个 POSTGUI `unlinkp` 被记录 | | EV-W5-161 | W5-020/W5-030/W5-040/W5-160 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增换刀诊断 | | EV-W5-170 | W5-150/W5-170 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs` | 通过,验证 hard-button 模型、通信路径、profile pin 顺序和 `GMOCAPY_HARDWARE_BUTTON` gate 行为 | | EV-W5-171 | W5-020/W5-030/W5-040/W5-170 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖 hard-button DOM 映射和诊断 | | EV-W5-180 | W5-150/W5-180 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs && bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `GMOCAPY_HAL_PIN` 对 ignore-limits、optional-stop、blockdelete、override counts/direct-value/reset pins 的映射和 UI 诊断 | | EV-W5-181 | W5-020/W5-030/W5-040/W5-180 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 HAL input/override 诊断和 Web 控件 | | EV-W5-190 | W5-150/W5-190 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs`、`node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs`、`bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `GMOCAPY_HAL_PIN` 对 jog axis press/release、jog increment rising-edge、turtle jog、delete-message、warning-confirm pins 的映射和 UI 诊断 | | EV-W5-191 | W5-020/W5-030/W5-040/W5-190 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 jog/message HAL pin 诊断和 Web 行为 | | EV-W5-200 | W5-150/W5-200 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs`、`bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `gmoccapy.unlock-settings`、tool measurement HAL_OUT pins、动态 `messages.*` pin 边界和 UI 诊断 | | EV-W5-201 | W5-020/W5-030/W5-040/W5-200 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 settings/tool/user-message 低频 HAL pin 诊断和 Web 行为 | | EV-W5-900 | W5-900 | 命令 | `npm run smoke:node`、`npm run build`、`npm run smoke` | 通过,最终复核确认 working5 当前任务矩阵闭环,Node、静态构建、浏览器冒烟均在当前工作区通过 | ## 命令记录 ### 2026-06-26 R2 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `linuxcnc_kinematics_runtime_smoke=ok` - `linuxcnc_interpreter_runtime_smoke=ok` - `linuxcnc_task_hal_runtime_smoke=ok` - `full_linuxcnc_5axis_source_node_smoke=ok` - `real_linuxcnc_5axis_program_cases_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build ``` 结果:通过,输出 `gmoccapy_static_build=ok`。 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke ``` 结果:通过,输出: - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_xyzab_gates.mjs && node ../tests/node/verify_run_preconditions.mjs && bash ../tests/browser/verify_gmoccapy_shell_browser.sh ``` 结果:通过,输出: - `gmoccapy_xyzab_gates_smoke=ok` - `run_preconditions_ini_profile_smoke=ok` - `run_preconditions_kinematics_smoke=ok` - `run_preconditions_machine_file_smoke=ok` - `gmoccapy_shell_smoke=ok` ### 2026-06-26 R3 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_profile_boundary.mjs ``` 结果:通过,输出: - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `profile_boundary_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `linuxcnc_task_hal_runtime_smoke=ok` - `profile_boundary_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build && npm run smoke ``` 结果:通过,输出: - `gmoccapy_static_build=ok` - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` 本轮新增浏览器断言: - `data-gmoccapy-hal="tool-change"` 必须包含 `iocontrol-loopback`。 - 同一诊断行必须包含 `manual GUI pins disconnected`。 - 同一诊断行必须包含 `3 postgui unlinkp`。 ### 2026-06-26 R4 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs ``` 结果:通过,输出: - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build && npm run smoke ``` 结果:通过,输出: - `gmoccapy_static_build=ok` - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` 本轮新增 Node 断言: - `gmoccapy.v-button.button-0..6` 对应 `tbtn_estop`、`tbtn_on`、`rbt_manual`、`rbt_mdi`、`rbt_auto`、`tbtn_user_tabs`、`tbtn_setup`。 - `gmoccapy.h-button.button-0` 对应底部主页面 `btn_homing`,Web dispatch 为 `HOME`。 - `GMOCAPY_HARDWARE_BUTTON` 忽略 falling edge;rising edge 复用现有 Web gate;未映射或诊断-only pin 给出明确 operator message。 本轮新增浏览器断言: - 侧边 `estop`、`power`、`mode-manual`、`mode-mdi`、`mode-auto`、`mode-jog` 按钮必须带有对应 `data-gmoccapy-hal-pin="gmoccapy.v-button.button-N"`。 - 底部 `HOME` 按钮必须带有 `data-gmoccapy-hal-pin="gmoccapy.h-button.button-0"`。 - `data-gmoccapy-hal="hard-buttons"` 必须包含 `7 right v-button pins`、`4 bottom h-button main refs`、`7 mapped Web buttons`、`rising-edge-only` 和 `insensitive ignored`。 ### 2026-06-27 R5 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs && bash ../tests/browser/verify_gmoccapy_shell_browser.sh ``` 结果:通过,输出: - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `gmoccapy_shell_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build && npm run smoke ``` 结果:通过,输出: - `gmoccapy_static_build=ok` - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` 本轮新增 Node 断言: - `gmoccapy.ignore-limits` 设置 `gmoccapyGui.ignoreLimits`,active 时记录 `command.override_limits()` 请求语义。 - `gmoccapy.optional-stop` 按源码 `_optional_blocks()` 交叉驱动 `optionalBlocks`/block delete;`gmoccapy.blockdelete` 按 `_blockdelete()` 交叉驱动 `optionalStop`。 - override counts 在 count-enable 为 false 时只同步 counts;count-enable 为 true 时按 `gmoccapy_XYZAB.pref` 中 scale 调整 feed/rapid/spindle/jog velocity。 - direct-value 在 analog-enable 为 false 时忽略;analog-enable 为 true 时按 0..1 比例映射滑块范围。 - reset pins 忽略 falling edge,rising edge 将 feed/rapid/spindle override 复位到 100。 本轮新增浏览器断言: - `data-gmoccapy-hal="operator-inputs"` 必须包含 `3 operator pins`、`optional-stop -> block delete`、`blockdelete -> optional stop`。 - `data-gmoccapy-hal="override-inputs"` 必须包含 `4 override targets`、`counts require enable`、`direct-value requires analog-enable`、`reset rising-edge-only`。 - Web override 面板的 feed/spindle 100% reset、ignore limits、block delete、optional stop 控件必须更新 store 状态和最后一次 HAL input DOM。 - 通过 `window.webRtcp5AxisSimulation.dispatch({ type: "GMOCAPY_HAL_PIN", ... })` 验证浏览器内 optional/blockdelete 交叉 pin 行为。 ### 2026-06-27 R6 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs ``` 结果:通过,输出: - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_communication_model_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs ``` 结果:通过,输出: - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app bash ../tests/browser/verify_gmoccapy_shell_browser.sh ``` 结果:通过,输出: - `gmoccapy_shell_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build && npm run smoke ``` 结果:通过,输出: - `gmoccapy_static_build=ok` - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` 本轮新增 Node 断言: - `gmoccapy.jog.axis.jog-x/y/z/a/b-{plus,minus}` 共 10 个 axis jog pins 按 press/release 电平进入和退出 jog 状态。 - `gmoccapy.jog.jog-inc-0..5` 只响应 true/rising edge,`jog-inc-0` 为连续点动,`jog-inc-5` 按 `1.2345 in` 映射为 31.3563 mm。 - `gmoccapy.jog.turtle-jog` 为 level-driven 状态。 - `gmoccapy.delete-message` falling edge 忽略,true 时删除消息并清除 alert/error 语义。 - `gmoccapy.warning-confirm` 记录 active warning dialog 的 confirm pin level。 本轮新增浏览器断言: - `data-gmoccapy-hal="jog-inputs"` 必须包含 `10 axis jog pins`、`6 jog-inc pins`、`press/release level`、`jog-inc rising-edge-only`、`jog-inc-0 continuous`。 - `data-gmoccapy-hal="message-inputs"` 必须包含 `3 message pins`、`delete-message rising-edge-only`、`warning-confirm level-polled`。 - 通过 `window.webRtcp5AxisSimulation.dispatch({ type: "GMOCAPY_HAL_PIN", ... })` 验证浏览器内 jog increment、axis jog press/release、turtle jog、delete-message 和 warning-confirm 状态。 ### 2026-06-27 R7 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs ``` 结果:通过,输出: - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app bash ../tests/browser/verify_gmoccapy_shell_browser.sh ``` 结果:通过,输出: - `gmoccapy_shell_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build && npm run smoke ``` 结果:通过,输出: - `gmoccapy_static_build=ok` - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` ```bash cd /home/mes123456/cnc_wams git diff --check -- web-rtcp-5axis-sim-plan work/working5 ``` 结果:通过,无输出。 本轮新增 Node 断言: - `gmoccapy.unlock-settings` 是 settings pin;默认 `unlock_way=use` 时只记录 pin level,不锁定 setup;显式 HAL unlock 模式下按 level 控制 setup sensitive。 - `gmoccapy.probeheight`、`gmoccapy.blockheight`、`gmoccapy.toolmeasurement`、`gmoccapy.searchvel`、`gmoccapy.probevel` 记录为 HAL_OUT tool measurement pins。 - `gmoccapy_XYZAB.ini` 无 `[TOOLSENSOR]`,所以 auto tool measurement 默认禁用;`gmoccapy_XYZAB.pref` 默认 `use_toolmeasurement=False`、`blockheight=0.0`。 - `gmoccapy_XYZAB.ini` 无 `[DISPLAY] MESSAGE_*`,所以动态 `gmoccapy.messages.*` pins 不创建;Web 对 `messages.*` dispatch 返回明确 operator message。 本轮新增浏览器断言: - `data-gmoccapy-hal="settings-inputs"` 必须包含 `1 settings pins`、`unlock-settings level-driven`、`unlock-way use`、`setup sensitive`。 - `data-gmoccapy-hal="tool-user-inputs"` 必须包含 `5 tool measurement HAL_OUT pins`、`XYZAB no TOOLSENSOR`、`0 user message pins`、`no MESSAGE_*`。 - 通过 `window.webRtcp5AxisSimulation.dispatch({ type: "GMOCAPY_HAL_PIN", ... })` 验证浏览器内 `unlock-settings` 默认忽略和 HAL unlock level 行为、`blockheight` 诊断记录、`messages.*` 无配置提示。 ### 2026-06-27 R8 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke:node ``` 结果:通过。 关键输出摘要: - `linuxcnc_kinematics_runtime_smoke=ok` - `linuxcnc_interpreter_runtime_smoke=ok` - `linuxcnc_ini_runtime_smoke=ok` - `linuxcnc_task_hal_runtime_smoke=ok` - `real_linuxcnc_5axis_program_cases_smoke=ok` - `gmoccapy_xyzab_profile_smoke=ok` - `gmoccapy_communication_model_smoke=ok` - `gmoccapy_hal_model_smoke=ok` - `gmoccapy_xyzab_gates_smoke=ok` - `linear_unit_conversion_smoke=ok` ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run build ``` 结果:通过,输出 `gmoccapy_static_build=ok`。 ```bash cd /home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/app npm run smoke ``` 结果:通过,输出: - `gmoccapy_shell_smoke=ok` - `gmoccapy_dist_smoke=ok` 本轮复核结论: - `04-任务矩阵.md` 中 W5-001 到 W5-900 均为完成。 - 当前源码、测试和文档状态可通过完整 Node、构建和浏览器冒烟验收。 ## 页面/截图/report/job 记录 本轮未生成截图、PDF、job_id 或 report_id。浏览器验收由 headless Chromium smoke 脚本完成。