diff --git a/text9.txt b/text9.txt index 233b356..99b3956 100644 --- a/text9.txt +++ b/text9.txt @@ -728,3 +728,56 @@ host_wasm_opfs_browser_smokes=ok `opfsToolTableSeedTextForTool(...)` / `opfsToolTableTextLinesForTool(...)` object adapter,减少普通 OPFS tool-table 调用点的参数展开;只改测试胶水,不改变输入、 OPFS path、WASM path 字符串或保存/读取行为。 + +十六、2026-06-14 继续执行记录:browser OPFS tool-table object adapter guard + +本轮按上一条下一步建议继续收敛普通 OPFS tool-table helper 调用点的参数展开, +范围仍只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 新增 `opfsToolTableTextLinesForTool(...)`,从显式 tool object locals 转发到 + `opfsToolTableTextLines(...)`; +- 新增 `opfsToolTableSeedTextForTool(...)`,从显式 tool object locals 转发到 + `opfsToolTableSeedText(...)`; +- direct `browser-interp` ordinary tool-table readback 改为复用 + `opfsToolTableTextLinesForTool(...)`,并继续显式保留 `I/J/Q` readback lines; +- INI-named 与 explicit custom session ordinary tool-table seed/readback 调用点改为 + 复用 object adapter; +- 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 +``` + +下一步建议: + +继续小批量 browser test glue guard。优先扫描 ordinary OPFS tool-table load/save +result 调用点是否值得新增 `opfsToolTableResultLinesForTool(...)` 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 c9bdb7c..04096b9 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4619,6 +4619,17 @@ ]; } + function opfsToolTableTextLinesForTool(tool, extraLines = []) { + return opfsToolTableTextLines( + tool.toolNo, + tool.pocketNo, + tool.readbackZOffset, + tool.readbackDiameter, + tool.comment, + extraLines, + ); + } + function opfsToolTableToolValues( toolNo, pocketNo, @@ -4682,6 +4693,16 @@ return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`; } + function opfsToolTableSeedTextForTool(tool) { + return opfsToolTableSeedText( + tool.toolNo, + tool.pocketNo, + tool.zOffset, + tool.diameter, + tool.comment, + ); + } + function opfsCustomSessionIniText(machineId, parameterFilename, toolTableFilename) { return [ "[EMC]", @@ -9507,14 +9528,7 @@ "opfs_saved_tool_table_text", browserInterpMachineId, "toolTable", - opfsToolTableTextLines( - browserInterpToolTable.toolNo, - browserInterpToolTable.pocketNo, - browserInterpToolTable.readbackZOffset, - browserInterpToolTable.readbackDiameter, - browserInterpToolTable.comment, - ["I+12.000000", "J+34.000000", "Q4"], - ), + opfsToolTableTextLinesForTool(browserInterpToolTable, ["I+12.000000", "J+34.000000", "Q4"]), ); const browserRandomMachineId = "browser-random-toolchanger"; @@ -9651,13 +9665,7 @@ await writeOpfsMachineFile( iniFileMachineId, iniFileToolTableFilename, - opfsToolTableSeedText( - iniNamedToolTable.toolNo, - iniNamedToolTable.pocketNo, - iniNamedToolTable.zOffset, - iniNamedToolTable.diameter, - iniNamedToolTable.comment, - ), + opfsToolTableSeedTextForTool(iniNamedToolTable), ); const loadedIniFileSession = await loadMachineSessionFromOpfs( interp, @@ -9747,13 +9755,7 @@ await verifyOpfsReadback( "opfs_saved_ini_named_tool_table_text", loadedIniFileSession.toolTable.opfsPath, - opfsToolTableTextLines( - iniNamedToolTable.toolNo, - iniNamedToolTable.pocketNo, - iniNamedToolTable.readbackZOffset, - iniNamedToolTable.readbackDiameter, - iniNamedToolTable.comment, - ), + opfsToolTableTextLinesForTool(iniNamedToolTable), ); const iniOverrideMachineId = "browser-ini-override-session"; @@ -9794,13 +9796,7 @@ await writeOpfsMachineFile( iniOverrideMachineId, explicitToolTableFilename, - opfsToolTableSeedText( - explicitToolTable.toolNo, - explicitToolTable.pocketNo, - explicitToolTable.zOffset, - explicitToolTable.diameter, - explicitToolTable.comment, - ), + opfsToolTableSeedTextForTool(explicitToolTable), ); const loadedIniOverrideSession = await loadMachineSessionFromOpfs( interp, @@ -9894,13 +9890,7 @@ await verifyOpfsReadback( "opfs_saved_explicit_tool_table_text", loadedIniOverrideSession.toolTable.opfsPath, - opfsToolTableTextLines( - explicitToolTable.toolNo, - explicitToolTable.pocketNo, - explicitToolTable.readbackZOffset, - explicitToolTable.readbackDiameter, - explicitToolTable.comment, - ), + opfsToolTableTextLinesForTool(explicitToolTable), ); await verifyOpfsInvalidIniSessionRejects(