64 KiB
64 KiB
5 轴数控系统 Web 仿真实现追溯文档
生成时间:2026-06-20 CST
1. 目的
本文件用于追溯后续实现中的每个主要功能来自哪里、参考了哪些 LinuxCNC 源文件/配置/图片、属于什么边界、如何验证。
追溯原则:
界面形态可参考 LinuxCNC Python GUI;
CNC 语义必须来自 LinuxCNC source/WASM/source-derived boundary;
浏览器代码只负责 UI、状态编排、文件会话、可视化和调用边界;
任何 fixture 或 UI-only 结果不得冒充 LinuxCNC runtime proof。
2. 总体追溯表
| 功能 | Web 实现位置 | LinuxCNC 参考 | 边界分类 | 验证方式 |
|---|---|---|---|---|
| gmoccapy 风格 shell | app/src/ui/gmoccapy-shell.ts |
docs/src/gui/images/gmoccapy_5_axis.png, configs/sim/gmoccapy/gmoccapy_XYZAC.ini |
UI reference | browser shell smoke |
| 大号 DRO | app/src/ui/gmoccapy-dro-panel.ts |
gmoccapy 5 axis screenshot, LinuxCNC DRO conventions | UI rendering of runtime state | DOM smoke + state smoke |
| 右侧模式按钮栏 | app/src/ui/gmoccapy-status-sidebar.ts |
gmoccapy screenshot | UI action dispatch | browser button/action smoke |
| 底部运行控制 | app/src/ui/gmoccapy-bottom-controls.ts |
gmoccapy/AXIS run controls | UI action dispatch | playback smoke |
| G-code 当前行 | app/src/ui/gmoccapy-gcode-panel.ts |
AXIS/gmoccapy program display | LinuxCNC output rendering | active-line smoke |
| 上电/急停/复位/模式操作 | app/src/state/store.js, app/src/state/linuxcnc-task-policy.js, app/src/ui/gmoccapy-shell.js |
src/emc/nml_intf/emc.hh, src/emc/task/emctaskmain.cc, src/emc/task/emctask.cc |
LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
| JOG/MDI 操作 | app/src/state/store.js, app/src/state/linuxcnc-task-policy.js, app/src/ui/gmoccapy-shell.js |
src/emc/task/emctaskmain.cc EMC_JOG_INCR, EMC_JOINT_HOME, EMC_TASK_PLAN_EXECUTE |
LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
| 程序运行/暂停/继续/停止 | app/src/state/store.js, app/src/state/linuxcnc-task-policy.js, app/src/ui/gmoccapy-shell.js |
src/emc/task/emctaskmain.cc EMC_TASK_PLAN_RUN, EMC_TASK_PLAN_PAUSE, EMC_TASK_PLAN_RESUME, EMC_TASK_ABORT |
LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
| G-code 文件加载 | app/src/ui/gmoccapy-shell.js, app/src/state/store.js |
AXIS/gmoccapy open program workflow | browser file staging + LinuxCNC interpreter execution | node smoke + browser operator smoke |
| LinuxCNC 5 轴源程序选择 | app/src/runtime/linuxcnc-machine-file-staging.js, app/src/state/store.js, app/src/ui/gmoccapy-shell.js |
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc |
guarded vendored LinuxCNC source-directory G-code staging + selected machine-file run | machine-file staging node smoke + browser source selector smoke |
| LinuxCNC 5 轴源程序案例覆盖 | tests/node/verify_real_linuxcnc_5axis_program_cases.mjs, tests/browser/gmoccapy_shell_smoke.html, app/src/runtime/linuxcnc-interpreter-runtime.js |
boat-xyzac.ngc, boat-xyzbc.ngc, impeller-7bl-xyzac.ngc, xyzac_switchkins*.ngc, xyzbc_switchkins.ngc |
source-guarded LinuxCNC demo canonical/TP/toolpath coverage; o<sub> call entries verified through machine-file staging/remap boundary |
real LinuxCNC 5-axis program cases node smoke + browser source program smoke |
| 程序执行当前行显示 | app/src/state/store.js, app/src/ui/gmoccapy-shell.js |
AXIS/gmoccapy current line display | LinuxCNC interpreter canonical motion events with fixture fallback | node smoke + browser operator smoke |
| 程序执行速度/时间 | wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_tp_wasm.c, wasm-port/runtime/sdk/src/linuxcnc-tp.js, app/src/runtime/linuxcnc-interpreter-runtime.js, app/src/state/store.js, app/src/ui/gmoccapy-shell.js |
LinuxCNC interpreter canonical motion events queued through src/emc/tp/tp.c, tc.c, tcq.c, S-curve/Ruckig support sources |
LinuxCNC TP queue runtime timing from canonical motion; JS estimate kept only as fallback/MDI lightweight path | TP WASM smoke + interpreter/store node smoke + browser source/dist TP timing smoke |
| 刀具预览 | app/src/ui/gmoccapy-shell.js, app/src/visualization/five-axis-scene.js |
gmoccapy/vismach tool display | visualization/runtime state display | browser operator smoke |
| 3D 五轴预览 | app/src/visualization/five-axis-scene.js |
qtvismach_5axis_gantry.png, lib/python/vismach.py |
visualization consuming runtime state | canvas nonblank smoke |
| Three.js 程序预览和执行轨迹 | app/src/visualization/five-axis-scene.js, tests/browser/gmoccapy_shell_smoke.html |
LinuxCNC interpreter canonical motion, LinuxCNC TP timing samples, task/motion/HAL feedback | display only; no G-code semantics generated in Three.js | source-program browser smoke + desktop/mobile canvas nonblank |
| Vismach transform tree | app/src/visualization/machine-model.ts |
lib/python/vismach.py, src/hal/user_comps/vismach/*.py |
visualization from GUI reference | scene graph smoke |
xyzac-trt profile |
app/src/profiles/xyzac-trt.js |
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini |
source/config reference | profile boundary node smoke |
xyzac-trt source reference map |
app/src/profiles/source-reference-map.js |
xyzac-trt.ini, xyzac-trt.xml, switchkins_postgui.hal, xyzac-trt_cmds.hal, xyzac-trt-kins.c, trtfuncs.c, switchkins.c |
profile/source map only, not runtime proof | profile boundary node smoke |
xyzbc-trt profile |
app/src/profiles/xyzbc-trt.js |
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini |
source/config reference + runtime module switch | profile node smoke + browser profile switch smoke |
gmoccapy-xyzab reference profile |
app/src/profiles/gmoccapy-xyzab.js |
linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini, core_sim_XYZAB.hal, spindle_sim.hal, simulated_home.hal, gmoccapy_postgui.hal |
gmoccapy/trivkins reference profile only; not RTCP proof | gmoccapy XYZAB profile node smoke |
| gmoccapy_XYZAB NML/HAL communication model | app/src/runtime/gmoccapy-communication-model.js, docs/gmoccapy-xyzab-reference.md |
gmoccapy.py, linuxcnc.command/stat/error_channel, milltask, HALUI, POSTGUI_HALFILE startup order |
native communication reference mapped to Web store/task policy; browser does not attach to NML/HAL shared memory | gmoccapy communication model node smoke |
| gmoccapy_XYZAB HAL/postgui diagnostics model | app/src/runtime/gmoccapy-hal-model.js, docs/gmoccapy-xyzab-reference.md |
core_sim_XYZAB.hal, spindle_sim.hal, simulated_home.hal, gmoccapy_postgui.hal |
HAL pin/postgui reference and Web diagnostics only | gmoccapy HAL model node smoke |
| gmoccapy button icon manifest | app/src/ui-reference/gmoccapy-button-icons.json, app/src/assets/gmoccapy-icons/ |
work/working3/gmoccapy_button_icons/button_icon_inventory.csv, copied classic theme and macro image files |
UI asset provenance only; button semantics still require task policy/runtime evidence | gmoccapy icon manifest node smoke |
| SWITCHKINS panel | app/src/panel-schema/xyzac-trt-pyvcp.js |
xyzac-trt.xml, switchkins_postgui.hal |
UI/HAL binding reference | profile boundary node smoke + browser DOM smoke |
| M428/M429/M430 state | app/src/profiles/xyzac-trt.js, app/src/panel-schema/xyzac-trt-pyvcp.js |
remap_subs/428remap.ngc, 429remap.ngc, 430remap.ngc |
LinuxCNC remap/source reference only until runtime adapter is connected | profile boundary node smoke |
| LinuxCNC boundary adapter | app/src/runtime/linuxcnc-boundary-adapter.js |
LinuxCNC interpreter/kinematics/TP WASM adapter point | kinematics + interpreter + TP timing runtime connected; task/motion/HAL simulation runtime connected separately | profile boundary node smoke + browser DOM smoke |
| Full execution boundary audit | app/src/runtime/full-execution-boundary.js, app/src/state/store.js, app/src/ui/gmoccapy-shell.js |
LinuxCNC kinematics WASM, interpreter WASM, TP WASM, task/motion/HAL WASM, runSimConfigProgram({ executionMode: "fiveAxisRemap" }), TRT remap files |
machine-file remap, TP timing, and task/motion/HAL ready for Web simulation boundary; hardware/realtime kernel/external processes still false | full execution boundary node smoke + browser DOM smoke |
| Native task/HAL readiness artifact | app/src/runtime/native-task-hal-audit.js, tests/node/verify_native_task_hal_audit.mjs, build/readiness/native-task-hal-readiness.json |
wasm-port/tools/task-hal-source-manifest.txt, wasm-port/tests/native/probe_trt_task_hal_runtime.sh, task/motion/HAL WASM gates |
machine-readable audit that separates Web simulation promotion from host realtime/hardware/native process blockers | native task/HAL audit node smoke |
| Native task / realtime HAL sync runtime | docs/native-task-hal-sync-implementation-steps.md, wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp, app/src/runtime/linuxcnc-task-hal-runtime.js |
src/emc/task/emctaskmain.cc, src/emc/task/emctask.cc, src/emc/task/taskintf.cc, src/emc/task/emccanon.cc, src/emc/motion/control.c, src/emc/motion/command.c, src/emc/motion/motion.c, src/hal/hal_lib.c, src/hal/hal_priv.h |
task/motion/HAL deterministic WASM simulation runtime; host realtime/hardware out of scope | source manifest, native opt-in probe, HAL runtime smoke, motion/HAL sync smoke, task/HAL WASM SDK smoke, Web store/browser smoke |
| Five-axis kinematics | core/linuxcnc_kinematics_wasm |
trtfuncs.c, xyzac-trt-kins.c, xyzbc-trt-kins.c, 5axiskins.c |
LinuxCNC source-derived WASM | Node roundtrip smoke |
| RTCP/TCP frame | app/src/runtime/rtcp-frame.js |
LinuxCNC kinematics output + canonical events | fixture frame plumbing until kinematics WASM is ready | RTCP/store node smoke + browser DOM smoke |
| OPFS/session storage capability | app/src/runtime/five-axis-session.js, app/src/runtime/linuxcnc-machine-file-staging.js, app/src/ui/gmoccapy-shell.js |
browser OPFS contract and current page memory fallback | OPFS persistence when available; memory fallback is current page lifecycle only | five_axis_session_smoke + machine_file_staging_smoke + public HTTP fallback browser smoke |
3. 源文件追溯清单
UI 图片
linuxcnc/docs/src/gui/images/gmoccapy_5_axis.png
linuxcnc/docs/src/gui/images/qtvismach_5axis_gantry.png
linuxcnc/docs/src/gui/images/axis.png
linuxcnc/docs/src/gui/images/axis-pyvcp.png
linuxcnc/docs/src/gui/images/qtdragon.png
linuxcnc/docs/src/gui/images/qtdragon_hd.png
本项目副本:
assets/reference/linuxcnc-gui/
Python GUI
src/emc/usr_intf/axis/scripts/axis.py
lib/python/vismach.py
src/hal/user_comps/vismach/5axisgui.py
src/hal/user_comps/vismach/xyzac-trt-gui.py
src/hal/user_comps/vismach/xyzbc-trt-gui.py
configs/sim/gmoccapy/gmoccapy_XYZAC.ini
configs/sim/gmoccapy/gmoccapy_XYZAB.ini
configs/sim/gmoccapy/core_sim_XYZAB.hal
configs/sim/gmoccapy/spindle_sim.hal
configs/sim/gmoccapy/simulated_home.hal
configs/sim/gmoccapy/gmoccapy_postgui.hal
configs/sim/qtvcp_screens/qtdragon/README
使用方式:
UI/visualization reference only
5 轴配置
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
configs/sim/axis/vismach/5axis/bridgemill/5axis.ini
configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini
PyVCP/HAL
configs/sim/axis/vismach/5axis/bridgemill/5axis.xml
configs/sim/axis/vismach/5axis/bridgemill/5axis_postgui.hal
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.xml
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.xml
configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr-postgui.hal
5 轴运动学源码
src/emc/kinematics/trtfuncs.c
src/emc/kinematics/xyzac-trt-kins.c
src/emc/kinematics/xyzbc-trt-kins.c
src/emc/kinematics/5axiskins.c
src/emc/kinematics/switchkins.c
src/emc/kinematics/switchkins.h
src/emc/kinematics/userkfuncs.c
src/emc/kinematics/kins_util.c
4. 边界状态
| 边界 | 当前状态 | 说明 |
|---|---|---|
| gmoccapy UI style | ready | 可直接 Web 化 |
| Three.js preview | implemented_basic_canvas_scene | 已显示基础五轴机床、刀具/TCP marker、刀轴、刀路,并消费 rtcpFrame |
| LinuxCNC interpreter WASM | browser_and_node_canonical_execution_ready | createLinuxCncInterpSdk() 已接入普通 G-code canonical motion execution;remap/planner 未 promoted |
| LinuxCNC 5-axis kinematics WASM | browser_and_node_proof_ready | createLinuxCncKinematicsSdk({ moduleId: "xyzac-trt" }) 已由 web adapter 加载,Node/source-browser/dist-browser smoke 验证 forward/inverse frame |
| RTCP frame UI plumbing | implemented_fixture_and_kinematics_wasm | fixture fallback 仍为 linuxCncKinematicsReady=false;browser/node kinematics proof 为 source-derived-kinematics-wasm / linuxcnc_kinematics_wasm_c_abi |
| Operator workflow | implemented_linuxcnc_task_policy_with_canonical_motion | 上电/急停/复位/模式/JOG/MDI/RUN/PAUSE/RESUME/STOP/HOME 通过 linuxcnc_task_state_mode_command_gate;普通程序执行来自 LinuxCNC canonical motion |
| LinuxCNC boundary adapter | kinematics_and_interpreter_connected | web-rtcp-5axis-linuxcnc-boundary-adapter 可区分 kinematics-only ready 与 interpreter/remap missing |
| Full execution boundary audit | implemented_task_motion_hal_simulation_runtime | web-rtcp-5axis-full-linuxcnc-execution-boundary 汇总 kinematics/interpreter/machine-file-remap/TP/task-HAL evidence;Web simulation boundary 可提升,仍明确 hardwareDrive=false、hostRealtimeKernel=false、externalUserMProcessReady=false、toolDbProcessReady=false |
| PyVCP/HAL panel schema | implemented_reference_only | xyzac-trt-switchkins-pyvcp 已整理 SWITCHKINS 控件与 HAL nets;不执行 native HAL |
| Python GUI runtime | not_ported | 只参考,不运行 |
| Python remap runtime | blocked | 不在第一版实现 |
| tool DB runtime | blocked | 不在第一版实现 |
| external user-M process | blocked | 不在第一版实现 |
| native hard realtime | out_of_scope | Web 仿真不实现 |
5. 每批开发追溯记录模板
后续每批完成后追加:
Batch:
Date:
Files changed:
Feature:
LinuxCNC references:
Boundary:
Tests:
Result:
Remaining risk:
Next:
6. 首批追溯记录
Batch: M0-docs-preparation
Date: 2026-06-20 CST
Files changed:
README.md
docs/implementation-plan.md
docs/technical-roadmap.md
docs/program-implementation-guide.md
docs/development-continuation.md
docs/traceability-matrix.md
docs/linuxcnc-python-gui-reference.md
docs/linuxcnc-gui-reference-gallery.md
Feature:
完成 5 轴数控系统 Web 仿真程序开发前准备文档。
LinuxCNC references:
gmoccapy_5_axis.png
qtvismach_5axis_gantry.png
axis.py
vismach.py
xyzac-trt.ini
xyzbc-trt.ini
trtfuncs.c
5axiskins.c
Boundary:
docs_only
Tests:
git diff --check -- web-rtcp-5axis-sim-plan
Result:
ready_for_M1_web_shell_gmoccapy
Remaining risk:
尚未实现 app 代码;LinuxCNC kinematics WASM ABI 尚未建立。
Next:
M1-web-shell-gmoccapy
7. M1 追溯记录
Batch: M1-web-shell-gmoccapy
Date: 2026-06-20 CST
Files changed:
.gitignore
app/index.html
app/package.json
app/tsconfig.json
app/scripts/build-static.mjs
app/src/main.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
app/src/styles/gmoccapy.css
tests/browser/gmoccapy_shell_smoke.html
tests/browser/verify_gmoccapy_shell_browser.sh
Feature:
实现 gmoccapy 5 轴风格 Web shell,并补齐 M1 build gate。
LinuxCNC references:
docs/src/gui/images/gmoccapy_5_axis.png
docs/src/gui/images/qtvismach_5axis_gantry.png
configs/sim/gmoccapy/gmoccapy_XYZAC.ini
Boundary:
ui_reference_only
sourceMode=fixture-ui-only
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
git diff --check -- web-rtcp-5axis-sim-plan
Result:
gmoccapy_static_build=ok
gmoccapy_shell_smoke=ok
Remaining risk:
M1 shell/build gate 已闭环;Three.js 真实场景、LinuxCNC interpreter/WASM、5 轴 kinematics ABI 仍未接入。
Next:
M2-state-and-controls
8. M2 追溯记录
Batch: M2-state-and-controls
Date: 2026-06-20 CST
Files changed:
app/package.json
app/src/profiles/xyzac-trt.js
app/src/runtime/rtcp-frame.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
app/src/styles/gmoccapy.css
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/traceability-matrix.md
Feature:
实现 gmoccapy store/control 链路,并加入 RTCP fixture frame plumbing。
Run/Step 会推进 fixture motion frame;TCP/IDENTITY 会切换 RTCP on/off;
DRO、preview badge 和 info diagnostics 显示 TCP pose、tool axis vector、frame readiness。
Preview view/Fit/Clear、Rapid/Feed override、Spindle override、Flood/Mist、
Reload/Home/Full 已接入 store action,并由 node/browser smoke 覆盖。
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.xml
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
src/emc/kinematics/xyzac-trt-kins.c
src/emc/kinematics/trtfuncs.c
Boundary:
sourceMode=fixture-ui-only
semanticBoundary=fixture_frame_ui_plumbing_not_linuxcnc_kinematics_proof
linuxCncKinematicsReady=false
promotionAllowed=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
rtcp_store_smoke=ok
gmoccapy_shell_smoke=ok
Remaining risk:
RTCP 当前是 UI/runtime frame plumbing,不是 LinuxCNC/source-derived kinematics WASM proof;
Three.js 仍是 SVG placeholder,M3 需要接入真实 canvas scene 并消费 rtcpFrame。
Next:
M3-threejs-preview
9. M3 追溯记录
Batch: M3-threejs-preview
Date: 2026-06-21 CST
Files changed:
app/src/vendor/three/three.module.js
app/src/vendor/three/three.core.js
app/src/visualization/five-axis-scene.js
app/src/ui/gmoccapy-shell.js
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/traceability-matrix.md
Feature:
将 preview 区域从占位内容升级为 Three.js WebGL canvas。
场景显示基础五轴工作区、工作台、刀具/TCP marker、刀轴和刀路;
tool marker 消费 store 的 tcpPose,刀轴消费 toolAxisVector,RTCP on/off 影响可见刀轴长度和姿态数据。
LinuxCNC references:
docs/src/gui/images/qtvismach_5axis_gantry.png
lib/python/vismach.py
src/hal/user_comps/vismach/xyzac-trt-gui.py
Boundary:
visualization_only
sourceMode=fixture-ui-only
semanticBoundary=fixture_frame_ui_plumbing_not_linuxcnc_kinematics_proof
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
rtcp_store_smoke=ok
gmoccapy_shell_smoke=ok
Remaining risk:
Three.js 当前消费 fixture frame;五轴运动学仍未接入 LinuxCNC/source-derived WASM。
Next:
M4-profile-and-linuxcnc-boundary
10. M4 追溯记录
Batch: M4-profile-and-linuxcnc-boundary
Date: 2026-06-21 CST
Files changed:
app/package.json
app/src/profiles/xyzac-trt.js
app/src/profiles/source-reference-map.js
app/src/panel-schema/xyzac-trt-pyvcp.js
app/src/runtime/linuxcnc-boundary-adapter.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_rtcp_store.mjs
tests/node/verify_profile_boundary.mjs
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/program-implementation-guide.md
docs/traceability-matrix.md
Feature:
建立 `xyzac-trt` profile/source reference map、PyVCP/HAL SWITCHKINS panel schema
和 LinuxCNC boundary adapter 接入点。store/UI 暴露 boundary readiness,
并明确保持 `linuxCncKinematicsReady=false`、`promotionAllowed=false`。
本批后续已进一步按 LinuxCNC `xyzac-trt.ini`、`xyzac-trt_cmds.hal`、
`switchkins_postgui.hal`、`xyzac-trt.tbl`、`428/429/430remap.ngc` 显式整理
DISPLAY/RS274NGC/TRAJ、axis/joint limits、HALCMD feedback/offset nets、
HALUI MDI commands、tool table 和 remap IO 约束,使 M4 在 source-aligned
profile/schema/adapter 层面完整闭环。
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.xml
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt_cmds.hal
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
src/emc/kinematics/xyzac-trt-kins.c
src/emc/kinematics/trtfuncs.c
src/emc/kinematics/switchkins.c
Boundary:
sourceMapBoundary=profile_source_map_only_not_runtime_proof
panelSchemaBoundary=pyvcp_hal_schema_reference_only
adapterBoundary=adapter_entrypoint_only_runtime_not_connected
linuxCncKinematicsReady=false
promotionAllowed=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
Remaining risk:
Adapter 目前只是接入点;尚未连接 LinuxCNC interpreter/kinematics WASM ABI。
Next:
linuxcnc_kinematics_wasm_abi
11. M5 追溯记录
Batch: M5-operator-program-workflow
Date: 2026-06-21 CST
Files changed:
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
app/src/styles/gmoccapy.css
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/traceability-matrix.md
Feature:
补齐 operator workflow:上电、急停、AUTO/MANUAL/JOG/MDI、复位、
本地 G-code 文件加载、刀具预览、程序执行当前行显示和高亮。
LinuxCNC references:
gmoccapy operator workflow
AXIS program loading/current-line workflow
vismach tool preview conventions
Boundary:
operatorWorkflowBoundary=browser_ui_runtime_fixture
gcodeLoadBoundary=file_text_staging_only
programExecutionBoundary=fixture_line_playback_not_linuxcnc_interpreter
linuxCncKinematicsReady=false
promotionAllowed=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
Remaining risk:
程序执行仍是 fixture line playback;下一步必须接 LinuxCNC interpreter/WASM 或
source-derived kinematics WASM,才能把执行来源升级为 LinuxCNC-owned。
Next:
linuxcnc_interpreter_or_kinematics_wasm_execution_source
12. M6 追溯记录
Batch: M6-linuxcnc-kinematics-frame-proof
Date: 2026-06-21 CST
Files changed:
app/package.json
app/src/runtime/linuxcnc-kinematics-runtime.js
app/src/runtime/linuxcnc-boundary-adapter.js
app/src/runtime/rtcp-frame.js
app/src/state/store.js
tests/node/verify_linuxcnc_kinematics_runtime.mjs
tests/node/verify_rtcp_store.mjs
tests/node/verify_profile_boundary.mjs
docs/program-implementation-guide.md
docs/development-continuation.md
docs/traceability-matrix.md
Feature:
将 RTCP frame/boundary adapter 从 fixture-only 接到
createLinuxCncKinematicsSdk({ moduleId: "xyzac-trt" })。
新增 web runtime adapter,只加载共享 wasm-port SDK 并返回 LinuxCNC
forward/inverse 结果;frame builder 使用 forward.pose 和 inverse.joints
生成 source-derived kinematics frame。
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.wasm
src/emc/kinematics/xyzac-trt-kins.c
src/emc/kinematics/trtfuncs.c
src/emc/kinematics/switchkins.c
Boundary:
sourceMode=source-derived-kinematics-wasm
semanticBoundary=linuxcnc_kinematics_wasm_c_abi
linuxCncKinematicsReady=true
kinematicsFramePromotionAllowed=true
fullLinuxCncProgramExecutionReady=false
browserFallback=fixture-ui-only
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
linuxcnc_kinematics_runtime_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
Remaining risk:
Browser path still runs fixture fallback because kinematics WASM asset copy/worker
is not wired into app/src/main.js. Program RUN/STEP still advances fixture lines;
LinuxCNC interpreter/remap/planner execution is not promoted.
Next:
browser_kinematics_wasm_asset_worker_or_interpreter_execution_source
13. M7 追溯记录
Batch: M7-browser-kinematics-runtime
Date: 2026-06-21 CST
Files changed:
app/package.json
app/scripts/build-static.mjs
app/src/main.js
app/src/runtime/linuxcnc-kinematics-runtime.js
tests/browser/gmoccapy_shell_smoke.html
tests/browser/verify_gmoccapy_dist_browser.sh
docs/development-continuation.md
docs/program-implementation-guide.md
docs/technical-roadmap.md
docs/traceability-matrix.md
Feature:
将浏览器主流程接入 xyzac-trt LinuxCNC kinematics WASM。
runtime loader 移除顶层 node:* 依赖,支持 browser ESM import;
app/src/main.js 启动后自动 attach kinematics runtime;
build-static 复制 linuxcnc-kinematics.js 与 kinematics .js/.wasm 产物到 dist;
browser smoke 同时覆盖源码入口和 dist 入口。
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.js
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.wasm
src/emc/kinematics/xyzac-trt-kins.c
Boundary:
sourceMode=source-derived-kinematics-wasm
semanticBoundary=linuxcnc_kinematics_wasm_c_abi
browserKinematicsReady=true
nodeKinematicsReady=true
fullLinuxCncProgramExecutionReady=false
fixtureFallback=available_only_on_runtime_load_failure
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
linuxcnc_kinematics_runtime_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Superseded by M8/M9: browser kinematics now runs through Worker and ordinary
G-code RUN/STEP uses LinuxCNC interpreter canonical events. Remap/planner
execution remains not promoted.
Next:
linuxcnc_interpreter_remap_planner_execution_source_or_worker_isolation
14. M8-M9 追溯记录
Batch: M8-kinematics-worker-runtime
Batch: M9-interpreter-canonical-program-execution
Date: 2026-06-21 CST
Files changed:
app/package.json
app/scripts/build-static.mjs
app/src/main.js
app/src/runtime/linuxcnc-interpreter-runtime.js
app/src/runtime/linuxcnc-kinematics-runtime.js
app/src/runtime/linuxcnc-kinematics-worker.js
app/src/runtime/linuxcnc-kinematics-worker-client.js
app/src/runtime/linuxcnc-boundary-adapter.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_linuxcnc_interpreter_runtime.mjs
tests/node/verify_linuxcnc_kinematics_runtime.mjs
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
浏览器默认通过 Web Worker 加载 xyzac-trt LinuxCNC kinematics WASM;
普通 G-code 程序通过 LinuxCNC interpreter WASM 执行并输出 canonical
motion events;RUN/STEP 使用 canonical motion line/pose 更新 G-code
highlight、DRO、RTCP frame 和 Three.js preview。
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
wasm-port/runtime/sdk/src/linuxcnc-interp.js
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.wasm
wasm-port/build/wasm/core/linuxcnc_interp.wasm
Boundary:
kinematics sourceMode=source-derived-kinematics-wasm
kinematics executionContext=worker in browser
interpreter sourceMode=linuxcnc-interpreter-wasm
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
remapRuntimeReady=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
linuxcnc_kinematics_runtime_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Interpreter runtime currently runs on the main browser thread; remap/planner,
OPFS machine-session staging, Python remap, tool DB, and external user-M process
remain not promoted.
Next:
remap_planner_worker_interpreter_or_opfs_machine_session_integration
15. M10-M11 追溯记录
Batch: M10-profile-switching
Batch: M11-profile-session-business-closure
Date: 2026-06-21 CST
Files changed:
app/src/profiles/index.js
app/src/profiles/xyzbc-trt.js
app/src/profiles/source-reference-map.js
app/src/runtime/five-axis-session.js
app/src/runtime/rtcp-frame.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
app/src/styles/gmoccapy.css
tests/node/verify_five_axis_session.mjs
tests/node/verify_profile_boundary.mjs
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
增加 xyzbc-trt profile、source reference map、PyVCP SWITCHKINS schema
变体和 UI profile selector;profile 切换后重载对应 LinuxCNC kinematics WASM。
增加 web-rtcp-5axis OPFS session snapshot,可保存/恢复 profile、program、
axis/TCP pose、RTCP state、canonical execution summary、runtime readiness 和 preview state。
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
src/emc/kinematics/xyzbc-trt-kins.c
wasm-port/runtime/opfs snapshot/file-service pattern
Boundary:
profile switching=source/config reference plus source-derived kinematics runtime reload
session persistence=browser OPFS UI/runtime state snapshot
machine-file staging=false
remapRuntimeReady=false
plannerRuntimeReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
gmoccapy_static_build=ok
linuxcnc_kinematics_runtime_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
five_axis_session_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Session snapshot persists Web simulation state, not full LinuxCNC machine-file
staging. Interpreter still runs on the main browser thread. Remap/planner,
Python remap, tool DB, and external user-M process remain not promoted.
Next:
interpreter_worker_or_opfs_machine_file_staging_or_remap_planner_boundary
17. M18 追溯记录
Batch: M18-linuxcnc-task-policy-controls
Date: 2026-06-21 CST
Files changed:
app/src/state/linuxcnc-task-policy.js
app/src/runtime/execution-timing.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_rtcp_store.mjs
tests/node/verify_five_axis_session.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
Adds a source-referenced LinuxCNC task policy gate for operator controls:
TOGGLE_POWER, RESET, ESTOP, SET_MODE, JOG, RUN_MDI, RUN, STEP, HOME,
PAUSE, RESUME, STOP, and ABORT. The gmoccapy diagnostics panel now exposes
task state/mode/interpreter state, gate readiness, and the source file list
including `linuxcnc/src/emc/task/emctaskmain.cc`.
Adds LinuxCNC TP queue timing from interpreter canonical motion events.
UI now reports total/elapsed/remaining time and current segment
duration/velocity from the TP WASM runtime when available.
LinuxCNC references:
src/emc/nml_intf/emc.hh
src/emc/task/emctaskmain.cc
src/emc/task/emctask.cc
Boundary:
taskPolicyBoundary=linuxcnc_task_state_mode_command_gate
timingBoundary=linuxcnc_tp_queue_runtime_timing_from_canonical_motion
sourceMode=linuxcnc-task-source-referenced-policy
nativeTaskReady=false
nativeHalSyncReady=false
plannerRuntimeReady=true
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
rtcp_store_smoke=ok
five_axis_session_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
The control gates are aligned to LinuxCNC task source behavior, but this is
still a Web policy mirror. The project does not run the native LinuxCNC task
process, NML IPC loop, or realtime HAL synchronization. TP timing is computed
by the vendored LinuxCNC TP queue runtime from canonical motion events; it is
still not hardware drive timing and does not make native task/HAL ready.
Next:
decide_release_handoff_or_start_native_task_hal_planner_boundary
17. M13 追溯记录
Batch: M13-interpreter-worker-runtime
Date: 2026-06-21 CST
Files changed:
app/src/main.js
app/src/runtime/linuxcnc-interpreter-worker.js
app/src/runtime/linuxcnc-interpreter-worker-client.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/browser/gmoccapy_shell_smoke.html
tests/node/verify_five_axis_session.mjs
tests/node/verify_rtcp_store.mjs
Feature:
Browser LinuxCNC interpreter WASM now loads through a Web Worker by default,
matching the existing kinematics Worker isolation. Program execution in store
accepts async interpreter runtimes, exposes interpreterExecutionPending, and
uses a sequence guard so stale Worker results cannot overwrite newer program
loads.
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-interp.js
wasm-port/build/wasm/core/linuxcnc_interp.js
wasm-port/build/wasm/core/linuxcnc_interp.wasm
Boundary:
browserInterpreterExecutionContext=worker
nodeInterpreterExecutionContext=direct
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
remapRuntimeReady=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
linuxcnc_kinematics_runtime_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
five_axis_session_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_static_build=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Interpreter isolation is complete for browser canonical execution, but this
still does not promote native LinuxCNC remap/planner, tool DB, task/HAL sync,
or external user-M process.
Next:
opfs_machine_file_staging_or_remap_planner_boundary
18. M14 追溯记录
Batch: M14-opfs-machine-file-staging
Date: 2026-06-21 CST
Files changed:
app/package.json
app/scripts/build-static.mjs
app/src/main.js
app/src/runtime/linuxcnc-machine-file-staging.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_machine_file_staging.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
Adds LinuxCNC TRT machine-file staging for the web simulator. The runtime
reuses `planSimConfigStaging()` to collect INI, tool table, HAL/PyVCP assets,
remap NGC files, and demo G-code from the vendored LinuxCNC tree, then persists
those text files into OPFS-style machine paths. Store exposes stageMachineFiles()
and gmoccapy diagnostics render staging status.
LinuxCNC references:
wasm-port/runtime/sdk/src/sim-config-staging.js
wasm-port/tools/source-manifest.txt
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/*.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc
Boundary:
machineFileStagingBoundary=linuxcnc_sim_config_file_staging_plan_plus_opfs_text_persistence
stagedFiles=ini,hal,pyvcp,tool_table,remap_ngc,demo_gcode
nativeHalTaskSync=false
remapRuntimeReady=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
machine_file_staging_smoke=ok
linuxcnc_kinematics_runtime_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
five_axis_session_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_static_build=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Machine files are staged and persisted as browser/host text assets. This does
not yet execute a machine-file backed LinuxCNC task session, native HAL sync,
Python/NGC remap runtime, full planner, tool DB, or external user-M process.
Next:
remap_planner_boundary_or_machine_file_backed_run
19. M15 追溯记录
Batch: M15-machine-file-backed-fiveaxis-remap-run
Date: 2026-06-21 CST
Files changed:
app/src/runtime/linuxcnc-interpreter-runtime.js
app/src/runtime/linuxcnc-interpreter-worker.js
app/src/runtime/linuxcnc-interpreter-worker-client.js
app/src/runtime/linuxcnc-machine-file-staging.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_machine_file_staging.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
Adds machine-file backed five-axis remap execution. The simulator now stages
TRT machine files, forwards the staged INI/tool table/remap/demo files into
the LinuxCNC interpreter WASM filesystem, and calls
`runSimConfigProgram({ executionMode: "fiveAxisRemap" })`. Node and browser
smokes verify LinuxCNC reports INI open, remap readiness, and program exit.
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-interp.js
wasm-port/runtime/sdk/src/sim-config-staging.js
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
Boundary:
machineFileBackedRunBoundary=linuxcnc_fiveaxis_remap_wasm_machine_file_execution
sourceMode=linuxcnc-machine-file-remap-wasm
remapRuntimeReady=vendored_linuxcnc_fiveaxis_remap_c_abi_for_staged_files
nativeTaskHalSync=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
machine_file_staging_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
rtcp_store_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
The run uses vendored LinuxCNC five-axis remap C ABI for staged files, but
still does not promote full native task/HAL synchronization, trajectory
planner runtime, tool DB process, or external user-M process.
Next:
planner_boundary_or_full_task_hal_gap_closure
20. M16 追溯记录
Batch: M16-planner-task-hal-boundary-audit
Date: 2026-06-21 CST
Files changed:
app/package.json
app/src/runtime/full-execution-boundary.js
app/src/runtime/linuxcnc-interpreter-runtime.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_full_execution_boundary.mjs
tests/node/verify_linuxcnc_interpreter_runtime.mjs
tests/node/verify_machine_file_staging.mjs
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
Adds a full LinuxCNC execution boundary audit layer. The Web simulator now
summarizes kinematics WASM, interpreter canonical motion, machine-file
staging, five-axis remap C ABI run, and switchkins HAL evidence in one
explicit diagnostics contract. It also adds an Audit control that can trigger
staging plus machine-file backed remap execution from the gmoccapy shell.
LinuxCNC references:
wasm-port/runtime/sdk/src/linuxcnc-interp.js
wasm-port/runtime/sdk/src/linuxcnc-hal.js
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
Boundary:
fullExecutionBoundary=linuxcnc_machine_file_remap_ready_planner_task_hal_blocked
remapRuntimeReady=true for staged fiveAxisRemap C ABI run
halSwitchkinsEvidenceReady=true for fiveaxis_hal_switchkins evidence
nativeTaskReady=false
nativeHalSyncReady=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
promotionAllowed=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
full_execution_boundary_smoke=ok
machine_file_staging_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
rtcp_store_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
Full native LinuxCNC task/NML process, realtime HAL thread synchronization,
trajectory planner queue runtime, external user-M process, and full tool DB
process are still not ported or promoted.
Next:
optional_native_task_hal_planner_port_or_release_handoff
21. M17 追溯记录
Batch: M17-linuxcnc-5axis-gcode-source-ingest
Date: 2026-06-21 CST
Files changed:
app/src/runtime/linuxcnc-machine-file-staging.js
app/src/runtime/linuxcnc-interpreter-runtime.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_machine_file_staging.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
Adds real vendored LinuxCNC five-axis G-code source ingestion. TRT demo
programs from `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`
are staged, listed in the gmoccapy G-code panel, loadable into the program
viewer, and used as the selected `wasmProgramPath` for machine-file backed
fiveAxisRemap execution.
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
Boundary:
gcodeSourceBoundary=linuxcnc_vendored_5axis_gcode_source_file
sourceMode=linuxcnc-vendored-5axis-gcode
machineFileBackedRunProgram=selected_staged_linuxcnc_ngc_source
sourceDirectoryGuard=configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc only
remapRuntimeReady=true for staged fiveAxisRemap C ABI run
plannerRuntimeReady=false
nativeTaskReady=false
nativeHalSyncReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
machine_file_staging_smoke=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
The selected G-code source is real LinuxCNC vendored source and the machine-file
run uses that selected file path, but full native task/NML, realtime HAL sync,
and trajectory planner queue runtime are still not promoted.
Next:
trajectory_planner_wasm_boundary_or_native_task_hal_port
22. Native Task/HAL Phase 0-4 追溯记录
Batch: native-task-hal-phase0-4-runtime-boundary
Date: 2026-06-22 CST
Files changed:
wasm-port/tools/task-hal-source-manifest.txt
wasm-port/tools/verify_task_hal_source_manifest.sh
wasm-port/tests/native/probe_trt_task_hal_runtime.sh
wasm-port/runtime/core/shims/hal.h
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_hal_runtime.hh
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_hal_runtime.cpp
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_hal_runtime_probe.cpp
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.hh
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
wasm-port/tools/build_task_hal_wasm.sh
wasm-port/runtime/sdk/src/linuxcnc-task-hal.js
wasm-port/runtime/sdk/src/index.js
wasm-port/tests/wasm/node/verify_hal_runtime.sh
wasm-port/tests/wasm/node/verify_motion_hal_sync.sh
wasm-port/tests/wasm/node/verify_task_hal_wasm.sh
wasm-port/tests/wasm/node/verify_task_hal_sdk.sh
Feature:
Establishes the unpromoted native task/HAL implementation path through
phase 0 source manifest evidence, phase 1 opt-in native TRT task/HAL probe,
phase 2 C/C++ HAL runtime registry, and phase 3 minimal motion/HAL servo-cycle
C ABI. The HAL runtime owns pin/signal/param/net/thread state and blocks
`loadusr`; the motion runtime accepts LinuxCNC-style command JSON and
synchronizes `motion.*`, `axis.*`, and `joint.*` HAL pins on deterministic
servo cycles. Phase 4 adds the planned `lctask_*` C ABI as an in-process
task shim that stages files, opens a program, tracks task state/mode/interp
and exec status, and forwards RUN/PAUSE/RESUME/ABORT/MDI/JOG into motion/HAL
runtime snapshots. It also adds the SDK wrapper needed for later Worker
integration.
LinuxCNC references:
src/emc/task/task.hh
src/emc/task/emctask.cc
src/emc/task/emctaskmain.cc
src/emc/task/taskintf.cc
src/emc/task/emccanon.cc
src/emc/nml_intf/emc.hh
src/emc/motion/motion.h
src/emc/motion/command.c
src/emc/motion/control.c
src/emc/motion/mot_priv.h
src/hal/hal_lib.c
src/hal/hal_priv.h
src/hal/components/threads.c
Boundary:
taskHalSourceManifestReady=true
nativeTaskHalProbe=opt_in_ready_disabled_by_default
halRuntimeBoundary=linuxcnc_hal_runtime_phase2_minimal
motionHalBoundary=linuxcnc_motion_runtime_phase3_minimal
taskHalBoundary=linuxcnc_task_motion_hal_wasm_phase4_minimal
nativeTaskReady=false
nativeHalSyncReady=false
fullLinuxCncProgramExecutionReady=false
promotionAllowed=false
Tests:
wasm-port/tools/verify_task_hal_source_manifest.sh
wasm-port/tests/native/probe_trt_task_hal_runtime.sh
wasm-port/tests/wasm/node/verify_hal_runtime.sh
wasm-port/tests/wasm/node/verify_motion_hal_sync.sh
wasm-port/tests/wasm/node/verify_task_hal_wasm.sh
wasm-port/tests/wasm/node/verify_task_hal_sdk.sh
Result:
task_hal_source_manifest_ready=1
native_probe_status=ready_disabled_by_default
hal_runtime_registry=ok
hal_net_signal_propagation=ok
hal_thread_scheduler=ok
loadusr_blocked_evidence=ok
motion_hal_servo_cycle=ok
motion_program_line_hal_sync=ok
switchkins_type_hal_sync=ok
jog_motion_status_sync=ok
linuxcnc_task_runtime_smoke=ok
task_status_from_linuxcnc_runtime=ok
task_commands_drive_motion_runtime=ok
mdi_jog_task_motion_hal_sync=ok
linuxcnc_task_hal_sdk=ok
Remaining risk:
Phase 4 is still a narrow deterministic runtime-edge adapter. Full LinuxCNC
task loop, in-process NML queue sourced from `emc.hh`, canonical queue,
real `emcmotController()`, machine-file session integration, native/WASM
comparison artifacts, and browser Worker/store wiring are still required
before promotion.
Next:
task_hal_machine_file_session_and_worker_wiring
20. M20 追溯记录
Batch: M20-task-hal-machine-file-worker-boundary
Date: 2026-06-22 CST
Files changed:
app/src/runtime/linuxcnc-task-hal-runtime.js
app/src/runtime/linuxcnc-task-hal-worker.js
app/src/runtime/linuxcnc-task-hal-worker-client.js
app/src/runtime/linuxcnc-machine-file-staging.js
app/src/runtime/full-execution-boundary.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
app/scripts/build-static.mjs
tests/node/verify_linuxcnc_task_hal_runtime.mjs
tests/node/verify_full_execution_boundary.mjs
Feature:
Connects the task/motion/HAL WASM runtime to the Web simulator boundary.
Machine-file staging now emits a task/HAL session descriptor. The Web runtime
can init/stage/open files, send task commands, run deterministic task/servo
cycles, read task/motion/HAL status, and map `motion.program-line` plus
`motion.switchkins-type` back into gmoccapy current line, DRO, RTCP state, and
diagnostics. Full boundary promotion now depends on task runtime, motion
runtime, HAL runtime, HAL sync, and task/HAL cycle artifact evidence.
LinuxCNC references:
src/emc/task/task.hh
src/emc/task/emctask.cc
src/emc/task/emctaskmain.cc
src/emc/task/taskintf.cc
src/emc/task/emccanon.cc
src/emc/nml_intf/emc.hh
src/emc/motion/motion.h
src/emc/motion/command.c
src/emc/motion/control.c
src/hal/hal_lib.c
src/hal/hal_priv.h
src/hal/components/threads.c
Boundary:
taskHalBoundary=linuxcnc_task_motion_hal_wasm_simulation_runtime
nativeTaskReady=true for Web simulation boundary
nativeHalSyncReady=true for Web simulation boundary
fullLinuxCncProgramExecutionReady=true when kinematics/interpreter/machine-file-remap/TP/task-HAL gates pass
hardwareDrive=false
hostRealtimeKernel=false
externalUserMProcessReady=false
toolDbProcessReady=false
Tests:
bash wasm-port/tools/build_task_hal_wasm.sh
bash wasm-port/tools/verify_task_hal_source_manifest.sh
bash wasm-port/tests/native/verify_task_hal_phase0.sh
bash wasm-port/tests/native/probe_trt_task_hal_runtime.sh
bash wasm-port/tests/wasm/node/verify_hal_runtime.sh
bash wasm-port/tests/wasm/node/verify_motion_hal_sync.sh
bash wasm-port/tests/wasm/node/verify_task_hal_wasm.sh
bash wasm-port/tests/wasm/node/verify_task_hal_sdk.sh
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
linuxcnc_task_hal_wasm_build=ok
task_hal_source_manifest_ready=1
task_hal_phase0_native_probe_gate=ok
native_probe_status=ready_disabled_by_default
hal_runtime_registry=ok
motion_hal_sync_smoke=ok
linuxcnc_task_runtime_smoke=ok
linuxcnc_task_hal_sdk=ok
linuxcnc_task_hal_runtime_smoke=ok
task_hal_machine_file_smoke=ok
switchkins_remap_hal_sync_smoke=ok
browser_task_hal_worker_smoke=ok
gmoccapy_static_build=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
The promoted boundary is deterministic Web simulation only. It does not run
a host LinuxCNC realtime kernel, hardware IO, Mesa/parallel-port drivers,
arbitrary external user-M processes, or the full tool DB process.
Next:
hardware_realtime_external_processes_if_required
16. M12 追溯记录
Batch: M12-switchkins-rtcp-program-execution
Date: 2026-06-21 CST
Files changed:
app/src/runtime/linuxcnc-interpreter-runtime.js
app/src/runtime/linuxcnc-kinematics-runtime.js
app/src/runtime/linuxcnc-kinematics-worker.js
app/src/runtime/linuxcnc-kinematics-worker-client.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_linuxcnc_interpreter_runtime.mjs
tests/node/verify_rtcp_store.mjs
tests/browser/gmoccapy_shell_smoke.html
Feature:
LinuxCNC TRT `M428/M429/M430` switchkins remap M-code is preserved as
program-level runtime events. The interpreter runtime strips those high M-codes
only from the WASM input program so LinuxCNC interpreter canonical motion can
continue, then annotates canonical motion with active switchkins state.
RUN/STEP/RUN_FRAME now applies program switchkins state to RTCP state and calls
LinuxCNC kinematics WASM `lckins_switch()` through direct and Worker runtimes.
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
src/emc/kinematics/switchkins.c
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
Boundary:
switchkinsProgramBoundary=linuxcnc_remap_mcode_preserved_and_web_runtime_applied
interpreter sourceMode=linuxcnc-interpreter-wasm
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
kinematics semanticBoundary=linuxcnc_kinematics_wasm_c_abi
remapRuntimeReady=false
plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
Tests:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
Result:
linuxcnc_kinematics_runtime_smoke=ok
linuxcnc_interpreter_runtime_smoke=ok
five_axis_session_smoke=ok
rtcp_store_smoke=ok
profile_boundary_smoke=ok
gmoccapy_static_build=ok
gmoccapy_shell_smoke=ok
gmoccapy_dist_smoke=ok
Remaining risk:
This preserves and applies switchkins remap M-codes in Web runtime, but does not
execute LinuxCNC Python/NGC remap, native HAL/task synchronization, full planner,
tool DB, or external user-M process.
Next:
interpreter_worker_or_opfs_machine_file_staging_or_remap_planner_boundary
21. M18 追溯记录
Batch: M18-native-task-hal-source-and-artifact-audit
Date: 2026-06-22 CST
Files changed:
.gitignore
app/package.json
app/src/runtime/native-task-hal-audit.js
tests/node/verify_native_task_hal_audit.mjs
docs/development-continuation.md
docs/program-implementation-guide.md
docs/traceability-matrix.md
Feature:
Adds a machine-readable readiness audit for the native task/HAL source and
artifact boundary. The audit consumes task/HAL source manifest evidence,
default non-exclusive TRT native probe evidence, full execution boundary
readiness, and task/HAL runtime status, then writes
build/readiness/native-task-hal-readiness.json.
LinuxCNC references:
wasm-port/tools/task-hal-source-manifest.txt
wasm-port/tests/native/probe_trt_task_hal_runtime.sh
src/emc/task/emctaskmain.cc
src/emc/motion/control.c
src/hal/hal_lib.c
Boundary:
webSimulation.promotionScope=web_simulation_only
nativeTaskReady=true for Web simulation boundary only
nativeHalSyncReady=true for Web simulation boundary only
hardwareDrive=false
hostRealtimeKernel=false
externalUserMProcessReady=false
toolDbProcessReady=false
Tests:
node web-rtcp-5axis-sim-plan/tests/node/verify_native_task_hal_audit.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
Result:
native_task_hal_source_artifact_audit=ok
task_hal_web_simulation_boundary_consistent=1
native_task_hal_host_probe_status=ready_disabled_by_default
hardware_drive=0
host_realtime_kernel=0
external_user_m_process_ready=0
tool_db_process_ready=0
promotion_scope=web_simulation_only
Remaining risk:
The readiness artifact does not execute host realtime LinuxCNC or hardware IO.
It intentionally keeps external user-M process and tool DB process readiness
false.
Next:
M19-linuxcnc-source-program-case-coverage
22. M19 追溯记录
Batch: M19-linuxcnc-source-program-case-coverage
Date: 2026-06-22 CST
Files changed:
app/package.json
app/src/runtime/linuxcnc-interpreter-runtime.js
tests/node/verify_real_linuxcnc_5axis_program_cases.mjs
tests/browser/gmoccapy_shell_smoke.html
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_tp_wasm.c
docs/development-continuation.md
docs/program-implementation-guide.md
docs/traceability-matrix.md
Feature:
Adds a real LinuxCNC TRT source-program case gate. The gate covers staged
source guards for boat, impeller, xyzac switchkins, and xyzbc switchkins demo
programs; validates direct interpreter canonical motion and LinuxCNC TP
samples where the source file is directly executable; and validates
machine-file staging/remap readiness for subroutine-entry demo files.
LinuxCNC references:
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_2.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_3.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
src/emc/tp/tp.c
Boundary:
sourceProgramBoundary=linuxcnc_vendored_5axis_gcode_source_file
toolpathPreviewBoundary=linuxcnc_interpreter_canonical_motion
toolExecutionTraceBoundary=linuxcnc_tp_samples_or_task_motion_hal_feedback
threejsGeneratedToolpathSemantics=forbidden
fixtureToolpathFallbackPromoted=false
Tests:
source /home/cnc/emsdk/emsdk_env.sh >/dev/null && bash wasm-port/tools/build_tp_wasm.sh
bash wasm-port/tests/wasm/node/verify_tp_wasm.sh
node web-rtcp-5axis-sim-plan/tests/node/verify_real_linuxcnc_5axis_program_cases.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
Result:
linuxcnc_source_program_case_count=8
all_cases_program_preview_points=ok
all_cases_executed_path_points=ok_after_run_or_step
all_cases_toolpath_preview_source=linuxcnc_interpreter_canonical_motion
all_cases_tool_execution_trace_source=linuxcnc_tp_samples_or_task_motion_hal_feedback
all_switchkins_cases_rtcp_state_changes_verified=1
all_cases_source_guard=linuxcnc_vendored_5axis_gcode_source_file
fixture_toolpath_fallback_not_promoted=1
real_linuxcnc_5axis_program_cases_smoke=ok
Remaining risk:
`xyzac_switchkins.ngc` and `xyzbc_switchkins.ngc` are subroutine-entry demo
files; direct interpreter execution without staged subroutine context still
has zero canonical motion, so they remain verified through source guard and
machine-file remap staging rather than direct single-file preview.
Next:
M20-threejs-tool-execution-quality
23. M20 Three.js 显示质量追溯记录
Batch: M20-threejs-tool-execution-quality
Date: 2026-06-22 CST
Files changed:
app/src/visualization/five-axis-scene.js
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/program-implementation-guide.md
docs/traceability-matrix.md
Feature:
Adds program-preview and tool-execution display quality gates to Three.js.
The scene now draws rapid/feed/arc layers, the executed TP/task trace, and
the current segment highlight while fitting the camera to real LinuxCNC
source-program bounds.
LinuxCNC references:
LinuxCNC interpreter canonical motion events
LinuxCNC TP queue timing samples
task/motion/HAL runtime feedback snapshots
Boundary:
threejsProgramPreviewMode=program-preview-and-tool-execution
toolpathPreviewBoundary=linuxcnc_interpreter_canonical_motion
toolExecutionTraceBoundary=linuxcnc_tp_samples_or_task_motion_hal_feedback
threejsGeneratedToolpathSemantics=forbidden
Tests:
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
Result:
threejs_program_preview_mode=program-preview-and-tool-execution
threejs_toolpath_preview_source=linuxcnc_interpreter_canonical_motion
threejs_tool_execution_trace_source=linuxcnc_tp_samples_or_task_motion_hal_feedback
threejs_path_fit_bounds=ok
threejs_current_segment_highlight=ok
threejs_rapid_feed_visual_distinction=ok
threejs_no_gcode_semantics_generation=ok
threejs_canvas_nonblank_desktop=ok
threejs_canvas_nonblank_mobile=ok
Remaining risk:
The visual distinction is display-only and remains limited to canonical/TP
segment data already emitted by LinuxCNC runtimes. It does not add lookahead,
blending, planner semantics, or hardware execution semantics in Three.js.
Next:
M21-public-http-opfs-degradation
24. M21 公网 OPFS 降级追溯记录
Batch: M21-public-http-opfs-degradation
Date: 2026-06-22 CST
Files changed:
app/src/runtime/five-axis-session.js
app/src/runtime/linuxcnc-machine-file-staging.js
app/src/state/store.js
app/src/ui/gmoccapy-shell.js
tests/node/verify_machine_file_staging.mjs
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/program-implementation-guide.md
docs/traceability-matrix.md
Feature:
Adds explicit storage capability detection and current-page memory fallback
for public HTTP/IP deployments where OPFS is unavailable. Session save/restore
and machine-file staging continue inside the current page lifecycle, while UI
diagnostics report OPFS unavailable and the fallback reason.
LinuxCNC references:
LinuxCNC machine-file staging remains based on vendored TRT source/config
files; storage fallback does not alter interpreter, TP, task/HAL, or
kinematics semantics.
Boundary:
opfsAvailable=false when browser capability is missing or forced unavailable
fallbackMode=memory-fallback
memoryFallbackPersistence=current_page_lifecycle_only
nonOpfsWorkflowsStillPass=true
Tests:
node web-rtcp-5axis-sim-plan/tests/node/verify_machine_file_staging.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
Result:
opfs_unavailable_detected=1
opfs_fallback_current_page_lifecycle_only=1
opfs_dependent_actions_report_clear_fallback_message=1
non_opfs_workflows_still_pass=1
public_http_smoke_no_uncaught_exception=1
Remaining risk:
Memory fallback is not persistent across reloads. True OPFS persistence still
requires a secure context and browser OPFS support.
Next:
none_from_development_continuation
25. M22 Host/native 边界可见性追溯记录
Batch: M22-host-native-boundary-visibility
Date: 2026-06-22 CST
Files changed:
app/src/ui/gmoccapy-shell.js
tests/browser/gmoccapy_shell_smoke.html
docs/development-continuation.md
docs/traceability-matrix.md
Feature:
Adds an explicit Host/native diagnostics row in gmoccapy info tabs so the
promoted Web simulation task/motion/HAL boundary remains visibly separated
from hardware drive, host realtime kernel, external user-M process, and tool
DB process readiness.
LinuxCNC references:
No new LinuxCNC source semantics are introduced. The change displays existing
full execution boundary fields emitted by the LinuxCNC task/motion/HAL Web
simulation runtime audit.
Boundary:
hardwareDrive=false
hostRealtimeKernel=false
externalUserMProcessReady=false
toolDbProcessReady=false
promotionScope=web_simulation_only
Tests:
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
Result:
host_native_boundary_ui=ok
hardware_drive_false_visible=1
host_realtime_false_visible=1
external_user_m_false_visible=1
tool_db_false_visible=1
Remaining risk:
This is a visibility and regression guard only. It does not implement host
realtime kernel, hardware IO, external user-M process, or native tool DB
process support.
Next:
none_from_development_continuation