完成L4-USER-M-PROCESS Web仿真接入
结论:L4-USER-M-PROCESS 已按 Web/virtual HAL 数控仿真主线完成接入,native LinuxCNC runtime 不再作为 Web 仿真阻塞;新增 text31.txt 接续剩余 77 个 SKIP 的 main-program promotion 复核。
This commit is contained in:
@@ -209,6 +209,7 @@ wasm-port/build/wasm/sim-configs-inventory/native-proof-alignment-summary.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-native-alignment-summary.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/native-runtime-probe-execution-plan.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/blocked-runtime-promotion-lock.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/next-boundary-worklist.tsv
|
||||
wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.tsv
|
||||
@@ -240,6 +241,15 @@ ready while the Node inventory baseline remains unchanged, and
|
||||
`inventory-ready` skipped main-program rows that could affect the Node
|
||||
inventory baseline. The current direct inventory `promotion_allowed=1` count
|
||||
is zero: remaining skipped main rows are still hard-blocked by `L4-USER-M-PROCESS` or preserved as `UPSTREAM-DEMO`.
|
||||
`remaining-skip-main-program-promotion-audit.tsv` is the focused row-level
|
||||
audit for those skipped main-program rows. It currently records two rows,
|
||||
`axis/vismach/millturn/example.ngc` and
|
||||
`axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc`,
|
||||
and keeps both `promotion_allowed=0`; the millturn row now has a browser
|
||||
virtual HAL state-transition proof for `M429 -> M129` and `M428 -> M128`, but
|
||||
still lacks the LinuxCNC-owned native runtime pass and promotion-gate proof
|
||||
required to leave `L4-USER-M-PROCESS`. The upstream demo row remains
|
||||
non-promotable upstream demo evidence.
|
||||
The project release readiness artifact and URL workflow publish the same
|
||||
candidate artifact summary for callers: `evidence-ready=8`,
|
||||
`inventory-ready=2`, total candidates `10`, and `promotion_allowed=0`.
|
||||
@@ -404,10 +414,10 @@ coverage: every TSV emitted under
|
||||
`full-process-boundary-design.md`. New gate artifacts must therefore be
|
||||
documented before the inventory can pass.
|
||||
The Node coverage gate also requires the generated WASM inventory artifact list
|
||||
to remain the exact duplicate-free 59-entry baseline and the native generated
|
||||
to remain the exact duplicate-free 60-entry baseline and the native generated
|
||||
TSV token list to remain the exact duplicate-free 8-token baseline. It also
|
||||
requires the corresponding `boundary-phase-completion-summary.tsv`
|
||||
documentation-coverage counts to remain `57` and `8`, respectively. It also
|
||||
documentation-coverage counts to remain `60` and `8`, respectively. It also
|
||||
checks that the browser smoke source lists the same generated WASM and native
|
||||
artifact tokens and preserves the same fixed-count, duplicate-free,
|
||||
fetchability/header, documentation-missing, and completion count-parity guards
|
||||
|
||||
@@ -157,11 +157,28 @@ enabled with `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1`, it starts the vendored
|
||||
`millturn.ini`, runs the LinuxCNC-owned Tcl `M128`/`M129` scripts, and verifies
|
||||
the resulting `ini.[xyz].*` HAL state targets before reporting
|
||||
`runtime_state_probe_passed`.
|
||||
If another LinuxCNC runtime is already active, the probe reports
|
||||
`millturn_user_m_runtime_probe_status=blocked_existing_linuxcnc_runtime` and
|
||||
`millturn_user_m_missing_requirements=exclusive_linuxcnc_runtime` instead of
|
||||
terminating or taking over that process graph. The current workstation has
|
||||
shown that state with an existing `linuxcncsvr -ini .../axis.ini` and
|
||||
`rtapi_app load tpmod`.
|
||||
|
||||
The artifact keeps `execution_enabled=0` and `promotion_allowed=0`. It is not
|
||||
a standalone Tcl/HAL executor and does not make `millturn` a Node/browser
|
||||
representative.
|
||||
|
||||
The Web/browser simulation side now has a separate source-derived virtual HAL
|
||||
proof for the same millturn state transitions. `runRealBrowserSimulation()`
|
||||
exposes `millturnUserMProcess` with `M429 -> M129` turn and `M428 -> M128`
|
||||
mill transitions, switchkins guard pins, and `ini.[xz].*` limit pin values.
|
||||
Node smoke and the real browser simulation page smoke assert that proof while
|
||||
keeping `webSimulationReady=true`, `nativeRuntimeRequired=false`,
|
||||
`processExecutionReady=false`, `executionEnabled=false`, and
|
||||
`promotionAllowed=false`. This completes the browser simulation proof without a
|
||||
native LinuxCNC runtime dependency. It still does not execute arbitrary external
|
||||
user-M processes or unlock inventory promotion.
|
||||
|
||||
`linuxcnc_millturn_user_m_boundary_probe` is the current native guard for this
|
||||
evidence. It reads the LinuxCNC source `millturn.ini`, `mcodes/M128`,
|
||||
`mcodes/M129`, and the `428remap`/`429remap` callers, then verifies the
|
||||
|
||||
@@ -47,12 +47,26 @@ execution_enabled=0
|
||||
promotion_allowed=0
|
||||
```
|
||||
|
||||
Manual `L4-USER-M-PROCESS` opt-in status on the current workstation:
|
||||
|
||||
```text
|
||||
ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
|
||||
millturn_user_m_runtime_probe_status=blocked_existing_linuxcnc_runtime
|
||||
millturn_user_m_missing_requirements=exclusive_linuxcnc_runtime
|
||||
```
|
||||
|
||||
The conflicting runtime was an already-running `linuxcncsvr -ini .../axis.ini`
|
||||
plus `rtapi_app load tpmod`. The probe intentionally keeps the millturn row
|
||||
blocked instead of taking over that runtime. The browser/virtual HAL proof for
|
||||
`M429 -> M129` and `M428 -> M128` is complete in the simulation page smoke, but
|
||||
it is not a native runtime pass and does not unlock inventory promotion.
|
||||
|
||||
## Promotion blockers
|
||||
|
||||
Each blocked family currently has `promotion_ready=0`, `execution_enabled=0`,
|
||||
and `promotion_allowed=0`.
|
||||
|
||||
For `L4-USER-M-PROCESS` and `L4-TOOL-DB`, the current blocker keys are:
|
||||
For `L4-USER-M-PROCESS` and `L4-TOOL-DB`, the current generated blocker keys are:
|
||||
|
||||
```text
|
||||
native_runtime_probe_not_passed
|
||||
@@ -87,6 +101,9 @@ For rows that still lack native evidence, the next unblock action is to provide
|
||||
the missing host runtime requirements for the relevant family. Providing host
|
||||
commands is not enough to promote a row; it only allows the next opt-in probe
|
||||
gate to be considered.
|
||||
For `L4-USER-M-PROCESS` on this workstation, the remaining native requirement
|
||||
is stricter than command availability: the millturn probe needs an exclusive
|
||||
LinuxCNC runtime with no existing `linuxcncsvr`/`rtapi_app` process graph.
|
||||
|
||||
## Opt-in probe dispatch
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ Use this checklist when adding each LinuxCNC upstream test:
|
||||
| `tests/uspace/spawnv-root` | Blocked | Sudo-installed userspace HAL component and `spawnv` root behavior. | Keep upstream-only unless HAL component install/runtime support is added. |
|
||||
| `configs/sim/*/remap_subs/*.ngc` browser main-program inventory | Blocked | These files are remap/subroutine assets, not standalone browser main-program targets. | Keep validating them through native remap parse/execute paths and explicit five-axis/runtime probes instead of widening browser `runSimConfigProgram()` blindly. |
|
||||
| `configs/sim/axis/db_demo/base.ngc` Layer 4 inventory | Blocked | `[EMCIO]DB_PROGRAM = ./db_nonran.py` requires LinuxCNC task/tooldata DB process startup, command/reply protocol, and database state behavior, not standalone interpreter file execution. | Keep as `L4-TOOL-DB` until a LinuxCNC-owned tool database runtime boundary exists and proves lookup/update behavior across native and WASM. `blocked-dependency-summary.tsv` records `taskclass.cc`, `tooldata_db.cc`, `tooldata_common.cc`, and `configs/sim/axis/db_demo/db.py` as the owner set plus source-derived `tool_db_protocol_evidence` for the `v2.1` handshake, `g`/`FINI` get-all, and `l`/`u`/`p` notification protocol. |
|
||||
| `configs/sim/axis/vismach/millturn/example.ngc` Layer 4 inventory | Blocked | The remap execution chain calls external `USER_M_PATH` process codes `M128` and `M129`, with HAL/HALUI/UI process declarations in `millturn.ini`. | Keep as `L4-USER-M-PROCESS`; do not promote until the M128/M129 LinuxCNC-owned state boundary proves the kinstype guard and `ini.[xyz].*` HAL pin updates. `blocked-dependency-summary.tsv` records the `mcodes/M128` and `mcodes/M129` Tcl scripts plus source-derived `user_m_process_effects` for Tcl/HAL runtime use, kinstype guards, and `ini.[xyz]` HAL pin side effects. |
|
||||
| `configs/sim/axis/vismach/millturn/example.ngc` Layer 4 inventory | Blocked | The remap execution chain calls external `USER_M_PATH` process codes `M128` and `M129`, with HAL/HALUI/UI process declarations in `millturn.ini`. | Keep as `L4-USER-M-PROCESS`; the Web/virtual HAL simulation proof now covers `M429 -> M129` turn and `M428 -> M128` mill state transitions, including switchkins guard pins and `ini.[xz].*` limit pins in Node and real browser page smoke. Do not promote until the opt-in native LinuxCNC runtime probe can run with exclusive `linuxcncsvr`/`rtapi_app` ownership and report `runtime_state_probe_passed`; the current workstation reports `blocked_existing_linuxcnc_runtime` / `exclusive_linuxcnc_runtime`. `blocked-dependency-summary.tsv` records the `mcodes/M128` and `mcodes/M129` Tcl scripts plus source-derived `user_m_process_effects` for Tcl/HAL runtime use, kinstype guards, and `ini.[xyz]` HAL pin side effects. |
|
||||
| `configs/sim/gmoccapy/*` Layer 4 full inventory | Blocked | Python remap runtime boundary is present in native LinuxCNC `rs274`, but not yet intentionally exposed for Node/browser full inventory. | Keep native inventory coverage as source-of-truth; add one representative Node/browser class sample only after the Python remap boundary is deliberately designed. Python module and prolog/epilog ownership is inventoried in `blocked-dependency-summary.tsv`; LinuxCNC runtime ownership is recorded as `python_runtime_evidence` in the Python boundary/family summaries. |
|
||||
| `configs/sim/axis/laser/*` Layer 4 full inventory | Blocked | Python remap runtime boundary is present in native LinuxCNC `rs274`, but not yet intentionally exposed for Node/browser full inventory. | Keep native inventory coverage as source-of-truth; add one representative Node/browser class sample only after the Python remap boundary is deliberately designed. Python module and remap ownership is inventoried in `blocked-dependency-summary.tsv`; LinuxCNC runtime ownership is recorded as `python_runtime_evidence` in the Python boundary/family summaries. |
|
||||
| `configs/sim/axis/remap/*/nc_files/*.ngc` Layer 4 full inventory | Blocked | Native LinuxCNC `rs274` coverage exists, but these demo main programs depend on Python remaps, Python prolog/epilog callbacks, or Python-backed queue/tool-change handlers. | Keep native inventory coverage as source-of-truth; do not reduce Python remap demos to missing vendored files or browser standalone execution until the Python remap boundary is deliberately designed. Dependency ownership is inventoried in `blocked-dependency-summary.tsv`; LinuxCNC runtime ownership is recorded as `python_runtime_evidence` in the Python boundary/family summaries. |
|
||||
|
||||
@@ -460,12 +460,19 @@ Boundary decisions for the current hard blocks:
|
||||
to change INI axis limit HAL pins after the kinematics switch. The current
|
||||
LinuxCNC owner is therefore task user-M process dispatch plus HALUI/MDI and
|
||||
the config-owned Tcl process scripts, not the standalone interpreter. Do not
|
||||
promote this row until the boundary design in
|
||||
`docs/full-process-boundary-design.md` has a deterministic state proof for
|
||||
these HAL pin updates across native, Node, and browser. The Node inventory
|
||||
guard requires this row to stay non-`REP` in Node and browser while it remains
|
||||
`L4-USER-M-PROCESS`, and the generated inventory summary must keep it as
|
||||
`SKIP` with that reason.
|
||||
promote this row until the native runtime probe can run in an exclusive
|
||||
LinuxCNC process graph and report `runtime_state_probe_passed`. The current
|
||||
Web/virtual HAL simulation proof is complete for `M429 -> M129` turn and
|
||||
`M428 -> M128` mill state transitions, and the real browser simulation page
|
||||
smoke verifies the switchkins guard pins plus `ini.[xz].*` limit pins through
|
||||
`linuxCncRealSimulationState.millturnUserMProcess`. That proof is simulation
|
||||
evidence only: it keeps `processExecutionReady=false`, `executionEnabled=0`,
|
||||
and `promotion_allowed=0`. The latest opt-in native probe on this workstation
|
||||
reports `blocked_existing_linuxcnc_runtime` with
|
||||
`exclusive_linuxcnc_runtime` because an existing `linuxcncsvr`/`rtapi_app`
|
||||
runtime is already active. The Node inventory guard requires this row to stay
|
||||
non-`REP` in Node and browser while it remains `L4-USER-M-PROCESS`, and the
|
||||
generated inventory summary must keep it as `SKIP` with that reason.
|
||||
- `axis/db_demo/base.ngc` remains `L4-TOOL-DB`. The source INI declares
|
||||
`[EMCIO]DB_PROGRAM = ./db_nonran.py`, so standalone interpreter execution
|
||||
would miss LinuxCNC tool-database process startup and protocol/state
|
||||
|
||||
@@ -43,6 +43,7 @@ The generated artifact baseline is:
|
||||
- `build/wasm/sim-configs-inventory/full-process-boundary-summary.tsv`
|
||||
- `build/wasm/sim-configs-inventory/python-remap-boundary-summary.tsv`
|
||||
- `build/wasm/sim-configs-inventory/promotion-candidates.tsv`
|
||||
- `build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv`
|
||||
- `build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv`
|
||||
- `build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv`
|
||||
- `build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv`
|
||||
@@ -55,6 +56,13 @@ Every row keeps `promotion_allowed=0`, so the inventory baseline is now
|
||||
`82/82/77/0`. The companion `evidence-expansion-candidates.tsv` artifact has
|
||||
14 rows queued for future browser diagnostics binding, also with
|
||||
`promotion_allowed=0`.
|
||||
`remaining-skip-main-program-promotion-audit.tsv` is the focused audit for the
|
||||
2 skipped main-program rows left inside the 77 skips. It keeps both
|
||||
`promotion_allowed=0`: `axis/vismach/millturn/example.ngc` is still blocked on
|
||||
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.
|
||||
|
||||
SDK and workflow-overview release URL summaries expose the current
|
||||
`evidence-ready` layer as dashboard fields: `evidence-ready-candidate-rows=8`,
|
||||
@@ -73,7 +81,7 @@ underscore-safe metric names. Treat these as the same baseline:
|
||||
| Artifact reason | Shell metric suffix | Count | Release decision |
|
||||
| --- | --- | ---: | --- |
|
||||
| `ASSET-ONLY` | `ASSET_ONLY` | 65 | Subroutine/support asset; not a standalone browser main-program target. |
|
||||
| `L4-USER-M-PROCESS` | `L4_USER_M_PROCESS` | 1 | Keep blocked until a LinuxCNC-owned external user-M process state proof exists. |
|
||||
| `L4-USER-M-PROCESS` | `L4_USER_M_PROCESS` | 1 | Browser virtual HAL state proof exists for millturn M128/M129, but keep inventory promotion blocked until the LinuxCNC-owned native runtime probe and promotion gates pass. |
|
||||
| `NON_MAIN_CLASS` | `NON_MAIN_CLASS` | 10 | Covered by class representative or macro/load policy, not direct standalone promotion. |
|
||||
| `UPSTREAM-DEMO` | `UPSTREAM_DEMO` | 1 | Preserved upstream demo edge; do not force pass. |
|
||||
|
||||
|
||||
@@ -72,6 +72,8 @@ Current baseline:
|
||||
`wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.tsv`
|
||||
- Node promotion candidate artifact:
|
||||
`wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv`
|
||||
- Node remaining skipped main-program promotion audit artifact:
|
||||
`wasm-port/build/wasm/sim-configs-inventory/remaining-skip-main-program-promotion-audit.tsv`
|
||||
- Node native evidence acceptance gate artifact:
|
||||
`wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-native-evidence-acceptance-gate.tsv`
|
||||
- Node promotion blocker summary artifact:
|
||||
@@ -382,7 +384,7 @@ Legend:
|
||||
`build/wasm/sim-configs-inventory/` must be referenced by the current
|
||||
compatibility, matrix, or full-process boundary docs, so generated gate
|
||||
artifacts cannot silently appear without review text. The generated WASM
|
||||
inventory artifact list must remain the exact duplicate-free 59-entry
|
||||
inventory artifact list must remain the exact duplicate-free 60-entry
|
||||
baseline, and every token plus the fixed-count, duplicate-free, and
|
||||
fetchability guards must also be listed by browser smoke.
|
||||
- The same inventory check covers native generated TSV artifacts under
|
||||
@@ -395,7 +397,7 @@ Legend:
|
||||
compatibility, matrix, and full-process boundary docs and checking the
|
||||
generated WASM inventory artifact names plus native TSV tokens against the
|
||||
same completion-summary counts. The Node coverage gate also locks the two
|
||||
documentation-coverage completion counts to the current `57` WASM inventory
|
||||
documentation-coverage completion counts to the current `60` WASM inventory
|
||||
artifacts and `8` native TSV artifacts. It verifies that browser smoke
|
||||
executes the artifact documentation coverage helper, calls the completion
|
||||
count-parity helper with the generated completion rows, fetches and joins the
|
||||
|
||||
Reference in New Issue
Block a user