From 6ac7cc89537f238d6650421a2fb18b990532ae42 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sun, 14 Jun 2026 07:22:59 +0800 Subject: [PATCH] Guard browser OPFS tool-table result adapter --- text9.txt | 61 +++++++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 16 +++--- 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/text9.txt b/text9.txt index 99b3956..61c5752 100644 --- a/text9.txt +++ b/text9.txt @@ -781,3 +781,64 @@ host_wasm_opfs_browser_smokes=ok 继续小批量 browser test glue guard。优先扫描 ordinary OPFS tool-table load/save result 调用点是否值得新增 `opfsToolTableResultLinesForTool(...)` object adapter; 只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 + +十七、2026-06-14 继续执行记录:browser OPFS tool-table result object adapter guard + +本轮按上一条下一步建议继续收敛普通 OPFS tool-table load/save result helper 调用点 +的参数展开,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 新增 `opfsToolTableResultLinesForTool(...)`,从显式 tool object locals 转发到 + `opfsToolTableResultLines(...)`; +- direct `browser-interp` ordinary tool-table load/save result 调用点改为复用 + `opfsToolTableResultLinesForTool(...)`; +- INI-named 与 explicit custom session ordinary tool-table load/save result 调用点改为 + 复用 `opfsToolTableResultLinesForTool(...)`; +- load result 的 front angle、back angle、orientation、comment 与 + `tool_index_for_tool_2=1` 等 extra lines 仍保留在调用点,保持语义边界外显; +- adapter 只转发已显式保存的 object 字段,不推导 LinuxCNC-owned tool-table 格式; +- 未改变任何 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 +``` + +备注: + +- 当前 sandbox 会拦截本地 HTTP server socket bind;`verify_host_smokes.sh` 首次在 + browser smoke 阶段因 `PermissionError: [Errno 1] Operation not permitted` 失败; +- 已按规则授权重跑 `wasm-port/tests/host/verify_host_smokes.sh`,重跑通过。 + +下一步建议: + +继续小批量 browser test glue guard。优先扫描普通 OPFS tool-table object helper +是否还能合并命名或减少重复 adapter;如果收益不明显,转向 parameter result/text 的 +object adapter 收敛;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或 +保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 04096b9..9dc9472 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4608,6 +4608,10 @@ ]; } + function opfsToolTableResultLinesForTool(operation, tool, extraLines = []) { + return opfsToolTableResultLines(operation, tool.toolNo, tool.pocketNo, extraLines); + } + function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment, extraLines = []) { return [ `T${toolNo}`, @@ -9459,7 +9463,7 @@ verifyOpfsLoadResult( "opfs_load_tool_table", loadedSession.toolTable, - opfsToolTableResultLines("load", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo, [ + opfsToolTableResultLinesForTool("load", browserInterpToolTable, [ `tool_1.z=${browserInterpToolTable.zOffset}`, `tool_1.diameter=${browserInterpToolTable.diameter}`, "tool_1.frontangle=12", @@ -9522,7 +9526,7 @@ verifyOpfsSaveResult( "opfs_save_tool_table", savedToolTable, - opfsToolTableResultLines("save", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo), + opfsToolTableResultLinesForTool("save", browserInterpToolTable), ); await verifyOpfsMachineFileReadback( "opfs_saved_tool_table_text", @@ -9729,7 +9733,7 @@ verifyOpfsLoadResult( "opfs_load_ini_named_tool_table", loadedIniFileSession.toolTable, - opfsToolTableResultLines("load", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo, [ + opfsToolTableResultLinesForTool("load", iniNamedToolTable, [ `tool_1.z=${iniNamedToolTable.zOffset}`, `tool_1.diameter=${iniNamedToolTable.diameter}`, `tool_1.comment=${iniNamedToolTable.loadComment}`, @@ -9750,7 +9754,7 @@ verifyOpfsSaveResult( "opfs_save_ini_named_tool_table", savedIniNamedToolTable, - opfsToolTableResultLines("save", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo), + opfsToolTableResultLinesForTool("save", iniNamedToolTable), ); await verifyOpfsReadback( "opfs_saved_ini_named_tool_table_text", @@ -9833,7 +9837,7 @@ verifyOpfsLoadResult( "opfs_load_explicit_tool_table", loadedIniOverrideSession.toolTable, - opfsToolTableResultLines("load", explicitToolTable.toolNo, explicitToolTable.pocketNo, [ + opfsToolTableResultLinesForTool("load", explicitToolTable, [ `tool_1.z=${explicitToolTable.zOffset}`, `tool_1.diameter=${explicitToolTable.diameter}`, `tool_1.comment=${explicitToolTable.loadComment}`, @@ -9885,7 +9889,7 @@ verifyOpfsSaveResult( "opfs_save_explicit_tool_table", savedExplicitToolTable, - opfsToolTableResultLines("save", explicitToolTable.toolNo, explicitToolTable.pocketNo), + opfsToolTableResultLinesForTool("save", explicitToolTable), ); await verifyOpfsReadback( "opfs_saved_explicit_tool_table_text",