5.6 KiB
5.6 KiB
06 RUN 实施完成情况矩阵与接续工作
生成时间:2026-06-22
1. 本轮执行范围
按 05-run-program-implementation-detailed-steps.md 核对并补强当前实现,本轮完成:
1. 建立 05 阶段完成情况矩阵。
2. 补强 INI definition contract validation。
3. 修正普通 RUN 的 EMC_TASK_PLAN_RUN 起始行为 line=0。
4. 补充 INI runtime 测试断言。
5. 执行 node smoke 验证。
6. 记录剩余接续工作。
2. 本轮代码改动
2.1 INI contract validation 补强
更新:
app/src/runtime/linuxcnc-ini-runtime.js
tests/node/verify_linuxcnc_ini_runtime.mjs
补强内容:
1. parseLinuxCncIni() 现在保留 sourceText。
2. 解析并输出 emcmot.module / emcmot.servoPeriodNs。
3. 解析并输出 task.module / task.cycleTimeSeconds。
4. emcio.toolTable 保持结构化输出。
5. applyIniConfigToProfile() 将 emcmot/task/emcio 写入 profile。
6. validateIniConfig() 增加 05 要求的关键 gate:
- required sections: [EMC], [DISPLAY], [RS274NGC], [KINS], [HAL], [HALUI], [TRAJ], [EMCMOT], [TASK], [EMCIO]
- COORDINATES 必须是 XYZAC 或 XYZBC
- JOINTS 必须是 5
- JOINT_0..JOINT_4 必须存在
- KINEMATICS 必须包含 sparm=identityfirst
- M428/M429/M430 remap 必须完整
- HAL_PIN_VARS=1 必须存在
- HALCMD 必须连接 motion.analog-out-03 与 motion.switchkins-type
- SERVO_PERIOD / CYCLE_TIME / TOOL_TABLE 必须存在
2.2 RUN 起始行修正
更新:
app/src/state/store.js
修正:
普通 RUN 发送 EMC_TASK_PLAN_RUN line=0。
不再用 activeLine - programStartLine 推导普通 RUN 起始行。
run-from-line 后续应作为独立功能处理。
3. 完成情况矩阵
| 05 阶段 | 状态 | 证据 | 备注 |
|---|---|---|---|
| 阶段 0:建立当前状态基线 | 完成 | smoke:node 完整通过 |
当前基线可复现 |
| 阶段 1:INI definition contract | 完成 | verify_linuxcnc_ini_runtime.mjs |
本轮补强 section/字段 validation |
| 阶段 2:绑定 kinematics runtime | 完成 | verify_linuxcnc_kinematics_runtime.mjs, verify_run_preconditions.mjs |
RUN gate 检查 module/frame source |
| 阶段 3:machine-file staging | 完成 | verify_machine_file_staging.mjs |
selected G-code 与 wasmProgramPath 同步 |
| 阶段 4:初始化 task/HAL session | 完成 | verify_linuxcnc_task_hal_runtime.mjs |
openProgram/session/status 链路通过 |
| 阶段 5:RUN preconditions gate | 完成 | verify_run_preconditions.mjs |
仍可继续扩展更细 ON/AUTO/homed 阻断文案 |
| 阶段 6:RUN command sequence | 完成 | verify_run_feedback_loop.mjs |
本轮修正普通 RUN line=0 |
| 阶段 7:taskHalStatusLoop | 完成 | verify_run_feedback_loop.mjs |
tick/history/STOP 断言通过 |
| 阶段 8:统一 TASK_HAL_STATUS_APPLIED | 完成 | verify_run_feedback_loop.mjs, verify_rtcp_store.mjs |
feedback history 保留 task/HAL/motion source |
| 阶段 9:STOP/ABORT/PAUSE/RESUME/STEP | 部分完成 | verify_linuxcnc_task_hal_runtime.mjs |
PAUSE/RESUME 有测试;STOP 有 feedback-loop 测试;STEP/ABORT 仍需专门断言 |
| 阶段 10:UI 显示与交互 | 部分完成 | 现有 browser smoke 未在本轮执行 | 仍需 07 浏览器证据 case |
| 阶段 11:full execution boundary | 完成 | verify_full_execution_boundary.mjs, native audit |
web simulation boundary 通过 |
| 阶段 12:Node smoke 集成 | 完成 | npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node |
完整通过 |
| 阶段 13:浏览器证据采集 | 未完成 | 无新 JSON/截图 | 下一步工作 |
4. 本轮验证结果
通过:
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_ini_runtime.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
关键输出:
linuxcnc_ini_runtime_smoke=ok
gmoccapy_static_build=ok
run_feedback_status_loop_smoke=ok
linuxcnc_task_hal_runtime_smoke=ok
full_execution_boundary_smoke=ok
machine_file_staging_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
smoke:node 已完整通过。
5. 剩余接续工作
下一步建议优先做浏览器证据采集:
1. 扩展 qa/web-rtcp-5axis-site-test/capture-toolpath-preview-cases.mjs。
2. 新增 07-run-preconditions-and-feedback case。
3. 浏览器执行 POWER/HOME/AUTO/RUN。
4. 采集 t=0.2s / 0.5s / 1.0s / 2.0s / 5.0s state。
5. 断言 taskHalStatusLoop.tickCount 和 programRuntimeFeedbackHistory 增长。
6. 断言 feedback sourceMode 不含 fixture-line-playback。
7. 输出 JSON 与截图:
qa/web-rtcp-5axis-site-test/output/run-preconditions-feedback.json
qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/*.png
随后补强控制类测试:
1. ABORT 后 loop active=false,runState/stopped status 正确。
2. STEP 在 task/HAL loaded 时 sourceMode 仍是 linuxcnc-task-motion-hal-wasm。
3. RUN gate 对 machine ON / AUTO / homed / opened-file 增加更细粒度失败断言。
4. taskHalStatusLoop 的 taskPeriodNs/servoPeriodNs 从 INI CYCLE_TIME/SERVO_PERIOD 派生,而不是只使用默认值。
5. xyzbc-trt 增加对称 RUN status loop 测试。
6. 当前结论
当前 RUN 主链路已经满足 05 的 node 侧核心完成标准:
INI contract ready
-> profile/INI/kinematics 一致
-> machine files staged
-> selected G-code opened by task/HAL session
-> RUN sends LinuxCNC task commands
-> taskHalStatusLoop continuously runCycles/readStatus
-> UI/store consumes TASK_HAL_STATUS_APPLIED snapshots
尚未完成的是浏览器端 JSON/截图证据,以及 ABORT/STEP/xyzbc 对称测试的补强。