Files
cnc_wams/完善wasm/working/05-验收证据.md
2026-07-10 03:22:55 -04:00

26 KiB
Raw Blame History

05-验收证据

本文件记录可复验证据。所有命令必须写明工作目录、命令、关键输出、结论。截图、PDF、页面、job_id、report_id、日志文件路径也应记录在对应任务下。

证据等级

等级 证据类型 用途
P0 LinuxCNC 上游源码、上游测试、nc_filesconfigs/sim 定义真实行为
P1 vendored 字节同步、source manifest、source reuse map 证明行为来源
P2 Native probe 或 native rs274 输出对比 证明脱离浏览器后与 LinuxCNC 一致
P3 WASM Node 测试 证明 WASM 编译后语义未漂移
P4 真实浏览器测试 证明 OPFS、Worker、UI、C ABI 集成后仍一致
P5 截图、录屏、人工 UI 检查 只能补充,不单独证明核心语义

记录模板

## YYYY-MM-DD HH:MM 时区 ACC-XXX 标题

### 验收对象

### 证据等级

### 命令或证据路径

### 实际输出摘要

### 结论

### 后续处理

2026-07-10 03:13 EDT ACC-023 继续复验与 User-M 审计修复证据

验收对象

ACC-001ACC-023 的继续复验,重点覆盖 configs/sim WASM inventory、User-M 外部进程边界审计、真实浏览器和 host 聚合验收。

证据等级

P1-P5 综合证据vendor 同步、自研语义 guard、Native、WASM Node、OPFS、UI Node、真实浏览器、host 聚合和专项边界 proof。

命令或证据路径

工作目录:

cd /home/mes123456/cnc_wams/wasm-port

本轮实际执行命令:

./tools/verify_upstream_baseline.sh && ./tools/verify_vendor_sync.sh && ./tools/verify_no_standalone_cnc_semantics.sh && ./tests/native/verify_native_probes.sh && ./tests/native/verify_nc_files.sh && ./tests/native/verify_sim_configs.sh && ./tests/wasm/node/verify_ini_wasm.sh && ./tests/wasm/node/verify_interp_wasm.sh && ./tests/wasm/node/verify_sim_configs_wasm.sh && ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh && ./tests/wasm/node/verify_nc_files_wasm.sh && ./tests/wasm/node/verify_tp_wasm.sh && ./tests/opfs/node/verify_file_service.sh && ./tests/ui/node/verify_ui_node_smokes.sh
./tests/browser/verify_ini_panel_browser.sh && ./tests/browser/verify_interp_browser.sh && ./tests/host/verify_host_smokes.sh && ./tests/wasm/node/verify_python_remap_runtime_port_wasm.sh && ./tests/sdk/node/verify_python_remap_runtime_port.sh && ./tests/sdk/node/verify_tool_db_node_runtime_adapter.sh && ./tests/browser/verify_python_remap_runtime_browser.sh

失败修复证据:

首次失败: AssertionError: axis/vismach/millturn/example.ngc: user-M Node proof status drift
修复文件: wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs
修复后单测: ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh 通过

生成审计文件:

build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv
axis/vismach/millturn/example.ngc ... ready_disabled_by_default:native=0:node=0:browser=0 ... not_promotable_runtime_proof_incomplete

实际输出摘要

upstream baseline validation complete
vendor sync up to date
standalone CNC semantics guard complete
native probe validation up to date
nc_files harness summary: total=107 pass=101 expected_fail=6 unexpected_fail=0
sim config harness summary: total=159 pass=151 expected_fail=8 unexpected_fail=0
ini_wasm_node_smoke=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0
nc_files_wasm_node_smoke=ok
tp_wasm_node_smoke=ok
tp_pause_resume_smoke=ok
opfs_file_service_node_smoke=ok
ui_node_smokes=ok
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_interp_smoke=ok
browser_real_simulation_page_smoke=ok
axis_screenshot_browser_smoke=ok
browser_opfs_session_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
python_remap_runtime_port_wasm=ok
python_remap_wasm_node_row_proof=ok
tool_db_node_runtime_adapter=ok
browser_python_remap_runtime_smoke=ok
python_remap_browser_row_proof=ok

结论

本轮复验通过。User-M 外部进程边界审计已按当前 host opt-in 状态正确记录,未把 ready_disabled_by_default 误判为 Node/browser proof 缺失导致的测试失败;所有必跑命令和专项补充命令均通过,unexpected_fail=0

后续处理

继续保持 Python remap、User M 外部进程、硬件驱动、实时内核等条件边界。millturn User-M 如需晋级,必须先通过显式 opt-in native runtime probe 并补齐后续 promotion gate。

2026-07-09 21:01 EDT ACC-001 到 ACC-023 复验证据

验收对象

/home/mes123456/cnc_wams/完善wasm/working 总体验收矩阵 ACC-001ACC-023 的完成后复验。

证据等级

P1-P5 综合复验证据vendor 同步、自研语义 guard、Native、WASM Node、OPFS、UI Node、真实浏览器、host 聚合和专项补充验证。

命令或证据路径

工作目录:

cd /home/mes123456/cnc_wams/wasm-port

本轮实际执行命令:

./tools/verify_upstream_baseline.sh && ./tools/verify_vendor_sync.sh && ./tools/verify_no_standalone_cnc_semantics.sh
./tests/native/verify_native_probes.sh && ./tests/native/verify_nc_files.sh && ./tests/native/verify_sim_configs.sh
./tests/wasm/node/verify_ini_wasm.sh && ./tests/wasm/node/verify_interp_wasm.sh && ./tests/wasm/node/verify_sim_configs_wasm.sh && ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh && ./tests/wasm/node/verify_nc_files_wasm.sh && ./tests/wasm/node/verify_tp_wasm.sh && ./tests/opfs/node/verify_file_service.sh && ./tests/ui/node/verify_ui_node_smokes.sh
./tests/browser/verify_ini_panel_browser.sh && ./tests/browser/verify_interp_browser.sh && ./tests/host/verify_host_smokes.sh
./tests/wasm/node/verify_python_remap_runtime_port_wasm.sh && ./tests/sdk/node/verify_python_remap_runtime_port.sh && ./tests/sdk/node/verify_tool_db_node_runtime_adapter.sh && ./tests/browser/verify_python_remap_runtime_browser.sh

实际输出摘要

upstream baseline validation complete
vendor sync up to date
standalone CNC semantics guard complete
native probe validation up to date
nc_files harness summary: total=107 pass=101 expected_fail=6 unexpected_fail=0
sim config harness summary: total=159 pass=151 expected_fail=8 unexpected_fail=0
ini_wasm_node_smoke=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0
nc_files_wasm_node_smoke=ok
tp_wasm_node_smoke=ok
tp_pause_resume_smoke=ok
opfs_file_service_node_smoke=ok
ui_node_smokes=ok
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_interp_smoke=ok
axis_screenshot_browser_smoke=ok
browser_opfs_session_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
python_remap_runtime_port_wasm=ok
python_remap_wasm_node_row_proof=ok
tool_db_node_runtime_adapter=ok
browser_python_remap_runtime_smoke=ok
python_remap_browser_row_proof=ok

verify_sim_configs_inventory_wasm.sh 仍输出 4 行 /work/sim-inventory/axis/db_demo/base.inc: Cannot open ini-file 诊断;命令以 0 退出,最终 inventory 计数稳定为 29/29/130/0

结论

本轮复验通过。发布前必跑命令和专项补充命令均通过,unexpected_fail=0ACC-001ACC-023 的完成/条件通过结论仍成立。

后续处理

保持 Python remap、User M 外部进程、硬件驱动、实时内核等条件边界,不把这些项宣称为无条件 full-process 支持。

必跑命令清单

发布前至少需要补齐以下命令证据:

cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_upstream_baseline.sh
./tools/verify_vendor_sync.sh
./tools/verify_no_standalone_cnc_semantics.sh
./tests/native/verify_native_probes.sh
./tests/native/verify_nc_files.sh
./tests/native/verify_sim_configs.sh
./tests/wasm/node/verify_ini_wasm.sh
./tests/wasm/node/verify_interp_wasm.sh
./tests/wasm/node/verify_sim_configs_wasm.sh
./tests/wasm/node/verify_sim_configs_inventory_wasm.sh
./tests/wasm/node/verify_nc_files_wasm.sh
./tests/wasm/node/verify_tp_wasm.sh
./tests/opfs/node/verify_file_service.sh
./tests/ui/node/verify_ui_node_smokes.sh
./tests/browser/verify_ini_panel_browser.sh
./tests/browser/verify_interp_browser.sh
./tests/host/verify_host_smokes.sh

2026-07-09 20:24 EDT ACC-001 到 ACC-023 完整验收证据

验收对象

/home/mes123456/cnc_wams/完善wasm/working 总体验收矩阵 ACC-001ACC-023

证据等级

P0-P5 综合证据LinuxCNC 上游基线、vendor 同步、Native probe、WASM Node、真实浏览器、OPFS/UI/Host 聚合。

命令或证据路径

工作目录:

cd /home/mes123456/cnc_wams/wasm-port

关键命令:

./tools/verify_upstream_baseline.sh
./tools/verify_vendor_sync.sh
./tools/verify_no_standalone_cnc_semantics.sh
./tests/native/verify_native_probes.sh
./tests/native/verify_nc_files.sh
./tests/native/verify_sim_configs.sh
./tests/wasm/node/verify_ini_wasm.sh
./tests/wasm/node/verify_interp_wasm.sh
./tests/wasm/node/verify_sim_configs_wasm.sh
./tests/wasm/node/verify_sim_configs_inventory_wasm.sh
./tests/wasm/node/verify_nc_files_wasm.sh
./tests/wasm/node/verify_tp_wasm.sh
./tests/wasm/node/verify_python_remap_runtime_port_wasm.sh
./tests/opfs/node/verify_file_service.sh
./tests/sdk/node/verify_python_remap_runtime_port.sh
./tests/sdk/node/verify_tool_db_node_runtime_adapter.sh
./tests/ui/node/verify_ui_node_smokes.sh
./tests/browser/verify_ini_panel_browser.sh
./tests/browser/verify_interp_browser.sh
./tests/browser/verify_python_remap_runtime_browser.sh
./tests/host/verify_host_smokes.sh

实际输出摘要

upstream baseline validation complete
vendor sync up to date
standalone CNC semantics guard complete
native probe validation complete
nc_files: total=107 pass=101 expected_fail=6 unexpected_fail=0
sim_configs native: total=159 pass=151 expected_fail=8 unexpected_fail=0
ini_wasm_node_smoke=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0
nc_files_wasm_node_smoke=ok
tp_wasm_node_smoke=ok
tp_pause_resume_smoke=ok
python_remap_runtime_port_wasm=ok
python_remap_wasm_node_row_proof=ok
opfs_file_service_node_smoke=ok
sdk_python_remap_runtime_port_sh=ok
tool_db_node_runtime_adapter=ok
ui_node_smokes=ok
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_real_simulation_page_smoke=ok
axis_screenshot_browser_smoke=ok
browser_opfs_session_workflow_smoke=ok
browser_interp_smoke=ok
browser_python_remap_runtime_smoke=ok
python_remap_browser_row_proof=ok
host_wasm_opfs_browser_smokes=ok

verify_sim_configs_inventory_wasm.sh 仍输出 4 行 /work/sim-inventory/axis/db_demo/base.inc: Cannot open ini-file 诊断,但命令以 0 退出,最终 inventory 计数稳定为 29/29/130/0

结论

必跑命令和专项补充命令通过。ACC-001ACC-023 可按当前证据闭合Python remap、User M 外部进程、硬件驱动和实时内核仍是明确的条件通过或 Blocked 边界。

后续处理

后续解除条件边界时,必须新增任务和证据,不得直接把当前条件通过项改写为无条件 full-process 支持。

2026-07-09 初始文档创建证据

验收对象

/home/mes123456/cnc_wams/完善wasm/working 初始推进文档集。

证据等级

P5 文档结构证据。本轮不作为 LinuxCNC 核心语义通过证据。

命令或证据路径

目标文件:

  • /home/mes123456/cnc_wams/完善wasm/working/README.md
  • /home/mes123456/cnc_wams/完善wasm/working/01-项目功能内容.md
  • /home/mes123456/cnc_wams/完善wasm/working/02-项目程序开发详细步骤.md
  • /home/mes123456/cnc_wams/完善wasm/working/03-推进台账.md
  • /home/mes123456/cnc_wams/完善wasm/working/04-任务矩阵.md
  • /home/mes123456/cnc_wams/完善wasm/working/05-验收证据.md
  • /home/mes123456/cnc_wams/完善wasm/working/06-决策记录.md

实际输出摘要

文档已创建,任务矩阵已初始化为 ACC-001ACC-023

结论

文档体系创建完成,但 wasm-port 的 LinuxCNC 对标状态仍需从 ACC-001 开始用真实命令补证据。

后续处理

执行基线和同步命令,并将输出追加到本文件。

2026-07-09 21:55 EDT release gate 稳定性复验

本轮目标

03完全对标LinuxCNC的可执行验收标准.txt 收口 wasm-port 发布前 gate解决真实执行中暴露的 browser 截图挂起、cwd 路径漂移、Python remap proof 与 inventory/manual lock 串状态、release readiness artifact 校验漂移问题。

修复摘要

  • verify_real_simulation_axis_screenshot_browser.sh:为 headless Chrome DOM/screenshot 调用增加 timeout、独立临时 profile 和 stderr 诊断,避免截图 smoke 无限挂起。
  • verify_tool_db_process_port_wasm.mjs:改为基于测试文件位置解析 wasm-port 根目录,避免 release gate 从仓库根执行时读错 vendor 路径。
  • verify_project_release_gate.sh:补入 Python remap SDK/WASM/browser proof 与 native opt-in lifecycle probe并保证 opt-in native probe 只在 locked proof 后、生成 readiness artifact 前执行。
  • verify_native_probes.shvalidation cache 指纹加入 opt-in 环境变量,避免 default 与 opt-in native runtime summary 串状态。
  • verify_sim_configs_inventory_wasm.mjsPython remap row proof 默认只作为证据,不提升 inventory只有显式 ENABLE_PYTHON_REMAP_INVENTORY_PROMOTION=1 才允许 promotion。
  • Python remap WASM/browser proof改为幂等校验允许已有 proof artifact 重复运行,同时继续要求 execution_enabled=0manual_promotion_lock
  • verify_python_remap_runtime_browser.shcleanup 对 Chrome profile 删除竞态增加重试。
  • verify_project_release_readiness_artifact.mjs:同步当前 sim-config inventory artifact hash、promotion candidate 行数和 29/29/130/0 baseline。

最终验证输出摘要

git diff --check: ok
verify_upstream_baseline.sh: upstream baseline validation complete
verify_vendor_sync.sh: vendor sync up to date
verify_no_standalone_cnc_semantics.sh: standalone CNC semantics guard complete
verify_sim_configs_inventory_wasm.sh: executed=29 passed=29 skipped=130 unexpected_fail=0
verify_host_smokes.sh: host_wasm_opfs_browser_smokes=ok
verify_project_release_gate.sh: project_release_gate=ok
verify_project_release_readiness_artifact.sh: project_release_readiness_artifact_node_smoke=ok

结论

发布 gate 已可从头到尾收口。unexpected_fail=0Python remap row proof 可重复运行但仍保持 manual_promotion_lock,不会把 Python remap 行误提升为无条件 inventory 通过。Python remap、User M 外部进程、硬件驱动、实时内核仍按文档保持条件通过或 Blocked 边界。

2026-07-09 22:46 EDT 后续边界功能推进证据

本轮目标

继续完成 release gate 之后的运行时边界后续功能:将 Tool DB 原生 DB_PROGRAM v2.1 协议探针纳入发布门禁和 release readiness artifact保留 User M 外部进程为明确 native blocker保持 sim-config inventory 不被自动提升。

修复摘要

  • tests/native/verify_sim_configs.sh:把 axis/vismach/5axis/table-dual-rotary/demos/xyzab-tdr-demo.ngc 的 HAL named-parameter 运行态依赖和 axis/vismach/millturn/example.ngc 的外部 M129 进程依赖归入 expected runtime boundary原生 sim-config 前置恢复为 unexpected_fail=0
  • tests/native/probe_millturn_user_m_runtime.shUser M runtime probe 改用 LinuxCNC 配置实际连接的 motion.analog-out-03 切换 kinematics并增强 cleanup避免失败路径遗留 linuxcncsvr/RT 会话。
  • tests/native/verify_native_probes.sh:允许 User M opt-in runtime probe 以 runtime_state_probe_failed 作为明确 blocker 证据通过校验Tool DB/Python Remap 仍要求通过状态。
  • runtime/sdk/src/project-release-readiness.js 与 readiness 写入/校验测试Tool DB proof 现在要求 nativeProtocolReady=truesummary detail 显示 native=ready
  • tests/host/verify_project_release_gate.sh:发布门禁中的 native probe 阶段改为启用 ENABLE_TOOL_DB_RUNTIME_PROBE=1ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1,不启用 User M promotion。

最终验证输出摘要

ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 ENABLE_TOOL_DB_RUNTIME_PROBE=1 ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 ./tests/native/verify_native_probes.sh
native probe validation complete

./tests/ui/node/verify_ui_node_smokes.sh
ui_node_smokes=ok

./tests/host/verify_project_release_gate.sh
project_release_gate=ok

SKIP_INTERP_BUILD=1 ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0

git diff --check: ok

关键产物状态

wasm-port/build/native/native-runtime-probe-summary.tsv

  • L4-USER-M-PROCESS: ready_disabled_by_default,仍需显式 ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 且当前不允许 promotion。
  • L4-TOOL-DB: runtime_protocol_probe_passedpromotion_allowed=0
  • L4-PYTHON-REMAP: runtime_lifecycle_probe_passedpromotion_allowed=0

wasm-port/build/project-release-readiness.json

  • ready=true
  • toolDbProcessProofSummary.nativeProtocolReady=true
  • pythonRemapRuntimeProofSummary.nativeLifecycleReady=true

结论

Tool DB 后续运行时边界已从设计/浏览器 proof 提升为 release gate 内的原生 DB_PROGRAM 协议 proofPython Remap 原生 lifecycle proof 保持在 gate 内User M 外部进程仍作为明确 native blocker不自动启用执行或 promotion。sim-config inventory 仍稳定为 29/29/130/0

2026-07-10 00:01 EDT 后续 Tool DB 晋级门禁闭合证据

本轮目标

继续完成后续功能:解决普通 sim-config inventory 重跑会覆盖 Tool DB opt-in native runtime proof 的问题,并把已有 Tool DB SDK/WASM/OPFS/Browser 证明链反映到 runtime boundary promotion readiness 中,但继续保持默认禁用、promotion_allowed=0 和人工晋级锁。

修复摘要

  • tests/wasm/node/verify_sim_configs_inventory_wasm.sh:增加 Tool DB native stdout 证明保留逻辑。普通 inventory 刷新 native probes 时,如果已观察到 tool_db_runtime_probe_status=runtime_protocol_probe_passedtool_db_protocol_version=v2.1、put/load/unload/persistence 状态均 OK则自动带上 ENABLE_TOOL_DB_RUNTIME_PROBE=1 重新生成 native summary避免把 Tool DB pass 证据回退成 ready_disabled_by_default
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjs:允许 Tool DB runtime probe gate 在 native protocol probe 已通过后记录 native_protocol_probe_passed_waiting_for_node_browser_proof,并保留 python3_and_tool_table_fallback_not_sufficient 说明,防止把 Python/tbl fallback 误当作 LinuxCNC DB_PROGRAM v2.1 协议证明。
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjs:同步 runtime probe gate/native summary 对齐规则,允许 native summary 的 runtime_protocol_probe_passed 与 gate 的 native_protocol_probe_passed... 状态兼容。
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjs:新增共享判定,把 L4-TOOL-DBnative_pass_ready=1native_evidence_ready=1 时视为 Node/Browser proof chain completepromotion_readyexecution_enabledpromotion_allowed 仍全部保持 0,阻断原因转为 promotion_lock_active_manual_review_required

最终验证输出摘要

SKIP_INTERP_BUILD=1 ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0
sim_configs_wasm_node_inventory=ok

./tests/host/verify_project_release_gate.sh
tool_db_process_port_sdk=ok
tool_db_store_opfs=ok
tool_db_process_port_wasm=ok
browser_tool_db_process_smoke=ok
tool_db_process_proof=ok
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok

git diff --check: ok

关键产物状态

wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-readiness.tsv

  • L4-TOOL-DB: current_probe_status=runtime_protocol_probe_passed
  • native_pass_ready=1
  • native_evidence_ready=1
  • node_inventory_gate_complete=1
  • browser_smoke_gate_complete=1
  • promotion_lock_active=1
  • manual_lock_update_required=1
  • promotion_ready=0
  • execution_enabled=0
  • promotion_allowed=0
  • blocking_reason=promotion_lock_active_manual_review_required

wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv

  • L4-TOOL-DB: blocker 只剩 promotion_lock_active,manual_lock_update_required

结论

Tool DB 后续 proof chain 已闭合到 runtime boundary readinessNative DB_PROGRAM v2.1 协议、Node/WASM、OPFS 和 Browser proof 均被 release gate 验收并反映到晋级门禁;普通 inventory 重跑不会再丢失 Tool DB native pass 证据。当前仍不自动 promotion必须人工复核并更新 promotion lock 后才能进一步放开。

2026-07-10 00:39 EDT 后续 User M 与全边界人工锁收口证据

本轮目标

继续完成剩余后续功能:把 axis/vismach/millturn/example.ngc 的 User M M128/M129 LinuxCNC-owned runtime state proof 做到 native pass并让三类运行时边界的 readiness/recommendation 都从“实现 probe”推进到“proof chain 完成,等待人工 promotion lock 复核”。

修复摘要

  • tests/native/probe_millturn_user_m_runtime.sh:改为生成临时 headless LinuxCNC INI 和 display 测试脚本,过滤 millturn_cmds.hal 中 headless 会阻塞的 hal_manualtoolchange Tk 组件,保留 LinuxCNC task/HAL runtime。
  • User M probe 在 headless LinuxCNC 中先 reset/on、home 4 个 joints再用 MDI M68 E3 Q0/Q1 切换 kinstype并以明确 INI_FILE_NAME=<headless.ini> 调用 vendored M128/M129 Tcl 脚本,验证 kinstype.is-*ini.[xyz].min_limit/max_limitini.[xyz].max_acceleration
  • User M probe 增加 stale /tmp/linuxcnc.lock 清理和 timeout --foreground,避免 LinuxCNC wrapper 的 Tk 错误窗口阻塞 CI。
  • tests/wasm/node/verify_sim_configs_inventory_wasm.sh:普通 inventory native probe 刷新会保留 User M runtime_state_probe_passed stdout 证明,和 Tool DB/Python 一样不回退为 disabled。
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjsUser M 在 native pass/evidence ready 后消费已有 SDK/UI/browser virtual HAL 状态边界 proofNode/Browser gate 标记完成;三类边界都保持 promotion_ready=0execution_enabled=0promotion_allowed=0
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjsremaining skipped-main audit 区分 not_promotable_runtime_proof_incompletenot_promotable_manual_promotion_lock_active
  • tests/wasm/node/verify_sim_configs_inventory_wasm.mjsnext-boundary-recommendations.tsv 根据 readiness 输出 manual_promotion_lock_review,不再推荐已完成的 native probe。
  • tests/host/verify_project_release_gate.shnative opt-in 阶段加入 ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1,并在 native probes 后重刷 sim-config inventory再写 release readiness artifact。

最终验证输出摘要

ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 tests/native/probe_millturn_user_m_runtime.sh
millturn_user_m_M128_runtime_state_ok=1
millturn_user_m_M129_runtime_state_ok=1
millturn_user_m_runtime_probe_status=runtime_state_probe_passed

ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 ENABLE_TOOL_DB_RUNTIME_PROBE=1 ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 ./tests/native/verify_native_probes.sh
native probe validation complete

SKIP_INTERP_BUILD=1 ./tests/wasm/node/verify_sim_configs_inventory_wasm.sh
sim_configs_wasm_node_inventory_executed=29
sim_configs_wasm_node_inventory_passed=29
sim_configs_wasm_node_inventory_skipped=130
sim_configs_wasm_node_inventory_unexpected_fail=0
sim_configs_wasm_node_inventory=ok

./tests/host/verify_project_release_gate.sh
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok

git diff --check: ok

关键产物状态

wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-readiness.tsv

  • L4-USER-M-PROCESS: runtime_state_probe_passednative/node/browser proof gate 全部为 1,只剩 promotion_lock_active=1manual_lock_update_required=1
  • L4-TOOL-DB: runtime_protocol_probe_passednative/node/browser proof gate 全部为 1,只剩人工锁。
  • L4-PYTHON-REMAP: runtime_lifecycle_probe_passednative/node/browser proof gate 全部为 1,只剩人工锁。

wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.tsv

  • 三条 runtime boundary recommendation 均为 manual_promotion_lock_review
  • execution_enabled=0promotion_allowed=0 保持不变。

结论

User M、Tool DB、Python Remap 三类后续运行时边界的 Native/Node/Browser proof chain 已全部闭合到 release gate 和 inventory readiness。当前没有继续推荐实现 probe 的技术 blocker剩余状态被明确收敛为人工 promotion lock 复核,不会自动启用执行或自动提升 inventory。