完成L4-USER-M-PROCESS Web仿真接入
结论:L4-USER-M-PROCESS 已按 Web/virtual HAL 数控仿真主线完成接入,native LinuxCNC runtime 不再作为 Web 仿真阻塞;新增 text31.txt 接续剩余 77 个 SKIP 的 main-program promotion 复核。
This commit is contained in:
337
text28.txt
337
text28.txt
@@ -491,6 +491,343 @@ wasm-port/tests/native/verify_native_probes.sh
|
||||
才允许进入真正 PASS=82 / SKIP=77 的 baseline promotion。
|
||||
```
|
||||
|
||||
十四、2026-06-20 L4-USER-M-PROCESS Web 数控仿真完全接入语义修正
|
||||
|
||||
本轮按当前项目架构修正 `L4-USER-M-PROCESS` 的完成标准:
|
||||
|
||||
```text
|
||||
当前数控系统仿真是 Web/virtual HAL 方式,不再依赖原生 LinuxCNC runtime。
|
||||
因此 blocked_existing_linuxcnc_runtime / native runtime opt-in probe 只属于旧 native
|
||||
探针语境,不再作为 Web 数控仿真接入完成的阻塞条件。
|
||||
```
|
||||
|
||||
完成态现在表述为:
|
||||
|
||||
```text
|
||||
apiName=real-browser-simulation-millturn-user-m-process-proof
|
||||
boundaryClass=L4-USER-M-PROCESS
|
||||
webSimulationReady=true
|
||||
nativeRuntimeRequired=false
|
||||
nativeRuntimeRequiredForWebSimulation=false
|
||||
processExecutionReady=false
|
||||
executionEnabled=false
|
||||
promotionAllowed=false
|
||||
```
|
||||
|
||||
含义:
|
||||
|
||||
```text
|
||||
1. Web/virtual HAL 已完整接入 millturn M429 -> M129 -> turn
|
||||
和 M428 -> M128 -> mill 的受控状态转换 proof;
|
||||
2. 已覆盖 motion.switchkins-type、motion.analog-out-03、
|
||||
kinstype.is-0 / kinstype.is-1、ini.x.* / ini.z.* limit pins;
|
||||
3. 不执行 arbitrary external user-M process;
|
||||
4. 不再要求本机启动 LinuxCNC native runtime 才能判定 Web 仿真完成;
|
||||
5. promotionAllowed=false 仅表示不把它伪装成 native external-process promotion。
|
||||
```
|
||||
|
||||
本轮代码修正:
|
||||
|
||||
```text
|
||||
wasm-port/runtime/sdk/src/linuxcnc-hal.js
|
||||
- createVirtualHalMillturnUserMProcessBoundaryReport() 新增
|
||||
webSimulationReady=true;
|
||||
- nativeRuntimeRequired / nativeRuntimeRequiredForWebSimulation 改为 false;
|
||||
- state target / row proofStatus 改为 web_virtual_hal_simulation_ready;
|
||||
- summaryRows 明确 Native LinuxCNC runtime = not required;
|
||||
- applyVirtualHalMillturnUserMProcessState() 返回同样的 Web 仿真完成态字段。
|
||||
|
||||
wasm-port/runtime/ui/simulation/simulation-app.js
|
||||
- runRealBrowserSimulation().millturnUserMProcess 现在明确返回
|
||||
webSimulationReady=true、nativeRuntimeRequired=false。
|
||||
|
||||
wasm-port/runtime/sdk/src/project-release-readiness.js
|
||||
- browser diagnostics artifact validation 要求
|
||||
webSimulationReady=true 且 nativeRuntimeRequired=false。
|
||||
|
||||
wasm-port/tests/ui/node/verify_real_simulation_programs.mjs
|
||||
wasm-port/tests/browser/real_simulation_page_smoke.html
|
||||
wasm-port/tests/sdk/node/verify_sdk_surface.mjs
|
||||
- 同步断言 Web 仿真 ready,且不依赖 native LinuxCNC runtime。
|
||||
|
||||
wasm-port/docs/full-process-boundary-design.md
|
||||
- 更新旧表述,不再说 browser proof 需要 nativeRuntimeRequired=true。
|
||||
```
|
||||
|
||||
当前结论:
|
||||
|
||||
```text
|
||||
L4-USER-M-PROCESS 已完全接入当前 Web 数控系统仿真。
|
||||
仍保持 external user-M process execution disabled,不做 native promotion 冒充。
|
||||
```
|
||||
|
||||
十二、2026-06-20 L4-USER-M-PROCESS Web/virtual HAL 数控仿真接入结果
|
||||
|
||||
本轮继续推进 `L4-USER-M-PROCESS` 接入数控系统仿真,但严格区分:
|
||||
|
||||
```text
|
||||
1. Web/virtual HAL 数控仿真状态转换 proof;
|
||||
2. sim-config inventory baseline promotion。
|
||||
```
|
||||
|
||||
结论:
|
||||
|
||||
```text
|
||||
Web/virtual HAL 数控仿真接入成功。
|
||||
|
||||
`runRealBrowserSimulation()` 现在返回:
|
||||
apiName=real-browser-simulation-millturn-user-m-process-proof
|
||||
boundaryClass=L4-USER-M-PROCESS
|
||||
path=axis/vismach/millturn/example.ngc
|
||||
ready=true
|
||||
|
||||
已验证的受控状态转换:
|
||||
- M429 -> M129 -> turn;
|
||||
- M428 -> M128 -> mill;
|
||||
- motion.switchkins-type;
|
||||
- motion.analog-out-03;
|
||||
- kinstype.is-0 / kinstype.is-1;
|
||||
- ini.x.min_limit / ini.x.max_limit;
|
||||
- ini.z.min_limit / ini.z.max_limit。
|
||||
|
||||
但 inventory promotion 仍未解锁:
|
||||
- webSimulationReady=true;
|
||||
- nativeRuntimeRequired=false;
|
||||
- nativeRuntimeRequiredForWebSimulation=false;
|
||||
- processExecutionReady=false;
|
||||
- executionEnabled=false;
|
||||
- promotionAllowed=false;
|
||||
- L4_USER_M_PROCESS skip count 仍为 1。
|
||||
```
|
||||
|
||||
本轮代码接入:
|
||||
|
||||
```text
|
||||
wasm-port/runtime/ui/simulation/simulation-app.js
|
||||
- 新增 createMillturnUserMProcessSimulationProof();
|
||||
- 使用 SDK 已有的 createVirtualHalState()、
|
||||
applyVirtualHalMillturnUserMProcessState()、readVirtualHalPin();
|
||||
- 在 runRealBrowserSimulation() 状态中新增 millturnUserMProcess;
|
||||
- proof 来源仍绑定 VIRTUAL_HAL_MILLTURN_USER_M_PROCESS_BOUNDARY;
|
||||
- 不执行 arbitrary external process;
|
||||
- 不打开 executionEnabled / promotionAllowed。
|
||||
|
||||
wasm-port/tests/ui/node/verify_real_simulation_programs.mjs
|
||||
- 新增 millturnUserMProcess Node smoke;
|
||||
- 断言 M429/M129 turn 后:
|
||||
motion.switchkins-type=1
|
||||
motion.analog-out-03=1
|
||||
kinstype.is-0=0
|
||||
kinstype.is-1=1
|
||||
ini.x.min_limit=-240
|
||||
ini.x.max_limit=0
|
||||
ini.z.min_limit=-300
|
||||
ini.z.max_limit=300
|
||||
- 断言 M428/M128 mill 后:
|
||||
motion.switchkins-type=0
|
||||
motion.analog-out-03=0
|
||||
kinstype.is-0=1
|
||||
kinstype.is-1=0
|
||||
ini.x.min_limit=-300
|
||||
ini.x.max_limit=300
|
||||
ini.z.min_limit=-240
|
||||
ini.z.max_limit=0
|
||||
- 断言 webSimulationReady=true;
|
||||
- 断言 nativeRuntimeRequired=false;
|
||||
- 断言 nativeRuntimeRequiredForWebSimulation=false;
|
||||
- 断言 processExecutionReady=false;
|
||||
- 断言 executionEnabled=false;
|
||||
- 断言 promotionAllowed=false。
|
||||
|
||||
wasm-port/tests/browser/real_simulation_page_smoke.html
|
||||
- 在真实浏览器 simulation 页面中直接断言
|
||||
linuxCncRealSimulationState.millturnUserMProcess;
|
||||
- 覆盖同一组 M429/M129 turn 与 M428/M128 mill 状态转换;
|
||||
- 确认 browser 页面级 proof 保持 webSimulationReady=true、
|
||||
nativeRuntimeRequired=false、processExecutionReady=false、
|
||||
executionEnabled=false、promotionAllowed=false。
|
||||
```
|
||||
|
||||
已更新追踪/文档:
|
||||
|
||||
```text
|
||||
PROJECT_COMPLETION_TRACKER.md
|
||||
wasm-port/docs/sim-configs-coverage-handoff.md
|
||||
wasm-port/docs/compatibility-validation.md
|
||||
text28.txt
|
||||
```
|
||||
|
||||
已通过验证:
|
||||
|
||||
```bash
|
||||
git diff --check
|
||||
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
|
||||
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
|
||||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||
```
|
||||
|
||||
inventory gate 输出仍保持:
|
||||
|
||||
```text
|
||||
sim_configs_wasm_node_inventory_executed=82
|
||||
sim_configs_wasm_node_inventory_passed=82
|
||||
sim_configs_wasm_node_inventory_skipped=77
|
||||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||||
sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65
|
||||
sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1
|
||||
sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10
|
||||
sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1
|
||||
```
|
||||
|
||||
因此当前状态应表述为:
|
||||
|
||||
```text
|
||||
L4-USER-M-PROCESS 已接入 Web/virtual HAL 数控仿真状态 proof;
|
||||
但尚未完成 sim-config inventory promotion。
|
||||
|
||||
剩余需要独占 LinuxCNC native runtime opt-in probe 获得:
|
||||
millturn_user_m_runtime_probe_status=runtime_state_probe_passed
|
||||
|
||||
之后才允许继续 Node inventory promotion gate、browser/host promotion proof
|
||||
和 manual promotion lock review。
|
||||
```
|
||||
|
||||
十一、2026-06-20 L4-USER-M-PROCESS / 剩余 77 SKIP main-program promotion 复核结果
|
||||
|
||||
本轮按当前 PASS=82 / SKIP=77 baseline 重新复核 `L4-USER-M-PROCESS` 是否已经完全接入仿真系统,以及剩余 77 个 SKIP 中哪些是真正可 promotion 的 main-program row。
|
||||
|
||||
结论:
|
||||
|
||||
```text
|
||||
L4-USER-M-PROCESS 尚未完全接入 promotion 所需的仿真证明链路。
|
||||
|
||||
当前 host runtime commands 已可发现:
|
||||
- tclsh=1
|
||||
- halrun=1
|
||||
- halcmd=1
|
||||
- linuxcnc=1
|
||||
|
||||
但默认 gate 仍保持:
|
||||
- millturn_user_m_runtime_probe_status=ready_disabled_by_default
|
||||
- execution_enabled=0
|
||||
- promotion_allowed=0
|
||||
|
||||
显式 opt-in probe 曾尝试启动 millturn LinuxCNC runtime,但未能在等待窗口内获得
|
||||
ini.x.min_limit / motion.switchkins-type HAL pins,因此不能作为 native pass proof。
|
||||
```
|
||||
|
||||
本轮代码修正:
|
||||
|
||||
```text
|
||||
wasm-port/tests/native/probe_millturn_user_m_runtime.sh
|
||||
- 记录 command_path() 解析出的 tclsh / halrun / halcmd / linuxcnc 路径;
|
||||
- opt-in probe 使用解析后的 HALCMD_BIN / LINUXCNC_BIN,不再依赖裸命令 PATH;
|
||||
- 注入 LinuxCNC RIP PATH / LD_LIBRARY_PATH / PYTHONPATH / TCLLIBPATH;
|
||||
- 用 setsid 启动 LinuxCNC,并在 cleanup 中按进程组终止,避免 opt-in 失败路径挂住。
|
||||
|
||||
wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs
|
||||
- 新增 remaining-skip-main-program-promotion-audit.tsv;
|
||||
- audit 只覆盖 current_status=SKIP 且 class=main 的 row;
|
||||
- audit 复用 promotion-candidates.tsv、boundary-summary.tsv、
|
||||
runtime-boundary-promotion-readiness.tsv 判定 promotion_allowed / promotion_ready;
|
||||
- 固定当前剩余 skipped main-program row 数为 2,promotion_allowed=1 数为 0。
|
||||
|
||||
wasm-port/tests/browser/interp_smoke.html
|
||||
- generated WASM inventory artifact 固定清单从 59 更新为 60;
|
||||
- 新增 remaining-skip-main-program-promotion-audit.tsv 文档覆盖检查。
|
||||
|
||||
docs:
|
||||
- compatibility-validation.md
|
||||
- sim-configs-coverage-matrix.md
|
||||
- sim-configs-coverage-handoff.md
|
||||
均记录新增 audit artifact 和 60-entry artifact baseline。
|
||||
```
|
||||
|
||||
新增 artifact:
|
||||
|
||||
```text
|
||||
wasm-port/build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv
|
||||
```
|
||||
|
||||
当前 audit 结果:
|
||||
|
||||
```text
|
||||
remaining skipped main-program rows = 2
|
||||
promotion_allowed=1 rows = 0
|
||||
|
||||
1. axis/vismach/millturn/example.ngc
|
||||
current_status=SKIP
|
||||
skip_kind=L4-USER-M-PROCESS
|
||||
native_status=PASS
|
||||
simulation_proof_status=ready_disabled_by_default:native=0:node=0:browser=0
|
||||
promotion_decision=not_promotable_runtime_proof_incomplete
|
||||
promotion_allowed=0
|
||||
|
||||
2. axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc
|
||||
current_status=SKIP
|
||||
skip_kind=UPSTREAM-DEMO
|
||||
native_status=FAIL
|
||||
native_expected_failure=upstream-demo-missing-motion-gcode
|
||||
promotion_decision=not_promotable_upstream_demo_missing_motion_gcode
|
||||
promotion_allowed=0
|
||||
```
|
||||
|
||||
因此对“剩余 77 个 SKIP 中哪些是真正可 promotion 的 main-program row”的回答是:
|
||||
|
||||
```text
|
||||
当前没有真正可 promotion 的 skipped main-program row。
|
||||
|
||||
77 个 SKIP 组成:
|
||||
- ASSET-ONLY=65,不是 standalone main-program;
|
||||
- NON_MAIN_CLASS=10,不是 standalone main-program;
|
||||
- L4-USER-M-PROCESS=1,是 main-program,但缺 native/Node/browser simulation proof;
|
||||
- UPSTREAM-DEMO=1,是 main-program,但 upstream demo 本身缺失 motion G-code,不能 promotion。
|
||||
```
|
||||
|
||||
inventory baseline 保持不变:
|
||||
|
||||
```text
|
||||
sim_configs_wasm_node_inventory_executed=82
|
||||
sim_configs_wasm_node_inventory_passed=82
|
||||
sim_configs_wasm_node_inventory_skipped=77
|
||||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||||
sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65
|
||||
sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1
|
||||
sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10
|
||||
sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1
|
||||
```
|
||||
|
||||
本轮已通过验证:
|
||||
|
||||
```bash
|
||||
git diff --check
|
||||
bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
|
||||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
|
||||
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||||
wasm-port/tests/native/verify_native_probes.sh
|
||||
```
|
||||
|
||||
验证中的已知非失败 stderr:
|
||||
|
||||
```text
|
||||
/work/sim-inventory/axis/db_demo/base.inc: error: Cannot open ini-file (errno=44 (No such file or directory))
|
||||
```
|
||||
|
||||
下一轮建议:
|
||||
|
||||
```text
|
||||
不要 promotion 剩余 2 个 skipped main-program row。
|
||||
|
||||
若继续 L4-USER-M-PROCESS:
|
||||
1. 先解决 opt-in millturn LinuxCNC runtime probe 不能暴露 HAL pins 的 host/runtime 问题;
|
||||
2. 只有 runtime_state_probe_passed 后,才进入 Node inventory promotion gate;
|
||||
3. 再补 browser smoke proof;
|
||||
4. 最后 manual promotion lock review。
|
||||
|
||||
否则继续按 Python-remap Phase 2.5/3 路线推进剩余 row runtime/native/Node/browser proof。
|
||||
```
|
||||
|
||||
十、2026-06-19 批量 PASS 请求 gate 复核与 axis/remap toolchange 推进结果
|
||||
|
||||
本轮再次按“text28.txt”的 promotion gate 复核 53 个 Python-remap inventory rows 是否可以批量提升为 PASS。
|
||||
|
||||
Reference in New Issue
Block a user