chore: close wasm status contract work
This commit is contained in:
@@ -1064,6 +1064,29 @@ The validation fails if:
|
||||
| `tests/wasm/node/verify_sim_configs_inventory_wasm.sh` | Validates the first machine-readable Node inventory layer for `configs/sim`. It ensures native `build/native/sim-configs/summary.tsv`, generated `class-summary.tsv`, and generated `path-matrix.tsv` exist; verifies that generated `path-matrix.tsv` and tracked `docs/sim-configs-coverage-matrix.md` contain the same 159 paths as native `summary.tsv`; checks tracked matrix fields for class, native status, expected-failure reason, and blocked kind drift against generated `path-matrix.tsv`; and checks that generated `class-summary.tsv` matches class/status/expected-failure counts derived from `summary.tsv`. It then executes only entries that are currently vendored and have a defined standalone/WASM runtime path, and writes the sim-config inventory TSV artifacts. The boundary summary records one row per native inventory path with the matrix block, SDK classifier recommendation, declared HAL/UI/HALUI/Python process dependencies, `[EMCIO]DB_PROGRAM`, and execution-chain user-M codes; vendored INI rows must have an available classifier report, vendored hard blocks fail on classifier/matrix drift, safe process-declaring representatives must remain Node/browser `REP` rows with the expected process flag combinations rather than full-process promotions, and the designed full-process blocked rows must remain non-`REP` until their proof criteria are met. The generated inventory summary also requires all hard-blocked rows to remain `SKIP` with matching reasons, and `skip-summary.tsv` must match the matrix-derived skip counts. The blocked-dependency and boundary summaries record hard blocked Python-remap, tool-database, and external user-M rows from source `linuxcnc/configs/sim` INI files for dependency accounting only, including LinuxCNC source/config ownership fields, user-M script side effects, tool DB protocol evidence, Python runtime owner evidence, and completion criteria that all remain non-executing. Current gate: `executed=82`, `passed=82`, `skipped=77`, `unexpected_fail=0`; current skip/block counts are `ASSET_ONLY=65`, `L4_USER_M_PROCESS=1`, `NON_MAIN_CLASS=10`, and `UPSTREAM_DEMO=1`. The executed set now includes the deterministic `woodpecker` plus `qtdragon` / `qtdragon_hd` / `qtvcp_screens` `on_abort.ngc` family, `axis/gladevcp/probe.ngc`, `axis/rose_engine/rcone_demo.ngc`, `axis/vismach/melfa-sim/example.ngc`, and the `axis/vismach/puma` sample programs after vendoring the required machine INI, tool-table, and remap-subroutine inputs. When an upstream INI declares a missing local tool table but the native harness resolved a valid fallback table, the Node inventory stages that native-selected table at the INI-declared path so WASM execution uses the same machine context. The skip reasons are explicit: `NON_MAIN_CLASS`, `L4-TOOL-DB`, `L4-USER-M-PROCESS`, `L4-PYTHON-REMAP`, and `UPSTREAM-DEMO`; an eligible row that lacks vendored machine context is reported as an inventory failure. This runner is an inventory source-of-truth for Node WASM and is intentionally narrower than a browser full inventory. |
|
||||
| `tests/wasm/node/verify_nc_files_wasm.sh` | Validates representative vendored LinuxCNC `nc_files` examples in Node WASM by copying `3D_Chips.ngc`, `arcspiral.ngc`, `hole-circle.ngc`, `factorial.ngc`, and `m6demo.ngc` into the Emscripten filesystem and forwarding to the LinuxCNC-backed `Interp::open()`/`read()`/`execute()` path. `3D_Chips.ngc` is staged with a minimal INI-declared `tool.tbl` because the upstream program contains `T1 M6`; JavaScript only stages files and checks LinuxCNC output, including `run_step` status records, and does not implement G-code, O-word, tool-change, or M-code behavior. |
|
||||
| `tests/wasm/node/verify_tp_wasm.sh` | Validates a standalone trajectory-planner WASM module can be built from vendored LinuxCNC TP/TC/Ruckig support source, loaded in Node, and run the same linear, arc, and queued-line planner probe paths covered by the native TP harness. |
|
||||
| `tests/wasm/node/verify_task_hal_wasm.sh` | Validates the task/motion/HAL WASM runtime-edge adapter. It builds the task-HAL module, checks task-cycle motion snapshots, command buffering, plan/execute motion issue, pause/resume/step, wait-for-motion queue behavior, motion abort/error/soft-limit subordinate sync, top/task/motion/io RCS DONE/EXEC/ERROR aggregation through `rcsStatus`, T-007 `StandaloneEmcStatus` status container export through `statusSource`, `emcStatus`, `task`, and `motionStatus`, source reuse evidence for the narrow `emctask.cc`, `taskintf.cc`, and `emccanon.cc` subsets, T-033 `taskintfMotionBridge` evidence for `emcMotionInit()`/`emcMotionUpdate()`/`emcMotionAbort()` over `lcmot_*`, T-034 `taskintf` traj control evidence for enable/disable/abort/pause/step/resume/set-motion-id, T-035 structured linear move issue evidence for `emcTrajLinearMove()` through `lcmot_write_linear_move()`, T-036 structured jog/home/switchkins issue evidence for `emcJogIncr()`、`emcJointHome/Unhome()` and `emcMotionSetAout()`, T-037 structured `emctask.cc` abort/state/mode command-result evidence for `emcTaskAbort()`、`emcTaskSetMode()` and `emcTaskSetState()`, T-038 snapshot-fed `determineMode()`、`determineState()` and `emcTaskUpdate()` evidence through `updateInputSource`, T-039 plan wait/open/synch/reset evidence through `planAnchors` and `taskPlanOpen`, T-040/T-046 plan read/execute evidence through `planReadExecuteAnchors` plus a staged-program main RUN path that does not call `lctask_load_program_motion_plan_json()`, T-041 canon init/finish/unit/endpoint evidence through `initFinishUnitAnchors`, T-042 canon straight motion evidence through `straightMotionAnchors` and `lastInterpListCommand=EMC_TRAJ_LINEAR_MOVE`, T-043 canon dwell/path-control evidence through `dwellPathControlAnchors`, `delayAppendCount`, and `termCondAppendCount`, T-044 canon spindle/tool command evidence through `spindleToolAnchors`, `spindleAppendCount`, and `toolAppendCount`, and T-045 canon motion output/switchkins evidence through `motionOutputAnchors`, `motionOutputAppendCount`, `motionOutputTaskintfAoutCount`, and `waitInputCount`. It also asserts `nativeTaskReady=false`, `nativeHalSyncReady=false`, and `fullLinuxCncProgramExecutionReady=false`. |
|
||||
| `tests/wasm/node/verify_task_hal_sdk.sh` | Validates the JavaScript task-HAL SDK wrapper around the same C ABI without promoting native task/HAL readiness. |
|
||||
| `tools/verify_task_hal_readiness_contract.sh` | Validates that the task-HAL manifest, runtime status, WASM smoke, and `docs/source-reuse-map.md` all agree that task/HAL readiness is not promoted. |
|
||||
| `tools/verify_task_emc_nml_reuse_plan.sh` | Validates the T-029 decision that full upstream `emc_nml.hh` is evaluated but not directly included or vendored yet, and that the phased `StandaloneEmcStatus` / typedef route remains documented. |
|
||||
| `tools/verify_task_source_reuse_drift_docs.sh` | Validates that `docs/source-reuse-map.md`, `docs/drift-report.md`, and this compatibility document all describe the current task main-loop migration phase, readiness contract, RCS aggregation surface, `StandaloneEmcStatus`, status JSON contract gate, working closure gate, and `emc_nml.hh` reuse decision consistently. |
|
||||
| `tools/verify_task_taskintf_motion_bridge.sh` | Validates T-033 implementation anchors: upstream `taskintf.cc` motion init/update/abort functions, usrmot status/config/error reads, the narrow `taskintf_wasm_subset` bridge, `lcmot_read_config_snapshot()`, `lcmot_read_error_message()`, WASM exports, task status JSON `taskintfMotionBridge`, and the T-033/T-034 matrix transition. |
|
||||
| `tools/verify_task_taskintf_traj_control.sh` | Validates T-034 implementation anchors: upstream `taskintf.cc` traj control functions, `EMCMOT_*` control commands, `taskintf_wasm_subset` enable/disable/set-motion-id command envelopes, `lcmot` enabled/next-motion-id state, task status JSON `trajControlIssueCount`, smoke output `taskintf_traj_control_status=ok`, and the T-034/T-035 matrix transition. |
|
||||
| `tools/verify_task_taskintf_linear_move.sh` | Validates T-035 implementation anchors: upstream `emcTrajLinearMove()` and `EMCMOT_SET_LINE`, the `taskintf_wasm_subset` linear move envelope, structured `lcmot_write_linear_move()`, task status JSON `linearMoveStructuredIssueCount`, smoke output `taskintf_linear_move_status=ok`, and the T-035/T-036 matrix transition. |
|
||||
| `tools/verify_task_taskintf_jog_home_switchkins.sh` | Validates T-036 implementation anchors: upstream `emcJogIncr()`、`emcJointHome()`、`emcJointUnhome()`、`emcMotionSetAout()` and matching `EMCMOT_*` commands, structured `lcmot_write_jog_incr()`、`lcmot_write_joint_home()`、`lcmot_write_joint_unhome()`、`lcmot_write_aout()`, task status JSON `jogHomeSwitchkinsStructuredIssueCount`, smoke output `taskintf_jog_home_switchkins_status=ok`, and the T-036/T-037 matrix transition. |
|
||||
| `tools/verify_task_emctask_state_mode.sh` | Validates T-037 implementation anchors: upstream `emcTaskAbort()`、`emcTaskSetMode()`、`emcTaskSetState()`, the `emctask_wasm_subset` command-result boundary, task wrapper use of `apply_emctask_command_result()`, task status JSON `stateModeIssueCount`, the state matrix smoke, and the T-037/T-038 matrix transition. |
|
||||
| `tools/verify_task_emctask_update_snapshot.sh` | Validates T-038 implementation anchors: upstream `determineMode()`、`determineState()`、`emcTaskUpdate()`, wrapper construction of update inputs from `LcmotStatusSnapshot` and the IO estop/error latch, task status JSON `snapshotUpdateCount`/`updateInputSource`, and the T-038/T-039 matrix transition. |
|
||||
| `tools/verify_task_emctask_plan_open_wait.sh` | Validates T-039 implementation anchors: upstream `emcTaskPlanSetWait()`、`emcTaskPlanIsWait()`、`emcTaskPlanClearWait()`、`emcTaskPlanSynch()`、`emcTaskPlanOpen()`、`emcTaskPlanClose()`、`emcTaskPlanReset()`, the `emctask_wasm_subset` plan state/result boundary, task wrapper use of staged FS and plan result helpers, task status JSON `planIssueCount`/`planAnchors`, and the T-039/T-040 matrix transition. |
|
||||
| `tools/verify_task_emctask_plan_read_execute.sh` | Validates T-040 implementation anchors: upstream `emcTaskPlanRead()`、`emcTaskPlanExecute()`、`emcTaskPlanLine()`、`emcTaskPlanLevel()`、`emcTaskPlanCommand()` and `interp_list`, the `emctask_wasm_subset` plan IO result boundary, wrapper use of staged program lines without host JSON motion plans, task status JSON `planReadCount`/`planExecuteCount`/`interpListAppendCount`, and the T-040/T-041 matrix transition. |
|
||||
| `tools/verify_task_emccanon_init_finish_unit.sh` | Validates T-041 implementation anchors: upstream `INIT_CANON()`、`ON_RESET()`、`FINISH()`、`USE_LENGTH_UNITS()`、`GET_EXTERNAL_LENGTH_UNITS()`、`GET_EXTERNAL_ANGLE_UNITS()` and `GET_EXTERNAL_POSITION*()`, the `emccanon_wasm_subset` state/getter boundary, wrapper status JSON `emccanonSourceReuse.initFinishUnitAnchors` and endpoint/unit evidence, `emccanon_init_finish_unit_status=ok`, and the T-041/T-042 matrix transition. |
|
||||
| `tools/verify_task_emccanon_straight_motion.sh` | Validates T-042 implementation anchors: upstream `generate_fast_move()`、`generate_move()`、`STRAIGHT_TRAVERSE()`、`STRAIGHT_FEED()`、`EMC_TRAJ_LINEAR_MOVE` and `interp_list`, the `emccanon_wasm_subset` straight linear move boundary, wrapper status JSON `straightTraverseCount`/`straightFeedCount`/`linearMoveAppendCount`/`lastInterpListCommand`, `emccanon_straight_motion_status=ok`, and the T-042/T-043 matrix transition. |
|
||||
| `tools/verify_task_emccanon_dwell_path_control.sh` | Validates T-043 implementation anchors: upstream `DWELL()`、`SET_MOTION_CONTROL_MODE()`、`EMC_TRAJ_DELAY`、`EMC_TRAJ_SET_TERM_COND` and `interp_list`, the `emccanon_wasm_subset` dwell/path-control boundary, wrapper status JSON `dwellCount`/`delayAppendCount`/`pathControlCount`/`termCondAppendCount`, `emccanon_dwell_path_control_status=ok`, and the T-043/T-044 matrix transition. |
|
||||
| `tools/verify_task_emccanon_spindle_tool.sh` | Validates T-044 implementation anchors: upstream spindle/tool command functions, `EMC_SPINDLE_*`、`EMC_TOOL_*` and `interp_list`, the `emccanon_wasm_subset` spindle/tool command boundary, wrapper status JSON `spindleCommandCount`/`spindleAppendCount`/`toolCommandCount`/`toolAppendCount`, `emccanon_spindle_tool_status=ok`, and the T-044/T-045 matrix transition. |
|
||||
| `tools/verify_task_emccanon_motion_output.sh` | Validates T-045 implementation anchors: upstream motion output and wait command functions, `EMC_MOTION_SET_DOUT`、`EMC_MOTION_SET_AOUT`、`EMC_AUX_INPUT_WAIT` and `interp_list`, the `emccanon_wasm_subset` motion-output boundary, wrapper status JSON `motionOutputCount`/`motionOutputAppendCount`/`motionOutputTaskintfAoutCount`/`waitInputCount`, `emccanon_motion_output_status=ok`, removal of the old `M428` string special-case, and the T-045/T-046 matrix transition. |
|
||||
| `tools/verify_task_no_json_motion_plan_main_path.sh` | Validates T-046 implementation anchors: primary `verify_task_hal_wasm.mjs` does not call `lctask_load_program_motion_plan_json()`, staged RUN status keeps `motionPlanLoaded=false` and `planId=0`, SDK/state-matrix tests keep `loadProgramMotionPlan()` only as a compatibility/debug entry, smoke output `task_hal_no_json_main_path_status=ok`, and the T-046/T-007 matrix transition. |
|
||||
| `tools/verify_task_standalone_emc_status.sh` | Validates T-007 implementation anchors: `StandaloneEmcStatus`、`StandaloneEmcTaskStatus`、`StandaloneEmcMotionStatus` and `StandaloneEmcIoStatus` exist in the task wrapper, `write_status_snapshot()` synchronizes the container before JSON export, `statusSource=StandaloneEmcStatus` and `emcStatus` are emitted, WASM/SDK/state-matrix tests assert container compatibility with `task`、`motionStatus` and `rcsStatus`, smoke output `standalone_emc_status_container=ok`, and the T-007 matrix completion. |
|
||||
| `tools/verify_task_status_json_contract.sh` | Validates T-051 through T-055 status JSON contract anchors: `schemaVersion=1`, `statusSource=StandaloneEmcStatus`, `emcStatus.motion.traj`, task current/read/motion line fields, `emcStatus.motion.axis[]` and `joint[]`, IO aux/tool/coolant shim objects, no `lctask_read_status_json()` call to motion JSON, SDK boundary-only behavior, smoke output `task_status_json_contract=ok`, and full-closure inclusion. |
|
||||
| `tools/verify_task_working_closure.sh` | Validates T-047/T-048 working closure anchors: task matrix has no `待办`、`进行中` or `阻塞` rows, next priority is `无`, README/function/NML evaluation documents reflect the T-007/T-046 closed state, and ledger/evidence/decision records include the closure decision. |
|
||||
| `tools/verify_task_full_closure.sh` | Runs the final task-HAL closure bundle: build task-HAL WASM once, run task runtime smoke, SDK smoke, state matrix, motion/HAL sync, T-007 `StandaloneEmcStatus`, T-046 no-JSON main RUN path, T-051-T-055 status JSON contract, T-047/T-048 working closure, source reuse/drift docs, and readiness contract gates; emits `task_full_closure_status=ok`. |
|
||||
| `tests/opfs/node/verify_file_service.sh` | Validates the host-owned OPFS text-file adapter, path model, session snapshot store including custom filenames and envelope/path rejection paths, machine file store, G-code text store including filename rejection paths, OPFS-to-WASM parameter/tool-table bridges, and grouped machine-session loading without moving file persistence, parameter semantics, or tool-table semantics into the WASM core. |
|
||||
| `tests/browser/verify_ini_panel_browser.sh` | Validates the INI SDK, INI/interpreter WASM module loading, LinuxCNC-backed INI machine-session file-name string lookup, OPFS text-file round trip, generic session snapshot round trip plus custom filename and envelope/path rejection paths, machine file text round trip, G-code text round trip plus filename rejection paths, and the INI panel UI's machine-session load with default OPFS parameter/tool-table file mapping, G-code run, `run_step`-backed progress/line/statement/axis display, canonical-event display paths, and 5-axis remap demo action in a real browser runtime. |
|
||||
| `tests/browser/verify_interp_browser.sh` | Validates the interpreter-core WASM module loads through the interpreter JS SDK in a real browser runtime and runs selected positive and negative canonical fixtures plus vendored upstream `tests/interp` regression files through vendored LinuxCNC `Interp::execute()` and `Interp::open()`/`read()`/`execute()` via the exported C ABI, including direct browser SDK and OPFS-backed parameter-file restore/save, non-random/random tool-table load/save through vendored LinuxCNC source, vendored `xyzac-trt`/`xyzbc-trt` table-rotary-tilting and `xyzab-tdr` table-dual-rotary switchkins remap demo execution, representative vendored `configs/sim` `foam`, `geometry`, `external_offsets`, `axis/gladevcp/probe.ngc`, deterministic `woodpecker/on_abort.ngc`, bridge-mill, `melfa-sim`, and `puma_cube.ngc` programs through `runSimConfigProgram()`, representative vendored `nc_files` examples through `runFile()` or `runFileWithIni()` when the upstream file requires INI/tool-table context, and a synthetic browser assertion that `planIniFileContextStaging()` can collect INI, program, tool-table, parameter, multi-directory subroutine, executable user-M, and remap-NGC files using only manifest text. |
|
||||
|
||||
Reference in New Issue
Block a user