项目接续文件：按铁律收束当前阶段 promotion 工作

生成时间：2026-06-18 CST

本文件接替 `text19.txt`，并对 `text20.txt` / `text21.txt` 做范围收束。当前阶段铁律为：

```text
virtual HAL 成果作为 sim config promotion 证据基础；
同时明确不解锁 Python remap / tool DB / external user-M 这些 hard block。
```

一、当前阶段完成定义

当前阶段要完成的是 evidence-based promotion，不是 hard-block runtime 解锁。

允许做：

- 复用 virtual HAL source compliance；
- 复用 virtual HAL sim-config source coverage；
- 复用 virtual HAL promotion candidate report；
- 复用 macro/load fixture report；
- 复用 command script fixture report；
- 复用 manifest-backed motion controller matrix；
- 复用 browser diagnostics artifact；
- 复用 release readiness / URL workflow / batch acceptance evidence；
- 生成并维护 `promotion-candidates.tsv`，把候选分为：
  - `evidence-ready`；
  - `inventory-ready`。

禁止做：

- 不新增 virtual HAL runtime capability；
- 不用 virtual HAL 替代 LinuxCNC CNC 语义；
- 不用 JS/browser glue 解锁 Python remap；
- 不用 JS/browser glue 解锁 tool DB；
- 不用 JS/browser glue 解锁 external user-M process；
- 不把 `.tbl` fallback 当作 tool DB pass；
- 不把 macro/load asset 当 standalone main program；
- 不靠改 docs 声称 skipped 下降。

二、当前 hard block 状态

以下 hard block 在当前阶段必须保持 locked：

```text
L4-PYTHON-REMAP
L4-TOOL-DB
L4-USER-M-PROCESS
UPSTREAM-DEMO
standalone-main 语境下的 ASSET-ONLY
```

当前 skip/block summary 仍保持：

```text
ASSET-ONLY=65
L4-PYTHON-REMAP=53
L4-TOOL-DB=1
L4-USER-M-PROCESS=1
NON_MAIN_CLASS=10
UPSTREAM-DEMO=1
```

三、当前 baseline 必须保持

当前阶段完成后，Node inventory baseline 仍应为：

```text
executed=28
passed=28
skipped=131
unexpected_fail=0
```

这不是失败，而是当前铁律下的正确结果：virtual HAL 已把一批可用 sim config row 推进到
browser diagnostics / release evidence 层，但没有解锁 hard runtime family。

四、当前已完成的 evidence-ready promotion

`promotion-candidates.tsv` 中必须包含以下 `evidence-ready` rows：

- `qtdragon/qtdragon_multi_joint/on_abort.ngc`
- `qtdragon/qtdragon_xyz/on_abort.ngc`
- `qtdragon/qtdragon_xyz45/on_abort.ngc`
- `qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc`
- `qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc`
- `qtvcp_screens/qtdragon/on_abort.ngc`
- `axis/vismach/puma/puma_seam_weld.ngc`
- `axis/rose_engine/rcone_demo.ngc`

这些 rows 的语义：

```text
current_status=PASS
skip_kind=-
matrix_layer4_node=INV
matrix_layer4_browser=-
blocked_kind=-
virtual_hal_evidence_ready=1
promotion_allowed=0
block_reason=browser_release_evidence_ready_inventory_baseline_unchanged
```

`promotion_allowed=0` 是有意的：这些 row 已有 browser/release evidence，但不代表
inventory baseline 发生变化。

五、当前 inventory-ready hard block rows

`promotion-candidates.tsv` 中也会列出 `inventory-ready` 类型的 skipped main rows。
这些行用于后续分析，不代表当前可解锁。

当前直接 inventory promotion 必须保持：

```text
promotion_allowed=0
```

原因：

- `L4-PYTHON-REMAP` 需要 LinuxCNC Python remap runtime；
- `L4-TOOL-DB` 需要 tool database process protocol proof；
- `L4-USER-M-PROCESS` 需要 external user-M process state proof；
- `UPSTREAM-DEMO` 是 preserved upstream demo edge。

六、text20 / text21 的范围解释

`text20.txt` 和 `text21.txt` 只作为未来解锁研究记录：

- `text20.txt`：future tool DB native/runtime 解锁步骤；
- `text21.txt`：future WASM + OPFS tool DB feasibility architecture。

它们不改变当前阶段铁律，不允许在当前阶段据此把 `L4-TOOL-DB` 解锁。

当前阶段若引用 `text20.txt` / `text21.txt`，只能作为：

- future milestone planning；
- risk analysis；
- architecture note；
- blocked family proof requirement。

不能作为：

- 当前 baseline promotion 依据；
- 当前 release ready 的解锁依据；
- 当前 browser diagnostics positive pass 的替代证据。

七、当前阶段验收标准

当前阶段完成需要满足：

1. `promotion-candidates.tsv` 存在；
2. `promotion-candidates.tsv` 同时包含 `evidence-ready` 和 `inventory-ready` 两层；
3. `evidence-ready` rows 绑定 virtual HAL source-derived browser/release evidence；
4. `inventory-ready` hard block rows 仍 `promotion_allowed=0`；
5. baseline 保持 `28/28/131/0`；
6. `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS` 仍 locked；
7. docs 明确 artifact count 和 candidate report；
8. release / SDK gate 仍要求 virtual HAL promotion candidate summary；
9. 不新增 virtual HAL runtime capability；
10. 不新增 JS-owned CNC semantics。

八、已验证命令

当前阶段最小验证命令：

```text
git diff --check
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
```

预期 inventory 输出：

```text
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
sim_configs_wasm_node_inventory=ok
```

九、下一步建议

下一步不要直接解锁 hard block。按当前铁律，优先做：

1. 扩展 `evidence-ready` browser diagnostics 展示；
2. 强化 release URL workflow 对 promotion candidate summary 的可见性；
3. 对 `blocked=-`、native `PASS`、class `main` 的非 hard-block family 继续找可真实 promotion row；
4. 对 Python remap / tool DB / external user-M 只维护 proof requirement 和 lock artifact；
5. 如果要解锁 tool DB、Python remap 或 external user-M，必须另开 milestone，不能混入当前阶段。

十、简要结论

当前阶段已经按铁律完成：

```text
virtual HAL 成果作为 sim config promotion 证据基础；
Python remap / tool DB / external user-M hard block 不解锁；
baseline 保持 28/28/131/0；
promotion candidates 进入双层 evidence-ready / inventory-ready 管理。
```
