From c2e07518d3cf2bdd70586f6936ccfe7d82760292 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 20 Jun 2026 08:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E7=BB=AD=E4=B8=8A=E4=B8=80=E8=BD=AE?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E6=8E=A5=E7=BB=AD=E6=96=87=E4=BB=B6=E6=8C=81?= =?UTF-8?q?=E7=BB=AD=E6=8E=A8=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:已完成剩余77个SKIP的promotion复核;仅2个main SKIP且promotion_allowed均为0,当前baseline保持82/82/77/0,并新增文档与docs smoke防止误promotion。 --- PROJECT_COMPLETION_TRACKER.md | 12 +- text32.txt | 150 ++++++++++++++++++ .../sim-config-coverage-promotion-analysis.md | 38 +++++ .../docs/sim-configs-coverage-handoff.md | 13 ++ .../node/verify_sim_configs_coverage_docs.mjs | 39 +++++ 5 files changed, 246 insertions(+), 6 deletions(-) create mode 100644 text32.txt diff --git a/PROJECT_COMPLETION_TRACKER.md b/PROJECT_COMPLETION_TRACKER.md index aa23511..10c7237 100644 --- a/PROJECT_COMPLETION_TRACKER.md +++ b/PROJECT_COMPLETION_TRACKER.md @@ -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. | diff --git a/text32.txt b/text32.txt new file mode 100644 index 0000000..9684c91 --- /dev/null +++ b/text32.txt @@ -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 +``` diff --git a/wasm-port/docs/sim-config-coverage-promotion-analysis.md b/wasm-port/docs/sim-config-coverage-promotion-analysis.md index be0bdea..0369ed7 100644 --- a/wasm-port/docs/sim-config-coverage-promotion-analysis.md +++ b/wasm-port/docs/sim-config-coverage-promotion-analysis.md @@ -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 diff --git a/wasm-port/docs/sim-configs-coverage-handoff.md b/wasm-port/docs/sim-configs-coverage-handoff.md index 94e6530..62470ff 100644 --- a/wasm-port/docs/sim-configs-coverage-handoff.md +++ b/wasm-port/docs/sim-configs-coverage-handoff.md @@ -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`, diff --git a/wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs b/wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs index 7a0d693..5732c52 100644 --- a/wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs +++ b/wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs @@ -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");