接续上一轮,按接续文件持续推进

结论:已完成剩余77个SKIP的promotion复核;仅2个main SKIP且promotion_allowed均为0,当前baseline保持82/82/77/0,并新增文档与docs smoke防止误promotion。
This commit is contained in:
2026-06-20 08:07:06 +08:00
parent 07869f5c69
commit c2e07518d3
5 changed files with 246 additions and 6 deletions

View File

@@ -1,15 +1,15 @@
# Project Completion Tracker
Last updated: 2026-06-16 CST
Last updated: 2026-06-20 CST
This file tracks the overall completion state of the LinuxCNC WASM/browser port.
Use it for project-level status and acceptance tracking. Use `text16.txt` for
Use it for project-level status and acceptance tracking. Use `text32.txt` for
turn-by-turn continuation notes and next-batch execution records.
## Current Status
- Active continuation file: `text16.txt`
- Latest completed batch: AXIS run summary
- Active continuation file: `text32.txt`
- Latest completed batch: remaining 77 SKIP promotion audit
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
- Working tree at tracker creation: clean
- Required policy: LinuxCNC remains the only CNC semantic source
@@ -32,7 +32,7 @@ The project is complete for the current scope when all of the following are true
- Host/runtime blocked families are explicitly documented and not falsely promoted.
- All required gates pass.
- Documentation explains what is supported, blocked, and how to verify it.
- `text16.txt` contains the current continuation record and the working tree is clean.
- `text32.txt` contains the current continuation record and the working tree is clean.
## Area Status
@@ -45,7 +45,7 @@ The project is complete for the current scope when all of the following are true
| Simulation test program library | Active | Built-in browser simulation programs live in `wasm-port/runtime/ui/simulation/programs/`, one module per program, exported through `programs/index.js`; `verify_real_simulation_programs.sh` checks directory-backed inventory, IDs, defaults, and playback contracts. |
| Vendor/source guard | Stable | `verify_vendor_sync.sh` and standalone semantic guard are required every batch. |
| Interpreter WASM smoke | Stable | `interp_wasm_node_smoke=ok`. |
| Sim config inventory | Stable with skips | `executed=28`, `passed=28`, `skipped=131`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. |
| Sim config inventory | Stable with skips | `executed=82`, `passed=82`, `skipped=77`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. The 2026-06-20 remaining-skip audit found 2 skipped main-program rows and 0 rows with `promotion_allowed=1`, so the baseline must not change without new LinuxCNC-owned native/Node/browser proof. |
| Native nc_files baseline | Stable | Last recorded Layer 1: `total 107`, `pass 101`, `expected_fail 6`, `unexpected_fail 0`. |
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
| OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers including `readMachineSessionReadiness()` and `createMachineSessionPersistenceSummary()`, the UI exposes `getMachineSessionPersistenceSummary()`, and `docs/opfs-session-persistence.md` defines the project-level release gate. |

150
text32.txt Normal file
View File

@@ -0,0 +1,150 @@
项目接续文件:剩余 77 个 SKIP promotion 复核完成
生成时间2026-06-20 CST
一、本轮完成内容
按上一轮 `text31.txt` 的要求,已重新生成并复核当前 sim-config
inventory artifact
```bash
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
```
当前结果:
```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
sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65
sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1
sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10
sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1
sim_configs_wasm_node_inventory=ok
```
二、77 个 SKIP 复核结论
`remaining-skip-main-program-promotion-audit.tsv` 中只有 2 个 class=main
的 SKIP
```text
axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc
skip_kind=UPSTREAM-DEMO
native_status=FAIL
native_expected_failure=upstream-demo-missing-motion-gcode
promotion_allowed=0
conclusion=保留 upstream demo edge不强行 PASS
axis/vismach/millturn/example.ngc
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
conclusion=Web virtual HAL 已有 M428/M429 -> M128/M129 状态 proof
但 external user-M arbitrary process execution 仍 disabled
不能作为 inventory promotion proof
```
其余 SKIP
```text
ASSET-ONLY=65
NON_MAIN_CLASS=10
```
这些不是 standalone browser main-program promotion 对象。
本轮最终结论:
```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
PROJECT_COMPLETION_TRACKER.md
wasm-port/docs/sim-config-coverage-promotion-analysis.md
wasm-port/docs/sim-configs-coverage-handoff.md
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs
text32.txt
```
新增 docs smoke 断言:
```text
1. skip-summary.tsv 仍是 ASSET-ONLY=65 / L4-USER-M-PROCESS=1 /
NON_MAIN_CLASS=10 / UPSTREAM-DEMO=1
2. remaining-skip-main-program-promotion-audit.tsv 只有 2 行;
3. 两行均 class=main
4. 两行均 promotion_allowed=0 且 promotion_ready=0
5. 路径必须是 millturn/example.ngc 和 incremental_repetition_g533.ngc。
```
四、已运行验证
```bash
git diff --check
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
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/ui/node/verify_real_simulation_programs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
```
结果:
```text
sim_configs_coverage_docs_node_smoke=ok
sim_configs_wasm_node_inventory=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_batch_acceptance_workflow_node_smoke=ok
real_simulation_programs_node_smoke=ok
browser_real_simulation_page_smoke=ok
standalone CNC semantics guard complete
```
五、下一步工作计划
不要继续尝试把 77 个 SKIP 直接改 PASS。当前没有可直接 promotion 的
remaining SKIP main-program row。
下一批应推进已经 PASS 的 row 的 browser diagnostics / release evidence
不改 inventory baseline。优先顺序
```text
1. 读取 evidence-expansion-candidates.tsv
2. 从已 PASS 且 matrix_layer4_browser=REP 的五轴/vismach row 中选一组;
3. 优先建议:
- axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc
- axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
- axis/vismach/melfa-sim/example.ngc
- axis/vismach/puma/puma_cube.ngc
4. 为首个候选补 browser diagnostics evidence不新增 JS CNC 语义;
5. 让 release artifact / real simulation diagnostics DOM 能显示该 evidence
6. 补 Node/browser smoke
7. 保持 inventory baseline=82/82/77/0。
```
推荐下一轮验证命令:
```bash
git diff --check
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
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
```

View File

@@ -26,6 +26,44 @@ as a blanket reason to reduce the skip baseline. The next useful promotions are
case promotions from Node inventory or representative coverage into browser,
diagnostics, and release evidence.
## 2026-06-20 Remaining Skip Promotion Audit
The generated audit for the remaining 77 skipped rows is:
```text
build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv
```
It contains only two skipped rows whose class is `main`:
| Path | Skip kind | Native status | Promotion allowed | Decision |
| --- | --- | --- | ---: | --- |
| `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc` | `UPSTREAM-DEMO` | `FAIL` with `upstream-demo-missing-motion-gcode` | 0 | Preserve as an upstream demo edge; do not force into PASS. |
| `axis/vismach/millturn/example.ngc` | `L4-USER-M-PROCESS` | `PASS` | 0 | Web virtual HAL proof exists for M428/M429 to M128/M129 transition state, but arbitrary external user-M process execution remains disabled and is not an inventory promotion proof. |
The remaining skipped rows are not direct main-program promotion targets:
```text
ASSET-ONLY=65
NON_MAIN_CLASS=10
```
The 2026-06-20 audit conclusion is therefore explicit:
```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
```
Future work should add browser diagnostics and release evidence for already
passing Node inventory or representative rows. It should not change the
inventory baseline unless a later patch supplies LinuxCNC-owned native proof,
Node/WASM proof, browser proof, and a manual promotion-lock update for the row
being promoted.
## What Virtual HAL Unlocks
The virtual HAL is now a source-derived Web simulation replacement for these

View File

@@ -63,6 +63,19 @@ incomplete user-M process native/inventory promotion proof, even though the
browser simulation state now includes a source-derived virtual HAL proof for
the `M429 -> M129` turn and `M428 -> M128` mill state transitions. The TWP
`incremental_repetition_g533.ngc` row remains preserved upstream demo evidence.
The 2026-06-20 re-audit confirmed that there are no directly promotable
remaining skipped main-program rows:
```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
```
The 65 `ASSET-ONLY` rows and 10 `NON_MAIN_CLASS` rows remain non-main evidence
targets, not standalone browser main programs.
SDK and workflow-overview release URL summaries expose the current
`evidence-ready` layer as dashboard fields: `evidence-ready-candidate-rows=8`,

View File

@@ -45,6 +45,11 @@ for (const phrase of [
"sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1",
"build/wasm/sim-configs-inventory/skip-summary.tsv",
"build/wasm/sim-configs-inventory/blocked-dependency-summary.tsv",
"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",
"verify_no_standalone_cnc_semantics.sh",
"verify_sim_configs_coverage_docs.sh",
"L4-PYTHON-REMAP",
@@ -65,6 +70,11 @@ for (const phrase of [
"axis/rose_engine/rcone_demo.ngc",
"axis/external_offsets/queuebuster.ngc",
"Web Simulation Improvements From Virtual HAL",
"2026-06-20 Remaining Skip Promotion Audit",
"remaining_skipped_main_program_promotion_allowed=0",
"direct_inventory_promotion_rows=0",
"axis/vismach/millturn/example.ngc",
"incremental_repetition_g533.ngc",
"Browser and Node simulation no longer need host `halcmd`, `halrun`, or a",
"servo-period stepping",
"8 diagnostics-ready candidates across 3 families and 17 source files",
@@ -109,4 +119,33 @@ if (existsSync(skipSummaryPath)) {
);
}
const remainingSkipAuditPath = resolve(
root,
"build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv",
);
if (existsSync(remainingSkipAuditPath)) {
const rows = parseTsv(readFileSync(remainingSkipAuditPath, "utf8"));
assert.equal(rows.length, 2);
assert.deepEqual(
rows.map((row) => row.path).sort(),
[
"axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc",
"axis/vismach/millturn/example.ngc",
],
);
assert.deepEqual(
Object.fromEntries(rows.map((row) => [row.path, row.skip_kind])),
{
"axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc":
"UPSTREAM-DEMO",
"axis/vismach/millturn/example.ngc": "L4-USER-M-PROCESS",
},
);
for (const row of rows) {
assert.equal(row.class, "main");
assert.equal(row.promotion_allowed, "0");
assert.equal(row.promotion_ready, "0");
}
}
console.log("sim_configs_coverage_docs_node_smoke=ok");