Files
linuxcncWebWASM/docs/trt-parametric/05-验收证据.md

14 KiB
Raw Permalink Blame History

验收证据

只登记实际执行结果。job_id/report_id 由真实运行产生;没有的字段记“不适用”,不编造 PDF 或截图。

E01 来源审计 / 2026-09-17

  • 命令:git status --short --branch、git -C linuxcnc status --short、rg -n 'offset|rot_point' wasm-core/src/sim_kinematics.c。
  • 基线:主仓库 HEAD 9232f290279459765333b2ac274aa762ec06d6c0。
  • 发现:web/workspace/sim-case-loader.mjs 中 CASE_KINEMATICS 固定几何值;web/react/src/xyzac-machine-model.ts 未投影 rot-point。
  • 方程:wasm-core/src/sim_kinematics.c 的 XYZAC 使用 dy/dz,XYZBC 使用 dx/dz,二者均使用三个 rot-point。
  • 结果:审计完成;这不是功能验收。
  • job_id / report_id / PDF / 截图:不适用。

E02 参数链路与结构投影

  • 命令:node web/react/src/test_trt_parametric.mjs。
  • report_id:trt-parametric-worker-v1;产物:coverage/trt-parametric/worker.report.json。
  • 结果:XYZAC/XYZBC 的参数读写、无效数值/缺项/重复项拒绝、CRLF/注释保留、INI 引用、Worker 忽略外部 offsets 覆盖通过。
  • 同程序基线与新参数在 tick 11 出现首个关节差异;编程终点相同;新参数的固定 tick 重放逐项一致。
  • 每个配置检查零角度、单倾转、单 C 旋转、复合旋转共四种姿态,WASM 逆解驱动的模型编程点与刀尖误差小于 1e-7 场景单位。
  • 运行后的重载清空预览、重置回零状态;机床开启时重载被拒绝。
  • ctest --test-dir build-native -R 'sim_kinematics' --output-on-failure:已有 native 二进制 5/5 通过,不等同于新建官方 native trace 对照。
  • node web/react/src/test_xyzac_threejs.mjs:通过。
  • 参数修改后恢复旧 checkpoint、compact power-off checkpoint、trace 均拒绝,当前几何及未回零状态不变。
  • WASM 文件 SHA-256:ab1b90a6a2474b954849ee75d1163e11ee37c4653dd074bba3483d52d9dec2a9。本轮使用已有核心,不修改 C ABI。
  • worker.report.json SHA-256:e5cba3c7fe4aa04408cc1f7a574d4044090bbdc4bf85fbcb8f0cd3cd48b27aa0。

E03 浏览器端到端

命令:

PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_parametric_browser.mjs
  • 页面:http://127.0.0.1:5174/;report_id:trt-parametric-browser-v1。
  • 报告:browser.report.json。SHA-256:957c93d24202823880630937e74b8c3f23e5786bc9d1d7a7219dff98f9d573aa。
  • 两机型均验证应用、保持程序路径、导出原生 INI、重新读取、重新导入应用、开机禁用/关机解锁。
  • 导出的 INI 保留 LIB:basic_sim.tcl,不泄露 Web _cmds.hal 替换;导出分别为 4867 和 4875 字符。
  • 1440×1000 与 390×844 布局无页面横向溢出;参数控件均位于视口内;canvas 分别为 472×360 和 368×378,颜色数 1691/1804,旋转前后像素 hash 改变;pageerror 为零。
  • 最终截图:桌面、移动端、XYZAC、XYZBC。均已人工查看。
  • failure.png 保留中间测试失败截图;最终结论以 report 和 layout 截图为准。
  • job_id / PDF:不适用。浏览器保存对话框本身需要用户选择磁盘位置;自动测试验证下载回退及其文件内容。

E04 相关回归与边界

命令 结果
npm --prefix web/react run build TypeScript 和生产构建通过;现有大 chunk 警告仍在
node web/workspace/test_sim_case_loader.mjs 通过
node web/worker/test_xyzac_trt_case.mjs 通过,TASK_READY、五关节、M428/M429/M430 和直接切换
node web/worker/test_boat_trt_programs.mjs XYZAC/XYZBC 均完成程序
node web/worker/test_xyzac_program_replace.mjs 通过,失败解析不保留旧预览
PLAYWRIGHT_MODULE=... node scripts/test_xyzbc_panel_browser.mjs 通过,双 canvas、轴序、转台路径附着、无 HUD
git diff --check -- README.md web scripts docs/trt-parametric 通过
node web/worker/test_xyzac_recovery.mjs 退出 0,但其内部输出恢复前后 HAL tick / TP progress / queue 状态不同,endpoint_at_checkpoint_equal=false;登记 TRT-R01,不能声称恢复完全等价

本次未重跑全仓历史发布 gate、全部浏览器矩阵或官方 native 对照。专项测试验证浏览器仿真,不是实际机床控制验收。

E05 机床预览路径颜色

  • 材质检查:XyzacMachineView.tsx 普通预览路径使用 0xffff00(黄色)。
  • 命令:node web/react/src/test_xyzac_threejs.mjs、npm --prefix web/react run typecheck。
  • 结果:模型回归及 TypeScript 检查通过。

E06 M428 Jog RTCP 修复

  • 修复前:node web/react/src/test_trt_rtcp_jog.mjs 在 A 连续 Jog 松开时报 a-released: RTCP motion mode must remain active,实际模式 0、期望 1。
  • 修复后同命令通过;WASM 测试报告,report_id=trt-rtcp-jog-v1。
  • 两机型各 77 个检查点,使用非零 INI 旋转中心。覆盖 A/B/C 连续、负方向增量、重复 Jog、停止、非法值/越界拒绝、PROGRAM_ABORT、关机保持及 M429 不补偿对照;另验证历史程序行 ID 与 Jog ID 复用不污染运动学模式。
  • 编程 TCP 的 XYZ 不变,机器 XYZ 关节随角度改变;模型上同一编程点与刀尖的最大距离:XYZAC 4.48e-16、XYZBC 4.45e-16 场景单位。停止前后关节无跳变,motion_trace 和完整面板快照都检查。
  • 浏览器命令:PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_trt_rtcp_jog_browser.mjs。
  • 页面 http://127.0.0.1:5174/,实际操作开机、回零、X/Y 离开旋转中心、选择 M428、连续按住/松开 A-C-A-C 与 B-C-B-C;两个机型均保持 XYZ 补偿,渲染刀尖与 Worker 关节一致,pageerror 为零。
  • 浏览器报告,report_id=trt-rtcp-jog-browser-v1;截图:XYZAC、XYZBC。
  • 回归通过:node web/react/src/test_trt_parametric.mjs、node web/worker/test_xyzac_trt_case.mjs、node web/worker/test_xyzac_program_replace.mjs、node web/worker/test_xyzac_runtime_followups.mjs、node web/worker/test_boat_trt_programs.mjs、npm --prefix web/react run build。构建保留既有大 chunk 提示。
  • runtime_followups 初次失败因未等待 HOME 完成便启动程序;现等待 WASM homed,并断言 PROGRAM_LOAD/RUN 成功后再验收。
  • job_id / PDF:不适用;使用原有 WASM,无核心 ABI 变更。本轮不声称修复 TRT-R01。

E07 配置驱动改造 / 2026-09-18

本轮新增兼容的 WASM 配置 setter,核心已重建。WASM SHA-256:213b55e64b45c14df5c40e59827fa8bb4903135cd788664bb08263f08a49738f。

命令 / 场景 实测结果 证据
bash scripts/build-wasm.sh WASM 测试通过,native 23/23 通过;随后扩展的 TP 配置边界单测也通过 /tmp/trt-config-build.log,native sim_linuxcnc_tp_test
node web/worker/test_trt_configuration.mjs 两机型 X 实际速度均为 4,实际加速度约 4 且不超过配置 8;周期 .002;axis X 上限 15、joint X 上限 17;非法值、倍率越界拒绝;改速度后拒绝旧 checkpoint 运行配置报告
PLAYWRIGHT_MODULE=... node scripts/test_configurable_ui_browser.mjs 配置为默认 XYZBC、自定义 INI/程序名、Jog 0.25/2.5、进给上限130%、自定义图标路径;紫背景143449像素、绿色路径85像素,零 pageerror 浏览器报告、截图
npm --prefix web/react run build 类型检查及生产构建通过;保留大 chunk 提示 构建输出
生产页面 http://127.0.0.1:5175/dist/ 子路径部署加载机床/程序成功,30个图标加载成功,零 pageerror 子路径报告
python3 scripts/audit_configuration_inputs.py 14 项迁移输入检查通过,记录源码/配置/WASM 哈希及保留类型 审计报告
真实 WASM 参数化与 RTCP Jog 回归 参数链路、两机型各77检查点、零角/单轴/复合姿态、重复停止通过 参数回归、Jog 回归
浏览器实际 A-C-A-C、B-C-B-C 按住/松开 两机型各4轮通过,TCP模型误差小于1e-7场景单位,零 pageerror 报告、XYZAC、XYZBC

相关回归命令通过:node web/worker/test_boat_trt_programs.mjs(两机型 completed)、node web/worker/test_xyzac_runtime_followups.mjs、node web/worker/test_xyzac_trt_case.mjs、node web/worker/test_authoritative_kinematics_s6.mjs、node web/worker/test_motion_state.mjs、node web/workspace/test_sim_case_loader.mjs、node web/react/src/test_xyzac_threejs.mjs、node web/react/src/test_xyzac_tool_preview.mjs。

旧 node web/worker/test_axis3_selected_case.mjs 未通过:脚本在程序/运动尚未空闲时发主轴命令,被 axis_gate 拒绝。诊断期间临时增加等待后发现 TOOL_PREPARE 的 tool action 缺少旧兼容 gate 分支;临时测试调整已撤回,正式登记 CFG-R01。本轮不声称全仓历史测试全通过,也不以此删除/放宽控制门控。

审计范围是已识别可配置输入,静态检查不是对任意数值字面量的完整证明。旧报告保留在原目录,本轮报告单独归档。截图已经查看;job_id/PDF 不适用。

E08 三轴控制门控收口 / 2026-09-18

  • node web/app/test_axis_contract.mjs:工具准备/换刀在运行、暂停、急停、关机、故障、非空运动队列和 AUTO 操作者模式下拒绝;空闲 MANUAL/MDI 允许交由 IO 状态机检查。来源为 emctaskmain.cc::emcTaskCheckPreconditions 的 PREPARE 等待 IO、LOAD 等待 motion+IO。
  • node web/worker/test_axis3_selected_case.mjs:完整流程通过,含运行中拒绝、等待真实队列结束、主轴/冷却、工具握手、急停和恢复。
  • node web/worker/test_wasm_motion_checkpoint.mjs:三轴原有恢复及 trace 导入回归通过,连续/恢复 hash 相同。
  • 报告:门控、三轴流程、三轴恢复。E07 的 CFG-R01 遗留已在本轮关闭。

E09 五轴原生恢复精度 / 2026-09-18

  • bash scripts/build-wasm.sh:WASM 测试与 native 23/23 通过,日志 /tmp/trt-recovery-build.log。native TP 单测保存后继续 100 个伺服步,再恢复逐步对比;HAL 单测验证 tick、函数调用计数和完整状态字节一致。
  • node web/worker/test_xyzac_recovery.mjs:恢复点前后完整 hash 相同;旧的仅打印差异已改成硬断言;实际重发 M428 验证 switch_count 不增加。报告中 baseline/restored 比较相同 checkpoint tick,未重放尾部另列。
  • node web/worker/test_trt_checkpoint_exact.mjs:XYZAC/XYZBC 在子程序、暂停恢复、直线、圆弧和程序完成阶段分别比较 12 个连续任务 tick,共 120 个全状态比较,没有 divergent tick;另有 12 个恢复后 Jog 的当前关节采样验证。
  • 同时验证空程序、不同堆布局、外部子程序文件改变时使用快照中冻结的源、trace 导入、新传输会话 RECOVER/RESUME、损坏 native 块和构建不匹配在修改状态前拒绝。
  • node web/worker/test_xyzac_runtime_followups.mjs:关机记录重启恢复通过。
  • 报告:恢复点、连续轨迹、关机恢复;最终源码构建指纹、WASM SHA 和报告 SHA 见验收汇总。

E10 浏览器真实 OPFS 重启 / 2026-09-18

PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_checkpoint_reload_browser.mjs
RECOVERY_MACHINE=xyzbc-trt PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_checkpoint_reload_browser.mjs
  • 页面 http://127.0.0.1:5174/;上传真实测试程序、开机/回零/Jog、关机写入 OPFS、页面重载、恢复程序和预览、再次开机增量 Jog。
  • 两机型关机前/重启后关节数组严格相同,保留 recovery-browser.ngc,预览重建非空;继续 Jog 精确增加 0.1 mm;无 pageerror。记录约 103 KB,低于已有 1 MiB OPFS 上限。
  • XYZAC 报告、截图;XYZBC 报告、截图。
  • node web/worker/test_opfs_ui_state.mjs、node web/worker/test_opfs_worker_bridge.mjs:双槽位校验、机型隔离、配置重载不注入旧缓存、不兼容记录提示通过,见桥接报告。
  • npm --prefix web/react run build:类型检查及构建通过,仍有既有大 chunk 提示。
  • 中间浏览器测试发现 identity Jog 最后关节采样滞后,已修复当前 WASM 样本投影;browser-reload-failure.png 保留中间失败截图,最终结论以 verified 报告为准。
  • 边界:只允许匹配构建/配置的原生记录;旧不完整记录不近似恢复。TRT checkpoint 的后续事件须作为显式命令执行,不静默丢弃尾部;公开恢复向更早逻辑 tick 回退需要新传输会话,避免改写已有事件历史。OPFS 真实断电崩溃与所有浏览器矩阵不在本次结论内。job_id/PDF 不适用。