From 45d34c8586dc9d0d9745f52e378518151f4de772 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sun, 14 Jun 2026 07:10:28 +0800 Subject: [PATCH] Guard browser direct session tool-table values --- text9.txt | 52 +++++++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 26 +++++++----- 2 files changed, 68 insertions(+), 10 deletions(-) diff --git a/text9.txt b/text9.txt index 255e4d0..233b356 100644 --- a/text9.txt +++ b/text9.txt @@ -676,3 +676,55 @@ host_wasm_opfs_browser_smokes=ok tool-table value groups 是否也能复用 `opfsToolTableToolValues(...)`,或把 `opfsToolTableSeedText(...)` / `opfsToolTableTextLines(...)` 调用收敛成 object adapter;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 + +十五、2026-06-14 继续执行记录:browser direct session tool-table value object guard + +本轮按上一条下一步建议继续收敛 direct `browser-interp` ordinary tool-table +load/save/readback value groups,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- `browserInterpToolTableValues` 与 `browserInterpToolTableReadbackValues` 两组并行 + 数组收敛为 `browserInterpToolTable` object; +- direct `browser-interp` ordinary tool-table 的 load/save/readback expected lines + 改为复用 `opfsToolTableToolValues(...)` 的显式 object locals; +- front angle、back angle、orientation 与 `tool_index_for_tool_2=1` 仍保留在 + 对应 load expected lines 调用点,保持语义边界外显; +- 未改变任何 expected 字符串、输入、OPFS path、WASM path 字符串或 save/read/load + 行为; +- 未改变 staging path 模型、OPFS bridge behavior、file-service、SDK planner、 + interpreter、INI、tool、parameter 或 LinuxCNC-owned runtime semantics。 + +验证已通过: + +```bash +git diff --check +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh +wasm-port/tools/verify_vendor_sync.sh +wasm-port/tools/verify_no_standalone_cnc_semantics.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +关键输出: + +```text +browser_interp_smoke=ok +vendor sync up to date +standalone CNC semantics guard complete +interp_wasm_node_smoke=ok +sim_configs_wasm_node_inventory_executed=28 +sim_configs_wasm_node_inventory_passed=28 +sim_configs_wasm_node_inventory_skipped=131 +sim_configs_wasm_node_inventory_unexpected_fail=0 +host_wasm_opfs_browser_smokes=ok +``` + +下一步建议: + +继续小批量 browser test glue guard。优先扫描是否值得新增 +`opfsToolTableSeedTextForTool(...)` / `opfsToolTableTextLinesForTool(...)` object +adapter,减少普通 OPFS tool-table 调用点的参数展开;只改测试胶水,不改变输入、 +OPFS path、WASM path 字符串或保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 729155d..c9bdb7c 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -9425,24 +9425,26 @@ loadedSession.parameters, opfsParameterResultLines("restore", ...browserInterpInitialParameterValues), ); - const browserInterpToolTableValues = ["2", "7", "3.125", "1.5", "browser finish tool"]; - const browserInterpToolTableReadbackValues = [ + const browserInterpToolTable = opfsToolTableToolValues( "2", "7", + "3.125", + "1.5", + ";browser finish tool", + "browser finish tool", "+3.125000", "+1.500000", - ";browser finish tool", - ]; + ); verifyOpfsLoadResult( "opfs_load_tool_table", loadedSession.toolTable, - opfsToolTableResultLines("load", browserInterpToolTableValues[0], browserInterpToolTableValues[1], [ - `tool_1.z=${browserInterpToolTableValues[2]}`, - `tool_1.diameter=${browserInterpToolTableValues[3]}`, + opfsToolTableResultLines("load", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo, [ + `tool_1.z=${browserInterpToolTable.zOffset}`, + `tool_1.diameter=${browserInterpToolTable.diameter}`, "tool_1.frontangle=12", "tool_1.backangle=34", "tool_1.orientation=4", - `tool_1.comment=${browserInterpToolTableValues[4]}`, + `tool_1.comment=${browserInterpToolTable.loadComment}`, "tool_index_for_tool_2=1", ]), ); @@ -9499,14 +9501,18 @@ verifyOpfsSaveResult( "opfs_save_tool_table", savedToolTable, - opfsToolTableResultLines("save", browserInterpToolTableValues[0], browserInterpToolTableValues[1]), + opfsToolTableResultLines("save", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo), ); await verifyOpfsMachineFileReadback( "opfs_saved_tool_table_text", browserInterpMachineId, "toolTable", opfsToolTableTextLines( - ...browserInterpToolTableReadbackValues, + browserInterpToolTable.toolNo, + browserInterpToolTable.pocketNo, + browserInterpToolTable.readbackZOffset, + browserInterpToolTable.readbackDiameter, + browserInterpToolTable.comment, ["I+12.000000", "J+34.000000", "Q4"], ), );