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

551 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 05-验收证据
本文件记录可复验证据。所有命令必须写明工作目录、命令、关键输出、结论。截图、PDF、页面、job_id、report_id、日志文件路径也应记录在对应任务下。
## 证据等级
| 等级 | 证据类型 | 用途 |
| --- | --- | --- |
| P0 | LinuxCNC 上游源码、上游测试、`nc_files``configs/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 检查 | 只能补充,不单独证明核心语义 |
## 记录模板
```text
## YYYY-MM-DD HH:MM 时区 ACC-XXX 标题
### 验收对象
### 证据等级
### 命令或证据路径
### 实际输出摘要
### 结论
### 后续处理
```
## 2026-07-10 03:13 EDT ACC-023 继续复验与 User-M 审计修复证据
### 验收对象
`ACC-001``ACC-023` 的继续复验,重点覆盖 `configs/sim` WASM inventory、User-M 外部进程边界审计、真实浏览器和 host 聚合验收。
### 证据等级
P1-P5 综合证据vendor 同步、自研语义 guard、Native、WASM Node、OPFS、UI Node、真实浏览器、host 聚合和专项边界 proof。
### 命令或证据路径
工作目录:
```bash
cd /home/mes123456/cnc_wams/wasm-port
```
本轮实际执行命令:
```bash
./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
```
失败修复证据:
```text
首次失败: 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 通过
```
生成审计文件:
```text
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
```
### 实际输出摘要
```text
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-001``ACC-023` 的完成后复验。
### 证据等级
P1-P5 综合复验证据vendor 同步、自研语义 guard、Native、WASM Node、OPFS、UI Node、真实浏览器、host 聚合和专项补充验证。
### 命令或证据路径
工作目录:
```bash
cd /home/mes123456/cnc_wams/wasm-port
```
本轮实际执行命令:
```bash
./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
```
### 实际输出摘要
```text
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=0``ACC-001``ACC-023` 的完成/条件通过结论仍成立。
### 后续处理
保持 Python remap、User M 外部进程、硬件驱动、实时内核等条件边界,不把这些项宣称为无条件 full-process 支持。
## 必跑命令清单
发布前至少需要补齐以下命令证据:
```bash
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-001``ACC-023`
### 证据等级
P0-P5 综合证据LinuxCNC 上游基线、vendor 同步、Native probe、WASM Node、真实浏览器、OPFS/UI/Host 聚合。
### 命令或证据路径
工作目录:
```bash
cd /home/mes123456/cnc_wams/wasm-port
```
关键命令:
```bash
./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
```
### 实际输出摘要
```text
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-001``ACC-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-001``ACC-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.sh`validation cache 指纹加入 opt-in 环境变量,避免 default 与 opt-in native runtime summary 串状态。
- `verify_sim_configs_inventory_wasm.mjs`Python remap row proof 默认只作为证据,不提升 inventory只有显式 `ENABLE_PYTHON_REMAP_INVENTORY_PROMOTION=1` 才允许 promotion。
- Python remap WASM/browser proof改为幂等校验允许已有 proof artifact 重复运行,同时继续要求 `execution_enabled=0``manual_promotion_lock`
- `verify_python_remap_runtime_browser.sh`cleanup 对 Chrome profile 删除竞态增加重试。
- `verify_project_release_readiness_artifact.mjs`:同步当前 sim-config inventory artifact hash、promotion candidate 行数和 29/29/130/0 baseline。
### 最终验证输出摘要
```text
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=0`Python 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.sh`User 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=true`summary detail 显示 `native=ready`
- `tests/host/verify_project_release_gate.sh`:发布门禁中的 native probe 阶段改为启用 `ENABLE_TOOL_DB_RUNTIME_PROBE=1``ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1`,不启用 User M promotion。
### 最终验证输出摘要
```text
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_passed``promotion_allowed=0`
- `L4-PYTHON-REMAP`: `runtime_lifecycle_probe_passed``promotion_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_passed``tool_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-DB``native_pass_ready=1``native_evidence_ready=1` 时视为 Node/Browser proof chain complete`promotion_ready``execution_enabled``promotion_allowed` 仍全部保持 `0`,阻断原因转为 `promotion_lock_active_manual_review_required`
### 最终验证输出摘要
```text
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_limit``ini.[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.mjs`User M 在 native pass/evidence ready 后消费已有 SDK/UI/browser virtual HAL 状态边界 proofNode/Browser gate 标记完成;三类边界都保持 `promotion_ready=0``execution_enabled=0``promotion_allowed=0`
- `tests/wasm/node/verify_sim_configs_inventory_wasm.mjs`remaining skipped-main audit 区分 `not_promotable_runtime_proof_incomplete``not_promotable_manual_promotion_lock_active`
- `tests/wasm/node/verify_sim_configs_inventory_wasm.mjs``next-boundary-recommendations.tsv` 根据 readiness 输出 `manual_promotion_lock_review`,不再推荐已完成的 native probe。
- `tests/host/verify_project_release_gate.sh`native opt-in 阶段加入 `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1`,并在 native probes 后重刷 sim-config inventory再写 release readiness artifact。
### 最终验证输出摘要
```text
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_passed`native/node/browser proof gate 全部为 `1`,只剩 `promotion_lock_active=1``manual_lock_update_required=1`
- `L4-TOOL-DB`: `runtime_protocol_probe_passed`native/node/browser proof gate 全部为 `1`,只剩人工锁。
- `L4-PYTHON-REMAP`: `runtime_lifecycle_probe_passed`native/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=0``promotion_allowed=0` 保持不变。
### 结论
User M、Tool DB、Python Remap 三类后续运行时边界的 Native/Node/Browser proof chain 已全部闭合到 release gate 和 inventory readiness。当前没有继续推荐实现 probe 的技术 blocker剩余状态被明确收敛为人工 promotion lock 复核,不会自动启用执行或自动提升 inventory。