接续上一轮,按接续文件持续推进
结论:已完成剩余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
|
# 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.
|
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.
|
turn-by-turn continuation notes and next-batch execution records.
|
||||||
|
|
||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
- Active continuation file: `text16.txt`
|
- Active continuation file: `text32.txt`
|
||||||
- Latest completed batch: AXIS run summary
|
- Latest completed batch: remaining 77 SKIP promotion audit
|
||||||
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
||||||
- Working tree at tracker creation: clean
|
- Working tree at tracker creation: clean
|
||||||
- Required policy: LinuxCNC remains the only CNC semantic source
|
- 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.
|
- Host/runtime blocked families are explicitly documented and not falsely promoted.
|
||||||
- All required gates pass.
|
- All required gates pass.
|
||||||
- Documentation explains what is supported, blocked, and how to verify it.
|
- 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
|
## 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. |
|
| 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. |
|
| 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`. |
|
| 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 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`. |
|
| 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. |
|
| 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,
|
case promotions from Node inventory or representative coverage into browser,
|
||||||
diagnostics, and release evidence.
|
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
|
## What Virtual HAL Unlocks
|
||||||
|
|
||||||
The virtual HAL is now a source-derived Web simulation replacement for these
|
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
|
browser simulation state now includes a source-derived virtual HAL proof for
|
||||||
the `M429 -> M129` turn and `M428 -> M128` mill state transitions. The TWP
|
the `M429 -> M129` turn and `M428 -> M128` mill state transitions. The TWP
|
||||||
`incremental_repetition_g533.ngc` row remains preserved upstream demo evidence.
|
`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
|
SDK and workflow-overview release URL summaries expose the current
|
||||||
`evidence-ready` layer as dashboard fields: `evidence-ready-candidate-rows=8`,
|
`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",
|
"sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1",
|
||||||
"build/wasm/sim-configs-inventory/skip-summary.tsv",
|
"build/wasm/sim-configs-inventory/skip-summary.tsv",
|
||||||
"build/wasm/sim-configs-inventory/blocked-dependency-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_no_standalone_cnc_semantics.sh",
|
||||||
"verify_sim_configs_coverage_docs.sh",
|
"verify_sim_configs_coverage_docs.sh",
|
||||||
"L4-PYTHON-REMAP",
|
"L4-PYTHON-REMAP",
|
||||||
@@ -65,6 +70,11 @@ for (const phrase of [
|
|||||||
"axis/rose_engine/rcone_demo.ngc",
|
"axis/rose_engine/rcone_demo.ngc",
|
||||||
"axis/external_offsets/queuebuster.ngc",
|
"axis/external_offsets/queuebuster.ngc",
|
||||||
"Web Simulation Improvements From Virtual HAL",
|
"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",
|
"Browser and Node simulation no longer need host `halcmd`, `halrun`, or a",
|
||||||
"servo-period stepping",
|
"servo-period stepping",
|
||||||
"8 diagnostics-ready candidates across 3 families and 17 source files",
|
"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");
|
console.log("sim_configs_coverage_docs_node_smoke=ok");
|
||||||
|
|||||||
Reference in New Issue
Block a user