
我会先读取两个项目的结构和已有 gmoccapy/RTCP 相关实现，确认页面、
测试入口和 LinuxCNC 参考程序的位置，
再决定需要补齐的功能和验证文档落点


当前项目已经有 gmoccapy、XYZAB/XYZAC、真实 LinuxCNC 五轴程序相关测试和文档资产。
我接下来会把现有实现与 LinuxCNC configs/sim/gmoccapy 的五轴配置、
实际 RTCP 程序和测试脚本对齐，先找出差距再补实现/验证文档。

我看到工作树已有大量未提交改动，
其中不少正好涉及本项目的 gmoccapy、RTCP、task/HAL 和测试。
我会只在必要文件上增量修改，不回退现有内容；
下一步重点收敛到 LinuxCNC 的 gmoccapy 非平凡五轴配置和 TRT/RTCP 程序。




先给出当前执行计划：
1) 提取 LinuxCNC gmoccapy 五轴基准；
2) 对照 Web 页面状态、按钮、DRO、RTCP/kins/task-HAL 数据链；
3) 补测试或小范围实现；
4) 运行验证；
5) 输出中文评价文档并按 AGENTS 规则追加过程日志。




LinuxCNC 的 gmoccapy 五轴参考不是 switchkins 版本，
而是 configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/xyzac-trt.ini：
固定 xyzac-trt-kins、DISPLAY=gmoccapy、XYZAC、tool-offset/y-offset/z-offset HAL 链路，
并用 boat/impeller/test 程序验证非平凡五轴 RTCP/刀长语义。
我会把这条 gmoccapy 专属基准纳入 Web 侧验证，
而不只依赖 axis/vismach 的 M428/M429 示例。

现有测试已经覆盖 axis/vismach TRT demos 和 switchkins，
但还没有把 LinuxCNC gmoccapy/non_trivial_kinematics/table-rotary-tilting 
作为单独对标对象。接下来我会补一个 gmoccapy 参考验证，
把 INI/HAL/刀表/示例程序、页面状态和 canonical 执行链打通。


为避免把“页面像 gmoccapy”误写成“功能等价”，我会用两个层面做证据：
一是 LinuxCNC gmoccapy 非平凡五轴配置的静态对标，
二是真实 .ngc 经解释器/运动学/页面状态链路的运行对标。
接下来开始补验证脚本。

这里有一个关键差异：
现有 xyzac-trt profile 主要来自 LinuxCNC axis/vismach switchkins 示例，
虽然页面是 gmoccapy shell，
但 profile 本身不是 LinuxCNC DISPLAY=gmoccapy 的非平凡五轴配置。
为了让“gmoccapy 页面功能对标 gmoccapy 五轴功能”成立，
我会补一个 gmoccapy-xyzac-trt 专用 profile 和验证链，而不是只在文档里说明。


我会保留现有 xyzac-trt/xyzbc-trt 行为，新增 gmoccapy TRT 作为第三个可运行 RTCP profile；
gmoccapy-xyzab 仍保持 trivkins 参考、不可提升为 RTCP。这样不会破坏旧测试的 profile 顺序假设时，
我会同步更新对应断言。


我先确认 vendored source manifest 是否已经包含 gmoccapy 非平凡五轴目录；
如果没有，测试可以直接读取 /home/mes123456/cnc_wams/linuxcnc 作为参考，
但页面 staging 需要知道这些源文件。

我确认了一个限制：
当前 WASM vendor manifest 只包含 axis/vismach/5axis/table-rotary-tilting，
没有拷入 LinuxCNC 的 configs/sim/gmoccapy/non_trivial_kinematics。
因此我会把 gmoccapy TRT profile 的验证读取真实 /home/mes123456/cnc_wams/linuxcnc 源文件，
同时让页面/Node staging 支持该来源，不把缺失 vendor manifest 误当作功能通过。


下一步我会把 LinuxCNC gmoccapy TRT 的真实配置和示例程序纳入可访问的 vendored source 清单，
这样页面 staging、Node 验证和评价文档都能引用同一批源文件。
这个改动是对现有 axis/vismach TRT source 的补充，
不会替换旧的 switchkins 测试资产。

我现在会实际落地改动：补 vendored gmoccapy TRT 源文件清单、增加 gmoccapy TRT profile、让 staging/校验识别 examples/ 源程序，并新增覆盖该 profile 的 Node 验证脚本。




由于 gmoccapy TRT 的 xyzac-trt.ini 
通过 SUBROUTINE_PATH=./examples:../../macros 调用工具变更 remap，
我会把 table-rotary-tilting 和 gmoccapy/macros 两块源文件一并放入 vendor/staging 范围，
避免验证只拿到主程序而缺 remap 子程序。

已复制真实 LinuxCNC gmoccapy TRT 配置、示例程序和 gmoccapy macros 到
 wasm-port/vendor/linuxcnc，接下来把这些文件加入 manifest，
并在应用代码中使用它们。


我会用脚本式追加 manifest 条目来避免手工漏项，然后用 apply_patch 修改应用源码和测试。



我还发现 parser 的“ready”标准目前按 switchkins 示例写死，会把 LinuxCNC gmoccapy 
固定 xyzac-trt-kins 配置误判为缺 M428/M429/M430。
我会把 INI 校验改成两类：switchkins TRT 和 gmoccapy fixed TRT，
二者都能作为五轴 RTCP 参考，但在页面里显示不同边界。


这里的 gmoccapy TRT 固定配置还有一个语义细节：
它的 xyzac-trt-kins 没有 sparm=identityfirst，
所以 LinuxCNC 源码里 switchkins-type 0 就是 TRT/TCP，而不是 identity。
我会在 Web profile 里明确这个“固定 TRT 默认类型”，避免错误地要求 M428 才算 RTCP 开启。


一个实现细节需要小心处理：
当前 kinematics WASM 模块初始化默认和 LinuxCNC 源码一致，xyzac-trt-kins 的 type 0 是 TRT，
只有 INI 传 sparm=identityfirst 时 type 0 才变 identity。
现有 Web 的 axis/vismach profile 是通过 Web 映射把 M428/M429 
语义处理成 identity/TCP；gmoccapy TRT 固定配置则应使用 type 0 TRT 默认。

我开始用补丁新增 gmoccapy-xyzac-trt profile。这个 profile 
会保留 LinuxCNC 源中的 DISPLAY=gmoccapy、固定 xyzac-trt-kins、
examples/impeller-7bl-xyzac.ngc、tool-offset/y-offset/z-offset、
POSTGUI 工具/主轴绑定等对标项。


已添加 gmoccapy-xyzac-trt profile 文件。
现在继续把它接入 profile index、source reference、staging、INI 校验和默认程序选择。


我会把 source reference 中原本挂在 xyzac-trt 下的 gmoccapy TRT 条目迁移到新 profile，
并增加 generated HAL、macro remap 和源码引用，
这样文档矩阵能明确区分 axis/vismach switchkins 与 gmoccapy 非平凡五轴。

我会把 source reference 中原本挂在 xyzac-trt 下的 gmoccapy TRT 条目迁移到新 profile，
并增加 generated HAL、macro remap 和源码引用，
这样文档矩阵能明确区分 axis/vismach switchkins 与 gmoccapy 非平凡五轴。


我已完成 source map 迁移。现在修改 machine-file staging：
默认仍走 axis/vismach TRT；当 profile 是 gmoccapy-xyzac-trt 时，
自动使用 configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples 
作为真实 LinuxCNC G-code 源目录。

我还需要补齐刚才 staging 改动的底部 helper，特别是把 examples/ 归类为 demo，
并在没有传入 plan 时保持旧的 axis/vismach 默认行为。

我需要同步放宽 INI parser 的 ready 标准：gmoccapy TRT 固定配置不声明 
[HALUI] M428/M429/M430，但它的 KINS=xyzac-trt-kins、XYZAC、5 joints、
tool-offset/y/z-offset 和 gmoccapy POSTGUI 才是对标依据。


我会继续同步构建脚本和默认程序选择，确保 dev 和 dist 两种运行路径都能读取 gmoccapy TRT 源文件。


我正在接入默认加载逻辑：gmoccapy TRT 的默认程序应选 impeller-7bl-xyzac.ngc，而不是按 profile id 拼 *_switchkins.ngc。同时 store 的项目目录和 source guard 也会识别 examples/ 来源。



现在修改 store 的项目目录/source guard/run preconditions。核心变化是：任何 profile 只要声明 rtcpProof=true 且有 LinuxCNC kinematics module，就可以进入运行前置条件；gmoccapy-xyzab 仍因 rtcpProof=false 被阻止。






我注意到固定 TRT profile 需要把默认 kins 类型设为 tcp-xyzac，否则页面会把 LinuxCNC 源码中的 type 0 TRT 误显示成 identity/off。我会补一个 profile 默认 kins 辅助函数，并让 TCP button 识别 value 0 的固定 TRT。




我会先做最小默认 kins 改动，避免影响已有 switchkins profiles：只有 fixedTrtDefault profile 默认显示 TCP/RTCP on；axis/vismach 仍默认 identity/off。




我已把固定 TRT 默认 kins 的逻辑接入 store。接下来会补 profile/staging/INI 的 Node 验证脚本，然后先跑相关小测试，及时处理断言或集成问题。


我会新增专门的 verify_gmoccapy_xyzac_trt_parity，既检查 profile 静态对标，也检查 staging、INI parser、真实程序 canonical 执行和 store 状态。然后再把旧测试中 profile 列表断言更新。




我会新增的测试脚本放入 tests/node，并把它接入 npm --prefix app run smoke:node。脚本会直接跑真实 gmoccapy TRT 的 impeller/boat/test 程序，验证 canonical motion、tool-change remap staging 和页面状态。



我会修正一个刚发现的语义点：applyIniConfigToProfile 会把没有 HALUI MDI 的 gmoccapy 固定 TRT 错合并成默认 M428/M429/M430。现在改为固定 TRT 保留 profile 自己的 switchkins 类型映射。



我会调整 applyIniConfigToProfile，如果 INI 没有 [HALUI] MDI 命令，就不从 parser 推导 switchkins 类型，以 profile 的固定 TRT 映射为准。



我会把新测试加入 node smoke，并先跑新增测试与直接相关的 profile/INI/staging 测试，快速暴露集成问题。






我现在跑新增和相关 Node 测试：profile boundary、INI runtime、machine-file staging、gmoccapy TRT parity。若出现断言失败，我会按失败点修正实现而不是放宽测试。


新增 gmoccapy TRT 测试、profile boundary、INI parser 和 machine-file staging 都已通过。接下来我会跑受影响的 sidebar/parity/run precondition/browser build 类测试，并处理可能由新 profile 顺序或 source map 变化带来的断言。


我会跑 gmoccapy_trt_project_sidebar、run_preconditions、rtcp_store 和 linuxcnc_parity_matrix，这几项最容易受 profile 列表和 source guard 改动影响。



两处失败都是集成断言而不是功能缺陷：xyzac-trt 原 profile 没显式 kinematicsModuleId，新通用 run gate 因此误判；另一个是测试还按旧 profile 列表断言。我会补显式 module id，并更新旧断言。



我已给 xyzac-trt 补上显式 kinematicsModuleId，让通用 RTCP run gate 不再把它误判为 unsupported。接下来更新旧测试的 profile 列表断言并复跑失败项。


我会复跑刚才失败的两项，并补跑新增 gmoccapy TRT 测试，确认 profile id 修复没有引入新问题。

相关失败已修复。现在我会跑完整 smoke:node，再跑 build/browser smoke；如果时间较长，我会继续报告进度。



完整 node smoke 走到 verify_gmoccapy_xyzab_profile 时只剩旧 profile 列表断言失败。这个测试应接受新增的 gmoccapy TRT profile；我会更新断言并复跑完整 node smoke。


我会复跑完整 node smoke。上一次已经覆盖到后半段，这次从头跑能确认新 profile、旧 gmoccapy XYZAB 参考和 parity 矩阵全部兼容。



完整 node smoke 已通过。接下来我会跑静态构建和浏览器 smoke，验证 dist 资产复制后 gmoccapy TRT profile 仍能读取 INI/程序，并且页面不空白。



构建已经通过，dist 资产复制正常。我会继续跑 browser smoke；如果脚本自己起本地服务就直接用它，否则我会启动项目 dev server 后验证。




我会写一份单独的中文评价报告，避免把本轮结论混在已有大文档里。报告会列明 LinuxCNC gmoccapy TRT 参考文件、对标功能、测试过程、命令输出摘要、通过/不通过边界和最终评价。


现有 browser smoke 已覆盖默认 axis/vismach TRT 源程序和 dist，但没有在浏览器里显式切到新的 gmoccapy-xyzac-trt profile。我会补一段浏览器 profile/source 验证，让 gmoccapy TRT 在实际页面中也被加载、解释和渲染。




















