接续上一轮,按接续文件持续推进
结论:已完成剩余77个SKIP的promotion复核;仅2个main SKIP且promotion_allowed均为0,当前baseline保持82/82/77/0,并新增文档与docs smoke防止误promotion。
This commit is contained in:
@@ -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
150
text32.txt
Normal 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
|
||||
```
|
||||
@@ -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
|
||||
|
||||
@@ -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`,
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user