HAL/UI/full-process standalone/browser boundary design and next plan Generated: 2026-06-10 CST This plan follows `text3.txt`. The `configs/sim` inventory/matrix work is now complete for the current definition. This file defines the next boundary before any previously blocked HAL/UI/full-process family is promoted into standalone, Node, or browser execution. Goal - Preserve LinuxCNC as the CNC semantic source of truth. - Make HAL/UI/full-process dependencies machine-readable before attempting execution. - Promote only the subpaths that can run through vendored LinuxCNC source plus explicit standalone runtime adapters. - Keep task, HAL process launch, UI driver process launch, linuxcncrsh, Python remap, and tool-database process behavior blocked until each has a deliberate LinuxCNC-owned runtime boundary. Non-goals - Do not implement HAL, task, linuxcncrsh, GUI, Python remap, or tool-database semantics in JavaScript. - Do not make blocked `configs/sim` programs pass by editing upstream G-code, changing SDK behavior, or adding project-owned interpreter semantics. - Do not treat native LinuxCNC GUI code as implementation code for the browser UI. Current implementation added by this batch 1. SDK runtime-boundary classifier Added: ```text wasm-port/runtime/sdk/src/sim-config-staging.js analyzeIniRuntimeBoundaries() ``` Exported through: ```text wasm-port/runtime/sdk/src/index.js ``` The classifier reads INI text, manifest text, source-root metadata, and optional execution text. It reports: - declared `HAL` process inputs: `HALFILE`, `HALCMD`, `POSTGUI_HALFILE`, `HALUI`; - declared UI process inputs: `DISPLAY`, `PYVCP`, `GLADEVCP`, `EMBED_TAB_COMMAND`; - `HALUI` MDI command dependencies; - `[EMCIO]DB_PROGRAM` tool-database process dependencies; - Python references in UI, DB, `[PYTHON]`, or Python remap declarations; - `[RS274NGC]USER_M_PATH` plus whether the current execution text calls unstaged external `M100..M199` process codes. It returns a policy recommendation for hard Layer 4 blocks: - `L4-TOOL-DB` when `[EMCIO]DB_PROGRAM` is present; - `L4-USER-M-PROCESS` when the current execution chain calls unstaged external user-M process codes; - `L4-PYTHON-REMAP` for Python remap runtime declarations; - `-` when the dependency is only a declared process dependency already represented by a narrower standalone adapter or class representative. This is policy/accounting only. It does not execute or emulate HAL, task, UI, Python, user-M, or tool-database behavior. 2. Node coverage for the classifier Updated: ```text wasm-port/tests/wasm/node/verify_sim_configs_wasm.mjs ``` Covered cases: - synthetic INI with vendored `M123` user-M file remains unblocked; - `axis/db_demo/db_nonran.ini` reports `L4-TOOL-DB`; - `axis/vismach/millturn/millturn.ini` plus its remap execution chain reports `L4-USER-M-PROCESS` because `M428/M429` call unstaged `M128/M129`; - `axis/vismach/puma/puma_cube.ini` declares HAL/UI/HALUI process dependencies but remains unblocked for the current representative program because the promoted execution path does not call unstaged external user-M process codes; - `axis/gladevcp/gladevcp_panel.ini` declares UI/Python UI process dependencies but remains unblocked for the current `probe.ngc` representative. 3. Inventory policy guard Updated: ```text wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs ``` The Node inventory now checks vendored INI rows against `analyzeIniRuntimeBoundaries()` before execution/skipping: - `L4-TOOL-DB` rows must declare `DB_PROGRAM`; - `L4-USER-M-PROCESS` rows must be backed by an execution chain that calls unstaged external user-M process codes; - generated/tracked blocked policy drift fails the inventory. Boundary model Layer A: declaration classification - Input: INI text, manifest text, optional execution text. - Output: dependency list and recommended blocked kind. - Owner: SDK host-boundary code. - Validation: Node unit/smoke assertions and Node inventory policy checks. Layer B: standalone adapter execution - Allowed only when a narrow runtime edge already exists and CNC behavior still comes from vendored LinuxCNC source. - Current examples: - HAL named-parameter lookup and switchkins M68/M66 synchronization through the standalone HAL adapter; - deterministic `USER_M_COMMAND` canonical events for already vendored M110/M111-style user-M registration; - five-axis remap execution through vendored LinuxCNC remap/O-word paths; - OPFS/file/parameter/tool-table persistence as host storage boundaries. Layer C: browser/UI representation - Browser UI may present standalone simulation state and user controls. - Browser UI must not execute native LinuxCNC GUI code. - Browser UI must call SDK/WASM boundaries that are already validated in Node or native probes. - Full LinuxCNC GUI actions remain blocked unless expressed as a deliberate standalone command boundary with LinuxCNC-owned behavior underneath. Layer D: full-process blocked boundary Keep blocked until explicitly designed: - LinuxCNC task process lifecycle; - HAL process/module loading and realtime scheduling; - HALUI/linuxcncrsh command queues; - external userspace components; - native GUI driver processes; - Python remap/prolog/epilog runtime; - tool database process startup and protocol/state behavior. Follow-on implementation completed after this plan Batch 1: durable boundary reports - Complete. The Node inventory now writes: ```text wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv wasm-port/build/wasm/sim-configs-inventory/blocked-dependency-summary.tsv wasm-port/build/wasm/sim-configs-inventory/boundary-phase-completion-summary.tsv ``` - `boundary-summary.tsv` records the path, INI, tracked blocked kind, classifier recommendation, dependency evidence, user-M execution codes, unstaged user-M codes, vendored user-M count, DB program, HAL/UI/HALUI process flags, and Python UI/remap process flags. - The inventory fails if a hard blocked row and the classifier recommendation drift, if `L4-TOOL-DB` lacks `DB_PROGRAM`, if `L4-USER-M-PROCESS` lacks unstaged external user-M execution codes, or if `L4-PYTHON-REMAP` lacks Python remap process evidence. Batch 2: safe HAL/UI representatives - Complete. The inventory keeps these safe representatives as Node/browser `REP` rows while recording declared process dependencies: - `axis/gladevcp/probe.ngc` - `woodpecker/on_abort.ngc` - `axis/vismach/puma/puma_cube.ngc` - `axis/vismach/melfa-sim/example.ngc` - These rows remain file/remap execution representatives only. They do not claim full HAL/UI process coverage. - `axis/vismach/millturn/example.ngc` remains blocked as `L4-USER-M-PROCESS` because its remap chain calls unstaged `M128/M129`. Batch 3: external user-M process boundary - Complete as a design-and-gate phase, still blocked for execution. - Generated artifacts now identify LinuxCNC ownership and state targets for millturn `M128/M129`: ```text wasm-port/build/wasm/sim-configs-inventory/user-m-process-boundary-summary.tsv wasm-port/build/wasm/sim-configs-inventory/user-m-process-state-targets.tsv wasm-port/build/wasm/sim-configs-inventory/user-m-process-transition-plan.tsv wasm-port/build/wasm/sim-configs-inventory/user-m-process-native-runtime-state-plan.tsv wasm-port/build/wasm/sim-configs-inventory/user-m-process-native-runtime-readiness.tsv wasm-port/build/wasm/sim-configs-inventory/user-m-process-native-runtime-probe-gate.tsv ``` - The native probe entry point exists: ```text wasm-port/tests/native/probe_millturn_user_m_runtime.sh ``` - The probe is disabled by default and currently reports `skipped_missing_host_runtime` on this host because `halrun`, `halcmd`, and `linuxcnc` are unavailable. Promotion remains locked. Batch 4: tool DB boundary - Complete as a design-and-gate phase, still blocked for execution. - Generated artifacts now describe the `DB_PROGRAM` v2.1 protocol, get/load/ put/unload transactions, persistence state, native readiness, and promotion lock: ```text wasm-port/build/wasm/sim-configs-inventory/tool-db-process-boundary-summary.tsv wasm-port/build/wasm/sim-configs-inventory/tool-db-process-protocol-gates.tsv wasm-port/build/wasm/sim-configs-inventory/tool-db-process-transaction-plan.tsv wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-runtime-readiness.tsv ``` - The native probe entry point exists: ```text wasm-port/tests/native/probe_tool_db_runtime.sh ``` - The probe is disabled by default and currently reports `skipped_missing_host_runtime` because `linuxcnc`, `milltask`, and `halcmd` are unavailable. `axis/db_demo/base.ngc` remains `L4-TOOL-DB`. Batch 5: Python remap/full-process family plan - Complete as dependency inventory plus a minimal native lifecycle fixture plan, still blocked for execution. - Generated artifacts now inventory Python remap families, LinuxCNC owner sources, configured modules, callable/prolog/epilog expectations, runtime phases, readiness, and the selected `stop-lookahead` fixture: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-boundary-summary.tsv wasm-port/build/wasm/sim-configs-inventory/python-remap-runtime-contract.tsv wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-readiness.tsv wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-state-plan.tsv wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-fixture-plan.tsv ``` - The native probe entry point exists: ```text wasm-port/tests/native/probe_python_remap_runtime.sh ``` - The probe is disabled by default and currently reports `skipped_missing_host_runtime` because `linuxcnc` is unavailable. Python remap families remain inventory-only and are not promoted. Batch 6: Python remap host/source readiness gate - Complete as a readiness-and-gate phase, still blocked for execution. - Generated artifacts now explicitly separate ordinary `python3` availability from LinuxCNC interpreter-owned Python remap runtime readiness: ```text wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-readiness.tsv wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-probe-gate.tsv ``` - `python-remap-native-runtime-probe-gate.tsv` records the selected `axis/remap/stop-lookahead/nc_files` fixture, `python3`, `linuxcnc`, `interp_python.cc`, `python_plugin.cc`, and representative module import inputs: ```text import:axis/remap/stop-lookahead/python/remap.py import:axis/remap/stop-lookahead/python/toplevel.py ``` - The gate records `python3_sufficient=0`. On this host, `python3` is present but `linuxcnc` is missing, so the gate remains: ```text runtime_ready=0 source_proof_ready=1 gate_status=blocked_missing_host_runtime execution_enabled=0 promotion_allowed=0 ``` - Node inventory and browser smoke now require the Python remap runtime probe gate artifact. The browser gate checks the same policy without executing Python remap code or claiming browser/full-process coverage. Batch 7: tool DB host/source readiness gate - Complete as a readiness-and-gate phase, still blocked for execution. - Generated artifacts now explicitly separate ordinary `python3` availability and tool-table fallback from LinuxCNC `DB_PROGRAM` process readiness: ```text wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-runtime-readiness.tsv wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-runtime-probe-gate.tsv ``` - `tool-db-process-native-runtime-probe-gate.tsv` records the selected `axis/db_demo/base.ngc` fixture, `DB_PROGRAM=./db_nonran.py`, required host commands, DB program source, LinuxCNC Python modules, and the v2.1 protocol transaction contract. - The gate records: ```text python3_sufficient=0 tool_table_fallback_sufficient=0 db_program_source_ready=1 linuxcnc_python_modules_ready=1 protocol_contract_ready=1 source_proof_ready=1 ``` - On this host, `python3` is present but `linuxcnc`, `milltask`, and `halcmd` are missing, so the gate remains: ```text runtime_ready=0 gate_status=blocked_missing_host_runtime execution_enabled=0 promotion_allowed=0 ``` - Node inventory and browser smoke now require the tool DB runtime probe gate artifact. The browser gate checks the same policy without executing `DB_PROGRAM`, starting LinuxCNC processes, or falling back to `.tbl` semantics. Batch 8: native runtime probe/gate alignment - Complete as a cross-artifact consistency gate, still blocked for execution. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-probe-gate-alignment.tsv ``` - This artifact aligns the native runtime probe summary with the generated runtime probe gates for: - `axis/vismach/millturn/example.ngc` - `axis/db_demo/base.ngc` - `axis/remap/stop-lookahead/nc_files` - The alignment requires matching `runtime_ready`, `source_proof_ready`, missing host requirements, execution-disabled state, promotion-disabled state, and compatible native/gate statuses. - Node inventory and browser smoke now require this alignment before any blocked boundary can be considered for promotion. Batch 9: native runtime probe opt-in metadata - Complete as a native/WASM/browser schema hardening phase, still blocked for execution. - `native-runtime-probe-summary.tsv` now records the proof key and opt-in switch for each disabled native runtime probe: ```text required_native_proof opt_in_env probe_note ``` - The current rows explicitly require: - `native_runtime_state_probe_required` with `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1`; - `native_db_process_protocol_probe_required` with `ENABLE_TOOL_DB_RUNTIME_PROBE=1`; - `linuxcnc_python_runtime_lifecycle_probe_required` with `ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1`. - The native probe scripts now emit a `runtime_probe_note` for missing source, missing host runtime, disabled-ready, pass, and fail states. On this host the notes still report missing LinuxCNC host runtime and keep promotion disabled. - `runtime-probe-gate-alignment.tsv` now compares the gate `required_native_proof` with the native runtime summary proof key and records `native_opt_in_env`, so a ready host cannot silently drift from the intended opt-in probe. - Native, Node inventory, and browser smoke all require these fields while keeping `execution_enabled=0` and `promotion_allowed=0`. Batch 10: native runtime opt-in execution plan - Complete as a generated runbook/gate artifact, still blocked for execution on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/native-runtime-probe-execution-plan.tsv ``` - The artifact records the exact opt-in command, current runtime readiness, current native probe status, expected pass status, missing requirements, gate alignment status, and promotion prerequisites for: - `axis/vismach/millturn/example.ngc`; - `axis/db_demo/base.ngc`; - `axis/remap/stop-lookahead/nc_files`. - Current opt-in commands are: - `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh`; - `ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh`; - `ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh`. - The expected native pass statuses are: - `runtime_state_probe_passed`; - `runtime_protocol_probe_passed`; - `runtime_lifecycle_probe_passed`. - On this host all three rows remain: ```text runtime_ready=0 gate_alignment_ok=1 execution_enabled=0 promotion_allowed=0 plan_status=blocked_missing_host_runtime ``` - Promotion remains explicitly gated on native pass status, subsequent Node inventory gate alignment, browser smoke gate alignment, and a manual promotion lock update. The opt-in command alone does not promote any blocked row. - Node inventory, browser smoke, and the boundary phase completion summary now require this execution plan. Batch 11: native runtime pass evidence contract - Complete as a generated stdout-evidence contract, still blocked for execution on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/native-runtime-probe-pass-evidence-contract.tsv ``` - The artifact records the native stdout evidence keys that must be present after each opt-in native runtime probe reports its expected pass status. - Current required pass statuses and evidence include: - millturn user-M: `runtime_state_probe_passed`, `millturn_user_m_M128_runtime_state_ok=1`, `millturn_user_m_M129_runtime_state_ok=1`; - tool DB: `runtime_protocol_probe_passed`, `tool_db_protocol_version=v2.1`, `tool_db_runtime_protocol_probe_ok=1`, `tool_db_persistence_state_ok=1`; - Python remap: `runtime_lifecycle_probe_passed`, `python_remap_lifecycle_generator_first_yield=2`, `python_remap_runtime_lifecycle_probe_ok=1`. - On this host all three rows remain: ```text evidence_required_now=0 observed_evidence_ready=0 missing_evidence_keys=- evidence_status=pending_until_native_pass execution_enabled=0 promotion_allowed=0 ``` - If a future opt-in probe reports its expected pass status, Node inventory will require all declared stdout evidence keys before any Node/browser promotion work can proceed. Browser smoke checks the same contract and still treats it as non-promoting evidence. - The boundary phase completion summary now requires this evidence contract. Batch 12: runtime boundary promotion readiness summary - Complete as a generated final promotion-readiness gate, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-readiness.tsv ``` - The artifact combines: - native runtime execution plan status; - native pass evidence status; - blocked runtime promotion lock state; - Node inventory gate completion state; - browser smoke gate completion state; - manual lock update requirement. - Current rows remain: ```text native_pass_ready=0 native_evidence_ready=0 node_inventory_gate_complete=0 browser_smoke_gate_complete=0 promotion_lock_active=1 manual_lock_update_required=1 promotion_ready=0 execution_enabled=0 promotion_allowed=0 blocking_reason=awaiting_native_runtime_probe_pass ``` - This gives each blocked runtime family one machine-readable final decision: even if a native probe later passes, promotion still requires native evidence, Node/browser promotion gates, and an explicit manual promotion lock update. - Node inventory, browser smoke, and the boundary phase completion summary now require this readiness summary. Batch 13: runtime boundary promotion blockers - Complete as a generated blocker-summary gate, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv ``` - The artifact expands each `promotion_ready=0` decision into concrete blocker keys and the next unblock action. Current blocker keys include: - `host_runtime_requirements_missing`; - `native_runtime_probe_not_passed`; - `native_pass_evidence_not_ready`; - `node_inventory_gate_not_complete`; - `browser_smoke_gate_not_complete`; - `promotion_lock_active`; - `manual_lock_update_required`. - Current missing runtime requirements are: - millturn user-M: `halrun,halcmd,linuxcnc`; - tool DB: `linuxcnc,milltask,halcmd`; - Python remap: `linuxcnc`. - The current next unblock action is to provide the missing host runtime requirements for each family. The artifact remains summary-only: ```text promotion_ready=0 execution_enabled=0 promotion_allowed=0 ``` - Node inventory, browser smoke, and the boundary phase completion summary now require this blocker summary. Batch 14: post-native-pass promotion gates - Complete as a generated post-native-pass gate, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-post-native-pass-gates.tsv ``` - The artifact records, for each blocked runtime family, the native pass status, native evidence readiness, required Node proof, required browser proof, Node gate status, browser gate status, manual lock requirement, and active promotion lock state. - Current rows remain: ```text native_pass_ready=0 native_evidence_ready=0 node_gate_status=blocked_until_native_pass_evidence browser_gate_status=blocked_until_node_gate_complete manual_lock_update_required=1 promotion_lock_active=1 execution_enabled=0 promotion_allowed=0 gate_status=blocked_before_native_pass ``` - This closes the next machine-readable step after a future native probe pass: native evidence must exist first, then Node inventory proof, then browser smoke proof, then a manual promotion-lock update. Native pass alone still cannot promote `L4-USER-M-PROCESS`, `L4-TOOL-DB`, or `L4-PYTHON-REMAP`. - Node inventory, browser smoke, and the boundary phase completion summary now require this post-native-pass gate. Batch 15: blocked runtime host preflight - Complete as a generated host-preflight summary, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-preflight.tsv ``` - The artifact aggregates the three runtime probe gates into one host-facing preflight table with: - boundary class/kind/target; - required LinuxCNC runtime family; - full runtime requirement availability vector; - missing host requirements; - source proof readiness; - required native proof key; - opt-in environment variable; - exact opt-in command; - current native probe status; - preflight status. - Current rows remain: ```text source_proof_ready=1 runtime_ready=0 current_probe_status=skipped_missing_host_runtime preflight_status=blocked_missing_host_runtime execution_enabled=0 promotion_allowed=0 ``` - Current missing runtime requirements are summarized in one artifact: - millturn user-M: `halrun,halcmd,linuxcnc`; - tool DB: `linuxcnc,milltask,halcmd`; - Python remap: `linuxcnc`. - This preflight does not run probes and does not relax promotion locks. It only records when a future host is ready to run the already declared opt-in native probe commands. - Node inventory, browser smoke, and the boundary phase completion summary now require this host-preflight artifact. Batch 16: blocked runtime host requirement summary - Complete as a generated normalized host requirement summary, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-requirement-summary.tsv ``` - The artifact expands the host preflight `runtime_requirements` vectors into one row per required host command/source/module, with: - requirement name; - requirement kind (`host_command` or `source_or_module`); - current availability; - blocked runtime families that require it; - blocked runtime families for which it is missing; - opt-in probe environment variables affected by it; - whether the missing requirement currently blocks runtime execution. - Current missing host commands are normalized as: ```text halcmd available=0 required_by=L4-TOOL-DB,L4-USER-M-PROCESS halrun available=0 required_by=L4-USER-M-PROCESS linuxcnc available=0 required_by=L4-PYTHON-REMAP,L4-TOOL-DB,L4-USER-M-PROCESS milltask available=0 required_by=L4-TOOL-DB ``` - Current available prerequisites remain recorded but non-promoting, including `python3`, `tclsh`, `axis/db_demo/db_nonran.py`, `linuxcnc.so`, `tooldb.py`, `interp_python.cc`, `python_plugin.cc`, and the selected stop-lookahead Python modules. - This summary does not run probes and does not relax promotion locks. It only makes the host gap list machine-readable by requirement and affected blocked family. - Node inventory, browser smoke, and the boundary phase completion summary now require this host requirement summary. Batch 17: blocked runtime host unblock plan - Complete as a generated host unblock plan, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-unblock-plan.tsv ``` - The artifact filters the host requirement summary to only requirements that are both unavailable and currently block runtime probes. Each row records: - missing host command; - affected blocked runtime families; - affected target programs/families; - affected opt-in native probe environment variables; - exact affected opt-in native probe commands; - remaining missing requirements after that one command becomes available; - non-executing unblock status and next action. - Current blocking host commands are: ```text halcmd halrun linuxcnc milltask ``` - Every current row remains a partial unblock because each affected runtime family still has at least one other missing host requirement after any single command is provided: ```text unblocks_when_available=partial_unblock_other_requirements_remain next_action=provide_missing_host_requirement execution_enabled=0 promotion_allowed=0 ``` - This plan does not install host commands, run probes, or relax promotion locks. It only makes the next host-runtime unblock actions and affected opt-in probes machine-readable. - Node inventory, browser smoke, and the boundary phase completion summary now require this host unblock plan. Batch 18: blocked runtime family host readiness - Complete as a generated per-family host readiness summary, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-family-host-readiness.tsv ``` - The artifact records one row per blocked runtime family with: - boundary class/kind/target; - required LinuxCNC runtime family; - missing host requirement count and list; - currently available prerequisite count and list; - opt-in native probe environment variable; - exact opt-in native probe command; - current probe and preflight status; - per-family host status. - Current rows remain: ```text L4-USER-M-PROCESS missing=halrun,halcmd,linuxcnc L4-TOOL-DB missing=linuxcnc,milltask,halcmd L4-PYTHON-REMAP missing=linuxcnc ``` - Current per-family status remains: ```text preflight_status=blocked_missing_host_runtime family_host_status=blocked_missing_host_requirements execution_enabled=0 promotion_allowed=0 ``` - This summary does not run probes and does not relax promotion locks. It gives each blocked family a single host-readiness row to check before running the already declared opt-in native probe command. - Node inventory, browser smoke, and the boundary phase completion summary now require this family host readiness summary. Batch 19: blocked runtime host readiness rollup - Complete as a generated aggregate host readiness rollup, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv ``` - The artifact reduces the per-family host readiness rows to one overall decision for blocked runtime native probes: - total blocked runtime family count; - host-ready family count; - host-blocked family count; - blocked family list; - unique missing host requirement list; - ready opt-in command count/list; - blocked opt-in command list; - aggregate host readiness status. - Current aggregate state remains: ```text family_count=3 host_ready_family_count=0 host_blocked_family_count=3 missing_host_requirements=halcmd,halrun,linuxcnc,milltask ready_opt_in_command_count=0 ready_opt_in_commands=- host_readiness_status=host_blocked_for_all_opt_in_native_probes execution_enabled=0 promotion_allowed=0 ``` - The rollup does not run probes and does not relax promotion locks. It gives the browser, Node inventory, and future automation one single non-promoting answer: this host is not ready to run any blocked runtime opt-in native probe. - Node inventory, browser smoke, and the boundary phase completion summary now require this host readiness rollup. Batch 20: blocked runtime opt-in probe dispatch plan - Complete as a generated per-probe host dispatch plan, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-plan.tsv ``` - The artifact turns the family host-readiness rows and aggregate host readiness rollup into one row per blocked runtime opt-in native probe, with: - boundary class/kind/target; - opt-in environment variable; - exact opt-in native probe command; - per-family host status; - missing host requirements; - aggregate host readiness status; - dispatch action and dispatch permission; - next action. - Current dispatch rows remain: ```text L4-USER-M-PROCESS host_action=skip_missing_host_requirements missing=halrun,halcmd,linuxcnc L4-TOOL-DB host_action=skip_missing_host_requirements missing=linuxcnc,milltask,halcmd L4-PYTHON-REMAP host_action=skip_missing_host_requirements missing=linuxcnc ``` - Current dispatch state remains: ```text host_readiness_status=host_blocked_for_all_opt_in_native_probes dispatch_allowed=0 execution_enabled=0 promotion_allowed=0 ``` - This dispatch plan does not run probes and does not relax promotion locks. It gives future automation a per-command action: skip each blocked runtime native probe until the named host requirements are present, then require the existing manual opt-in command before any promotion gates can move. - Node inventory, browser smoke, and the boundary phase completion summary now require this opt-in probe dispatch plan. Batch 21: blocked runtime opt-in probe dispatch rollup - Complete as a generated aggregate dispatch rollup, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-rollup.tsv ``` - The artifact reduces the per-probe dispatch plan rows to one overall dispatch switch for blocked runtime native probes: - total opt-in probe count; - dispatch-allowed probe count; - dispatch-blocked probe count; - blocked family list; - dispatch action set; - dispatch-allowed command list; - dispatch-blocked command list; - unique missing host requirement list; - aggregate dispatch status. - Current aggregate dispatch state remains: ```text probe_count=3 dispatch_allowed_count=0 dispatch_blocked_count=3 dispatch_actions=skip_missing_host_requirements dispatch_allowed_commands=- missing_host_requirements=halcmd,halrun,linuxcnc,milltask dispatch_status=dispatch_blocked_for_all_opt_in_native_probes execution_enabled=0 promotion_allowed=0 ``` - The rollup does not run probes and does not relax promotion locks. It gives browser smoke, Node inventory, and future automation a single non-promoting dispatch answer: no blocked runtime opt-in native probe may run on this host. - Node inventory, browser smoke, and the boundary phase completion summary now require this opt-in probe dispatch rollup. Batch 22: blocked runtime opt-in probe skip evidence contract - Complete as a generated per-probe skip/evidence contract, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-contract.tsv ``` - The artifact joins the opt-in probe dispatch plan with the native pass evidence contract so each currently skipped probe records: - boundary class/kind/target; - runtime probe id; - opt-in environment variable; - exact opt-in native probe command; - host dispatch action; - skip reason; - missing host requirements; - current probe status; - whether native pass evidence is required now; - observed native evidence readiness; - skip/evidence status. - Current skip/evidence rows remain: ```text L4-USER-M-PROCESS skip_reason=missing_host_requirements missing=halrun,halcmd,linuxcnc L4-TOOL-DB skip_reason=missing_host_requirements missing=linuxcnc,milltask,halcmd L4-PYTHON-REMAP skip_reason=missing_host_requirements missing=linuxcnc ``` - Current evidence state remains: ```text current_probe_status=skipped_missing_host_runtime evidence_required_now=0 observed_evidence_ready=0 native_evidence_status=pending_until_native_pass skip_evidence_status=skip_valid_until_host_requirements_available execution_enabled=0 promotion_allowed=0 ``` - This contract does not run probes and does not relax promotion locks. It makes the non-executed state explicit: skipped opt-in native probes do not satisfy native pass evidence until host requirements are present and the existing manual opt-in probe command passes. - Node inventory, browser smoke, and the boundary phase completion summary now require this opt-in probe skip evidence contract. Batch 23: blocked runtime opt-in probe skip evidence rollup - Complete as a generated aggregate skip/evidence rollup, still blocked for execution and promotion on this host. - Generated artifact: ```text wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv ``` - The artifact reduces the per-probe skip/evidence contract rows to one overall native evidence acceptance state for blocked runtime opt-in probes: - total opt-in probe count; - skipped probe count; - current evidence-required count; - observed evidence-ready count; - skipped family list; - skip reason list; - unique missing host requirement list; - current probe status list; - native evidence status list; - skip/evidence status list; - aggregate evidence rollup status. - Current aggregate skip/evidence state remains: ```text probe_count=3 skip_count=3 evidence_required_now_count=0 observed_evidence_ready_count=0 skip_reasons=missing_host_requirements missing_host_requirements=halcmd,halrun,linuxcnc,milltask current_probe_statuses=skipped_missing_host_runtime native_evidence_statuses=pending_until_native_pass skip_evidence_statuses=skip_valid_until_host_requirements_available evidence_rollup_status=no_native_pass_evidence_accepted_while_host_blocked execution_enabled=0 promotion_allowed=0 ``` - The rollup does not run probes and does not relax promotion locks. It gives browser smoke, Node inventory, and future automation a single non-promoting evidence answer: no native pass evidence is accepted while every blocked runtime opt-in probe is skipped for missing host requirements. - Node inventory, browser smoke, and the boundary phase completion summary now require this opt-in probe skip evidence rollup. Current next implementation recommendations Generated recommendation source: ```text wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.tsv ``` 1. Implement and run the LinuxCNC-owned millturn `M128/M129` HAL/Tcl state runtime probe after a host runtime with `tclsh`, `halrun`, `halcmd`, and `linuxcnc` is available. Keep the row blocked until the native state probe passes and Node/browser coverage can prove a narrow standalone boundary without full-process claims. 2. Implement and run the tool DB protocol probe after `tool-db-process-native-runtime-probe-gate.tsv` reports `runtime_ready=1` with `python3`, `linuxcnc`, `milltask`, and `halcmd` available. The proof must cover v2.1 handshake, `g`, `p`, `l`, `u`, state changes, and persistence before `axis/db_demo/base.ngc` can move out of `L4-TOOL-DB`. 3. Implement the minimal Python remap lifecycle proof for `axis/remap/stop-lookahead` after the new native runtime probe gate reports `runtime_ready=1` with both `python3` and `linuxcnc` available. Keep all Python-remap families blocked until the LinuxCNC Python runtime lifecycle is proven without JavaScript CNC semantics. Validation gates Run after each batch: ```bash wasm-port/tests/wasm/node/verify_sim_configs_wasm.sh wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh wasm-port/tests/browser/verify_interp_browser.sh wasm-port/tests/host/verify_host_smokes.sh wasm-port/tools/verify_vendor_sync.sh wasm-port/tools/verify_no_standalone_cnc_semantics.sh ``` Completion criteria for this boundary phase - Every vendored sim-config INI used by Node inventory has a machine-readable runtime-boundary report. - Hard blocked rows have a dependency-backed reason rather than path-only classification. - Safe representatives can declare HAL/UI process dependencies without being mislabeled as full-process coverage. - No blocked family is promoted until a LinuxCNC-owned runtime boundary exists and is validated native, Node, and browser where appropriate.