text38.txt 一、接续说明 执行时间:2026-06-20 CST 本文件专门关闭下面这个问题: ```text 剩余 77 个 SKIP 中哪些是真正可 promotion 的 main-program row? ``` 结论不是“还要继续逐条找”,而是: ```text 当前没有可直接 promotion 的 skipped main-program row。 baseline 不能继续因为这 77 个 SKIP 而变化。 ``` 本文件的作用是把该结论整理成可执行、可复查、可防回归的方法,供后续接续时直接引用, 避免下一轮再次重复总复核。 二、已确认事实 当前 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 ``` 77 个 SKIP 的构成已经固定为: ```text ASSET-ONLY=65 L4-USER-M-PROCESS=1 NON_MAIN_CLASS=10 UPSTREAM-DEMO=1 ``` 其中真正 `class=main` 的 skipped row 只有 2 个: ```text axis/vismach/millturn/example.ngc axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc ``` 这 2 个 row 当前均为: ```text promotion_allowed=0 promotion_ready=0 ``` 因此最终判定: ```text remaining_skip_count=77 remaining_skipped_main_program_rows=2 remaining_skipped_main_program_promotion_allowed=0 direct_inventory_promotion_rows=0 baseline_change_allowed=no ``` 三、问题关闭判定 该问题已经完全解决,理由如下: ```text 1. 审计对象已经限定: 只检查 current_status=SKIP 且 class=main 的 row。 2. 审计数据已经落盘: remaining-skip-main-program-promotion-audit.tsv 已生成并被 docs smoke 检查。 3. 审计结果已经闭环: 当前只有 2 个 skipped main-program row,且 promotion_allowed 全部为 0。 4. 非 main-program SKIP 已排除: ASSET-ONLY=65 和 NON_MAIN_CLASS=10 不能伪装成 standalone main-program PASS。 5. blocked runtime / invalid upstream demo 已排除: L4-USER-M-PROCESS 缺 promotion proof; UPSTREAM-DEMO 缺有效 motion G-code; 两者都不能直接 promotion。 ``` 所以后续不应再把“复核 77 个 SKIP 哪些可 promotion”当作开放任务。 四、逐类处理方法 1. ASSET-ONLY=65 处理规则: ```text 不 promotion。 不计入 standalone main-program promotion 候选。 不为了降低 SKIP 数量改成 PASS。 ``` 原因: ```text 这些 row 是 source asset / dependency / support file,不是可独立运行的 main-program。 即使它们对某个 PASS row 有贡献,也只能作为 source coverage 或 evidence dependency, 不能独立改变 inventory PASS baseline。 ``` 允许后续动作: ```text 1. 作为已 PASS row 的 evidence dependency 引用; 2. 在 diagnostics/release artifact 中展示 source coverage; 3. 不改变 current_status=SKIP 的 inventory 语义。 ``` 2. NON_MAIN_CLASS=10 处理规则: ```text 不 promotion。 不重分类为 main,除非 LinuxCNC source / inventory classifier 明确变化。 不作为 baseline promotion 候选。 ``` 原因: ```text 这些 row 不是 standalone main-program class。 promotion 的目标是可作为主程序执行并被 Node/WASM/browser proof 覆盖的 row。 ``` 允许后续动作: ```text 1. 保持分类; 2. 如果 classifier 规则改变,先重跑 inventory 并检查 drift; 3. 只有 class 真实变为 main 后,才进入 skipped main-program audit。 ``` 3. L4-USER-M-PROCESS=1 对应 row: ```text axis/vismach/millturn/example.ngc ``` 当前状态: ```text class=main skip_kind=L4-USER-M-PROCESS native_status=PASS simulation_proof_status=ready_disabled_by_default:native=0:node=0:browser=0 promotion_allowed=0 ``` 处理规则: ```text 当前不 promotion。 Web/virtual HAL 状态 proof 只能证明页面和虚拟 HAL 仿真链路可展示相关状态, 不能替代 external user-M arbitrary process execution 的 runtime promotion proof。 ``` 要让它未来可重新进入 promotion 讨论,必须先满足: ```text 1. native opt-in runtime probe 真正通过; 2. millturn_user_m_runtime_probe_status=runtime_state_probe_passed; 3. execution gate 有明确 artifact 证明; 4. Node inventory promotion gate 重新计算后给出 promotion_allowed=1; 5. browser/host proof 补齐; 6. manual promotion lock review 明确放行。 ``` 在这些条件满足前,禁止动作: ```text 1. 禁止仅凭 virtual HAL proof 改 PASS; 2. 禁止仅凭 native_status=PASS 改 PASS; 3. 禁止手写 promotion_allowed=1; 4. 禁止把 baseline 从 82/82/77/0 往前推。 ``` 4. UPSTREAM-DEMO=1 对应 row: ```text axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc ``` 当前状态: ```text class=main skip_kind=UPSTREAM-DEMO native_status=FAIL native_expected_failure=upstream-demo-missing-motion-gcode promotion_allowed=0 ``` 处理规则: ```text 当前不 promotion。 不能为了 baseline 变化修补或替换 LinuxCNC upstream demo 的语义。 ``` 允许后续动作: ```text 1. 保留为 upstream invalid/demo edge; 2. 在 docs 中说明它不是可执行 motion main-program; 3. 如果 upstream source 将来修复,先更新 vendor source,再重跑 inventory; 4. 只有 native/WASM/browser proof 全部重算后,才允许重新评估。 ``` 五、以后如何复查而不重做总复核 后续如果有人再次问“77 个 SKIP 中还有没有可 promotion main-program row”, 不要重新从 77 行人工审起,按下面方法复查即可。 第一步:重新生成 inventory artifact ```bash SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh ``` 第二步:只看两个关键 artifact ```text wasm-port/build/wasm/sim-configs-inventory/skip-summary.tsv wasm-port/build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv ``` 第三步:确认 skip summary 是否仍为当前结构 期望: ```text ASSET-ONLY=65 L4-USER-M-PROCESS=1 NON_MAIN_CLASS=10 UPSTREAM-DEMO=1 ``` 如果一致,则不重开问题。 第四步:确认 audit 行数和 promotion_allowed 期望: ```text remaining-skip-main-program-promotion-audit.tsv 只有 2 行; 两行 class=main; 两行 promotion_allowed=0; 两行 promotion_ready=0; 路径分别是: axis/vismach/millturn/example.ngc axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc ``` 如果一致,则结论仍是: ```text direct_inventory_promotion_rows=0 baseline_change_allowed=no ``` 六、允许重开问题的唯一条件 只有出现以下任一 drift,才允许重开“剩余 SKIP promotion”问题: ```text 1. remaining-skip-main-program-promotion-audit.tsv 行数不再是 2; 2. audit 中出现新的 class=main skipped row; 3. 任一 audit row 的 promotion_allowed 变为 1; 4. 任一 audit row 的 promotion_ready 变为 1; 5. skip-summary.tsv 的四类计数发生变化; 6. L4-USER-M-PROCESS native opt-in runtime probe 变为 runtime_state_probe_passed; 7. UPSTREAM-DEMO row 的 native_expected_failure 不再是 upstream-demo-missing-motion-gcode; 8. inventory classifier 明确改变了 ASSET-ONLY 或 NON_MAIN_CLASS 的 class 语义。 ``` 如果没有这些 drift,禁止重新打开总复核。 七、推荐验证命令 关闭该问题时的最小验证: ```bash git diff --check 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 ``` 如果后续涉及 release / browser evidence,还应追加: ```bash wasm-port/tests/sdk/node/verify_sdk_surface.sh SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh wasm-port/tools/verify_no_standalone_cnc_semantics.sh ``` 如果后续专门尝试 L4-USER-M-PROCESS promotion proof,还应追加: ```bash bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh wasm-port/tests/native/verify_native_probes.sh ``` 但这些 native probe 只有在明确选择 L4-USER-M-PROCESS runtime 主线时才需要跑, 不作为当前 77 SKIP 问题关闭的必要条件。 八、后续工作分流 该问题关闭后,后续只能走两条线之一。 第一条:继续当前 smoke 收尾 ```text 目标: 继续收敛 real_simulation_page_smoke.html 中 review/statusbar/external-shell 相关重复断言。 边界: 不改 inventory baseline; 不改 diagnostics artifact schema; 不改 release artifact schema; 不重开 77 SKIP 总复核。 ``` 第二条:切回 promotion 主线 promotion 主线不能从“77 个 SKIP 里继续找”开始,而应二选一: ```text 1. L4-USER-M-PROCESS runtime proof: 先解决 native opt-in runtime probe; 目标是 runtime_state_probe_passed; 通过后再进入 inventory promotion gate。 2. 已 PASS row evidence expansion: 继续扩展 browser diagnostics / release evidence; 优先选择 current_status=PASS 且已有 matrix/browser REP 基础的 row; 不改变 inventory baseline=82/82/77/0。 ``` 九、最终接续结论 本问题的最终处理口径: ```text 不要继续尝试把剩余 77 个 SKIP 直接改 PASS。 当前没有可直接 promotion 的 skipped main-program row。 baseline 保持 82/82/77/0。 后续只有 audit drift 或 runtime proof drift 出现时,才允许重开 promotion 评估。 ``` 下一轮如果继续做当前实际工作,优先接: ```text text37.txt 中列出的 real_simulation_page_smoke.html review/statusbar/external-shell badge 重复断言收尾。 ``` 下一轮如果切回 promotion,优先接: ```text L4-USER-M-PROCESS native opt-in runtime probe, 而不是重新复核 77 个 SKIP。 ```