项目接续文件:L4-PYTHON-REMAP 53 rows 批量 PASS Phase 2.5 执行规范 生成时间:2026-06-19 CST 本文件接替 `text27.txt`。 目标: ```text 继续推进“53 个 Python-remap inventory rows 批量提升为 PASS”的 proof 链路。 本轮不是 baseline promotion。 本轮只做 Phase 2.5: - 固化 53 rows 最终批量 PASS 的方法和步骤; - 让 `python-remap-row-runtime-proof.tsv` 至少对第一批小 family 产生真实 row runtime transcript; - 优先让 stop-lookahead 首行从 pending 进入 transcript-ready; - 继续保持 inventory baseline 不变:PASS=29 / SKIP=130 / L4-PYTHON-REMAP=53。 ``` 一、53 rows 批量 PASS 的完整方法 ```text Phase 1:machine-readable bulk promotion plan - 生成 `python-remap-bulk-promotion-plan.tsv`; - 1:1 覆盖 53 个 `L4-PYTHON-REMAP` rows; - 明确每行缺少的 runtime/native/node/browser proof; - 保持 execution_enabled=0、promotion_allowed=0。 Phase 2:row-aware runtime proof substrate - SDK 暴露 `createLinuxCncPythonRemapRowRuntimePort()`; - 生成 `python-remap-row-runtime-proof.tsv`; - 每行表达 module staging、TOPLEVEL、PATH_PREPEND、callable/prolog/epilog、NGC asset、interpreter state、canonical event 的 proof target; - 仍不把 fake adapter 或 Python import-only 当 PASS。 Phase 2.5:第一批真实 row runtime transcript - 对小 family 先落真实 transcript,而不是全量一次性 promotion; - 第一批顺序: 1. `axis/remap/stop-lookahead/nc_files` 2. `axis/remap/cycle/nc_files` 3. `axis/remap/getting-started/nc_files` - transcript 必须来自 LinuxCNC-owned Python runtime boundary 或 native lifecycle stdout; - transcript ready 只解除 `row_runtime_adapter_execution` blocker; - 不解除 native/node/browser/manual promotion blockers。 Phase 3:row native pass proof - 逐 row 证明 native runtime pass; - 对齐 `python-remap-row-runtime-proof.tsv` 的 proof targets; - native proof 不能只证明 stop-lookahead lifecycle 后推断 53 rows 全 PASS。 Phase 4:WASM Node pass proof - 逐 row 证明 WASM Node runtime bridge 可执行同等 row contract; - 保留 LinuxCNC-owned semantics,禁止 JS 重写 CNC 语义。 Phase 5:Browser pass proof - 逐 row 证明 browser worker / UI workflow 与 Node proof 对齐; - browser proof 必须在 Node proof 后接受。 Phase 6:manual promotion lock review - 只有 row_runtime、native、wasm_node、browser proof 全部 ready 后,才允许解除 manual lock; - 最终才可把 53 rows 从 `L4-PYTHON-REMAP` 批量提升为 PASS; - 目标 baseline 才能从 PASS=29 / SKIP=130 变为 PASS=82 / SKIP=77。 ``` 二、本轮 Phase 2.5 执行步骤 ```text 1. 先确认 native Python lifecycle stdout 是否存在: `wasm-port/build/native/python-remap-runtime/python_lifecycle.stdout.log` 2. 确认 native runtime probe summary 是否存在并包含: `wasm-port/build/native/native-runtime-probe-summary.tsv` `L4-PYTHON-REMAP python_runtime axis/remap/stop-lookahead/nc_files` `runtime_lifecycle_probe_passed` 3. 运行 inventory verifier: `SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh` 4. 验收 `python-remap-row-runtime-proof.tsv`: - rows=53; - `axis/remap/stop-lookahead/nc_files/examples.ngc` - `python_modules_staged=1` - `toplevel_executed=1` - `path_prepend_applied=1` - `interpreter_state_binding_ready=1` - `canonical_events_ready=1` - `row_runtime_transcript_ready=1` - `proof_status=native_lifecycle_stdout_row_runtime_transcript_ready` - 其他 rows 可继续 pending; - 所有 rows 仍保持: - `native_pass_ready=0` - `wasm_node_pass_ready=0` - `browser_pass_ready=0` - `execution_enabled=0` 5. 如果 stop-lookahead 仍 pending: - 优先修正 verifier 对 native stdout / native summary 的读取和验收; - 不伪造 row transcript; - 不把 build artifact 手工改成 ready。 6. stop-lookahead 通过后,下一轮再扩展 cycle / getting-started: - 增加 row adapter 对 callable/prolog/epilog lookup 的真实 proof; - 增加 NGC remap asset staged proof; - 对 NGC-only subpaths 明确 reject standalone proof。 ``` 三、本轮禁止事项 ```text - 不改 PASS/SKIP baseline; - 不直接把 53 rows 改 PASS; - 不删除 `L4-PYTHON-REMAP` skip reason; - 不把 stop-lookahead lifecycle proof 解释成 53 rows 全量 pass; - 不让 fake/browser worker 充当 PASS 证据; - 不把 Python import success 当 row execution proof; - 不把 NGC-only subpath 当 standalone main program; - 不解除 `manual_promotion_lock`; - 不手工改 `summary.tsv` / `skip-summary.tsv` 数字。 ``` 四、本轮应关注文件 ```text wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh wasm-port/runtime/sdk/src/python-remap-runtime-port.js wasm-port/tests/sdk/node/verify_python_remap_runtime_port.mjs wasm-port/build/wasm/sim-configs-inventory/python-remap-row-runtime-proof.tsv text28.txt ``` 五、本轮验收命令 ```bash git diff --check wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh ``` 六、完成后写入本文件的结果 ```text 记录: - stop-lookahead row runtime transcript 是否 ready; - 53 rows row_runtime_proof 状态分布; - inventory baseline 是否保持不变; - 已通过和未通过的验证命令; - 下一轮 cycle / getting-started 的具体入口。 ``` 七、2026-06-19 Phase 2.5 执行结果 本轮已完成 stop-lookahead 首行的真实 row runtime transcript 接入,不做 baseline promotion。 代码修正: ```text wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs - 修正 `python-remap-row-runtime-proof.tsv` 生成列映射; - `generator_lifecycle_ready` 跟随 stop-lookahead native lifecycle stdout proof; - `ngc_only_subpaths_not_standalone` 回到正确列位; - 调用 `pythonRemapRowRuntimeProofRows()` / `verifyPythonRemapRowRuntimeProofRows()` 时传入 `nativeRuntimeProbeSourceRecords`; - row proof 现在能读取 `wasm-port/build/native/native-runtime-probe-summary.tsv` 和对应 stdout log。 ``` 新增接续文件: ```text text28.txt ``` artifact 当前状态: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-row-runtime-proof.tsv rows=53 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready 1 proof_status=pending_row_runtime_adapter_execution 52 ``` stop-lookahead 首行状态: ```text path=axis/remap/stop-lookahead/nc_files/examples.ngc python_modules_staged=1 toplevel_executed=1 path_prepend_applied=1 generator_lifecycle_ready=1 interpreter_state_binding_ready=1 canonical_events_ready=1 row_runtime_transcript_ready=1 native_pass_ready=0 wasm_node_pass_ready=0 browser_pass_ready=0 execution_enabled=0 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready ``` 仍未解除的 blockers: ```text browser_row_pass hal_process_boundary manual_promotion_lock native_row_pass python_runtime row_runtime_proof wasm_node_row_pass ``` inventory baseline 保持不变: ```text 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_skip_L4_PYTHON_REMAP=53 sim_configs_wasm_node_inventory_unexpected_fail=0 ``` 本轮已通过验证: ```bash git diff --check wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh ``` 验证中的已知非失败 stderr: ```text /work/sim-inventory/axis/db_demo/base.inc: error: Cannot open ini-file (errno=44 (No such file or directory)) ``` 下一轮建议: ```text 继续 Phase 2.5,不进入 baseline promotion。 下一轮优先扩展: 1. `axis/remap/cycle/nc_files` 2. `axis/remap/getting-started/nc_files` 具体入口: - 为 row-aware runtime adapter 增加 callable/prolog/epilog lookup transcript; - 对 cycle 行证明: - configured module import; - Python remap callable lookup; - stdglue prolog / epilog lookup; - generator lifecycle; - NGC remap asset staged; - interpreter state / canonical event bridge; - 对 getting-started 行证明同等 row contract; - 保持 native_pass_ready / wasm_node_pass_ready / browser_pass_ready / execution_enabled 全部为 0。 ``` 八、2026-06-19 Phase 2.5 cycle / getting-started 执行结果 本轮继续 Phase 2.5,完成第一批小 family 的 row runtime transcript 扩展,不做 baseline promotion。 代码修正: ```text wasm-port/tests/native/probe_python_remap_runtime.sh - 保留 stop-lookahead 旧 lifecycle stdout keys; - 新增 row-specific transcript keys: - axis/remap/stop-lookahead/nc_files/examples.ngc - axis/remap/cycle/nc_files/examples.ngc - axis/remap/getting-started/nc_files/examples.ngc - 对 cycle 真实证明: - INI [PYTHON] PATH_PREPEND / TOPLEVEL; - stdglue、remap、toplevel module staged; - g842 callable lookup and invoke; - cycle_prolog / cycle_epilog lookup; - g843.ngc remap asset staged; - interpreter state / canonical event bridge ready。 - 对 getting-started 真实证明: - INI [PYTHON] PATH_PREPEND / TOPLEVEL; - oword、remap、toplevel、util module staged; - m400.ngc / m410.ngc remap assets staged; - NGC-only subpaths rejected as standalone main; - interpreter state / canonical event bridge ready。 wasm-port/tools/build_native_probes.sh - native probe cache fingerprint 加入 axis/remap/getting-started source tree。 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs - row proof 改为读取 native Python runtime stdout 的 row-specific keys; - 允许 cycle/getting-started 从 native lifecycle stdout 进入 row runtime transcript ready; - 仍保持 native_pass_ready / wasm_node_pass_ready / browser_pass_ready / execution_enabled 全部为 0; - 仍不解除 manual promotion lock。 ``` artifact 当前状态: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-row-runtime-proof.tsv rows=53 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready 3 proof_status=pending_row_runtime_adapter_execution 50 ``` 本轮新增 ready rows: ```text axis/remap/cycle/nc_files/examples.ngc python_modules_staged=1 python_remap_functions_bound=1 prolog_functions_bound=1 epilog_functions_bound=1 generator_lifecycle_ready=1 ngc_remap_assets_staged=1 ngc_only_subpaths_not_standalone=1 row_runtime_transcript_ready=1 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready axis/remap/getting-started/nc_files/examples.ngc python_modules_staged=1 python_remap_functions_bound=0 prolog_functions_bound=0 epilog_functions_bound=0 generator_lifecycle_ready=0 ngc_remap_assets_staged=1 ngc_only_subpaths_not_standalone=1 row_runtime_transcript_ready=1 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready ``` inventory baseline 保持不变: ```text 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_skip_L4_PYTHON_REMAP=53 sim_configs_wasm_node_inventory_unexpected_fail=0 ``` 本轮已通过验证: ```bash git diff --check ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.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 继续 Phase 2.5,不进入 baseline promotion。 下一轮可以选择: 1. 扩展 axis/laser family 的 row-specific transcript; 2. 或扩展 vismach/5axis table-rotary_spindle-rotary-nutating family; 3. 或开始设计 Phase 3 row native pass proof contract。 无论选择哪条,仍保持: - PASS=29 / SKIP=130 / L4-PYTHON-REMAP=53; - native_pass_ready=0; - wasm_node_pass_ready=0; - browser_pass_ready=0; - execution_enabled=0; - manual_promotion_lock active。 ``` 九、2026-06-19 批量 PASS 请求 gate 复核与 axis/laser 推进结果 本轮按“text28.txt 大建议”复核 53 个 Python-remap inventory rows 是否可以批量提升为 PASS。 结论: ```text 不能直接批量 PASS。 原因: - 53 rows 中只有 3 rows 已有 row_runtime_transcript_ready; - 50 rows 仍是 pending_row_runtime_adapter_execution; - native_pass_ready=0 53; - wasm_node_pass_ready=0 53; - browser_pass_ready=0 53; - execution_enabled=0 53; - manual_promotion_lock 仍然 active; - Phase 3 / Phase 4 / Phase 5 / Phase 6 尚未完成。 ``` 因此本轮没有把 `L4-PYTHON-REMAP` rows 改 PASS,没有改 baseline 数字。 本轮可安全推进的内容: ```text 继续 Phase 2.5,扩展 axis/laser family 的 row-specific native lifecycle stdout transcript。 ``` 代码修正: ```text wasm-port/tests/native/probe_python_remap_runtime.sh - native runtime probe 增加 axis/laser source prerequisites; - 增加 pyhal / raster stubs,避免依赖 host HAL shared library; - 支持 [PYTHON] PATH_APPEND-only config; - 新增 axis/laser 3 rows 的 row-specific transcript keys; - 对 rasterBegin / rasterStart / rasterStop generator lifecycle 证明 first yield; - 对 rasterData callable 返回 INTERP_OK 证明; - 保持 HAL/UI blockers 不解除。 ``` artifact 当前状态: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-row-runtime-proof.tsv rows=53 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready 6 proof_status=pending_row_runtime_adapter_execution 47 native_pass_ready=0 53 wasm_node_pass_ready=0 53 browser_pass_ready=0 53 execution_enabled=0 53 ``` 本轮新增 ready rows: ```text axis/laser/raster_test.ngc axis/laser/vector_test.ngc axis/laser/vector_test2.ngc ``` 新增 ready rows 状态: ```text python_modules_staged=1 python_remap_functions_bound=1 generator_lifecycle_ready=1 row_runtime_transcript_ready=1 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready ``` inventory baseline 保持不变: ```text 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_skip_L4_PYTHON_REMAP=53 sim_configs_wasm_node_inventory_unexpected_fail=0 ``` 本轮已通过验证: ```bash git diff --check ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh wasm-port/tests/native/verify_native_probes.sh ``` 下一轮建议: ```text 继续 Phase 2.5,不进入 baseline promotion。 优先扩展剩余 row runtime transcript: 1. axis/remap/extend-builtins/nc_files 2. axis/remap/manual-toolchange-with-tool-length-switch/nc_files 3. axis/remap/rack-toolchange/nc_files 4. axis/vismach/VMC_toolchange 5. gmoccapy/lathe_configs 6. gmoccapy/macros 7. gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples 8. axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos 只有 53/53 rows 同时满足: - row_runtime_transcript_ready=1; - native_pass_ready=1; - wasm_node_pass_ready=1; - browser_pass_ready=1; - execution_enabled=1; - manual_promotion_lock reviewed/unlocked; 才允许进入真正 PASS=82 / SKIP=77 的 baseline promotion。 ``` 十、2026-06-19 批量 PASS 请求 gate 复核与 axis/remap toolchange 推进结果 本轮再次按“text28.txt”的 promotion gate 复核 53 个 Python-remap inventory rows 是否可以批量提升为 PASS。 结论: ```text 仍不能直接批量 PASS。 原因: - 53 rows 中只有 9 rows 已有 row_runtime_transcript_ready; - 44 rows 仍是 pending_row_runtime_adapter_execution; - native_pass_ready=0 53; - wasm_node_pass_ready=0 53; - browser_pass_ready=0 53; - execution_enabled=0 53; - manual_promotion_lock 仍然 active; - Phase 3 / Phase 4 / Phase 5 / Phase 6 尚未完成。 ``` 因此本轮没有把 `L4-PYTHON-REMAP` rows 改 PASS,没有改 baseline 数字。 本轮可安全推进的内容: ```text 继续 Phase 2.5,扩展 axis/remap toolchange family 的 row-specific native lifecycle stdout transcript。 ``` 代码修正: ```text wasm-port/tests/native/probe_python_remap_runtime.sh - native runtime probe 增加 extend-builtins、manual-toolchange-with-tool-length-switch、rack-toolchange source prerequisites; - 对 stdglue remap family 增加 prolog / epilog callable lookup; - 对 change_epilog generator 生命周期证明 first yield 为 LinuxCNC INTERP_EXECUTE_FINISH; - 对 extend-builtins 证明 11 个 remap NGC assets staged,并保持 NGC-only subpaths 非 standalone; - 对 manual/rack toolchange 证明 M6 remap NGC asset staged; - 保持 HAL/UI/native/node/browser/manual promotion blockers 不解除。 wasm-port/tools/build_native_probes.sh - native probe cache fingerprint 加入 extend-builtins、manual-toolchange-with-tool-length-switch、rack-toolchange source tree。 ``` artifact 当前状态: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-row-runtime-proof.tsv rows=53 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready 9 proof_status=pending_row_runtime_adapter_execution 44 native_pass_ready=0 53 wasm_node_pass_ready=0 53 browser_pass_ready=0 53 execution_enabled=0 53 ``` 本轮新增 ready rows: ```text axis/remap/extend-builtins/nc_files/examples.ngc axis/remap/manual-toolchange-with-tool-length-switch/nc_files/tcdemo.ngc axis/remap/rack-toolchange/nc_files/tcdemo.ngc ``` 新增 ready rows 状态: ```text python_modules_staged=1 prolog_functions_bound=1 epilog_functions_bound=1 generator_lifecycle_ready=1 ngc_remap_assets_staged=1 row_runtime_transcript_ready=1 proof_status=native_lifecycle_stdout_row_runtime_transcript_ready ``` inventory baseline 保持不变: ```text 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_skip_L4_PYTHON_REMAP=53 sim_configs_wasm_node_inventory_unexpected_fail=0 ``` 本轮已通过验证: ```bash git diff --check ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh ``` 验证中的已知非失败 stderr: ```text /work/sim-inventory/axis/db_demo/base.inc: error: Cannot open ini-file (errno=44 (No such file or directory)) ``` 下一轮建议: ```text 继续 Phase 2.5,不进入 baseline promotion。 优先扩展剩余 row runtime transcript: 1. axis/vismach/VMC_toolchange 2. gmoccapy/lathe_configs 3. gmoccapy/macros 4. gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples 5. axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos 只有 53/53 rows 同时满足: - row_runtime_transcript_ready=1; - native_pass_ready=1; - wasm_node_pass_ready=1; - browser_pass_ready=1; - execution_enabled=1; - manual_promotion_lock reviewed/unlocked; 才允许进入真正 PASS=82 / SKIP=77 的 baseline promotion。 ```