# Sim Configs Coverage Matrix This matrix maps every current `wasm-port/tests/native/verify_sim_configs.sh` entry to its native classification and current Layer 3/4 coverage status. It is the tracked review surface for `linuxcnc/configs/sim` inventory; the native harness also emits machine-readable artifacts for automation. Current baseline: - Source file: `wasm-port/build/native/sim-configs/summary.tsv` - Generated class summary: `wasm-port/build/native/sim-configs/class-summary.tsv` - Generated path matrix: `wasm-port/build/native/sim-configs/path-matrix.tsv` - Total records: `159` - Native result: `pass 151`, `expected_fail 8`, `unexpected_fail 0` - Current Layer 4 representative subset: `axis/foam`, `axis/geometry`, `axis/external_offsets`, `axis/gladevcp`, `woodpecker/on_abort.ngc`, bridge-mill `5axisgui.ngc`, TDR/TRT five-axis switchkins demos, `melfa-sim`, and `puma_cube.ngc` - `wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.mjs` checks that this tracked matrix and generated `path-matrix.tsv` contain the same 159 paths as native `summary.tsv` before running Node inventory. - Node inventory artifact: `wasm-port/build/wasm/sim-configs-inventory/summary.tsv` - Node skip/block artifact: `wasm-port/build/wasm/sim-configs-inventory/skip-summary.tsv` - Node runtime-boundary artifact: `wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv` - Node INI runtime-boundary artifact: `wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv` - Node blocked-dependency artifact: `wasm-port/build/wasm/sim-configs-inventory/blocked-dependency-summary.tsv` - Node full-process boundary design artifact: `wasm-port/build/wasm/sim-configs-inventory/full-process-boundary-summary.tsv` - Node user-M process boundary design artifact: `wasm-port/build/wasm/sim-configs-inventory/user-m-process-boundary-summary.tsv` - Node user-M process transition contract artifact: `wasm-port/build/wasm/sim-configs-inventory/user-m-process-transition-plan.tsv` - Node tool DB process boundary design artifact: `wasm-port/build/wasm/sim-configs-inventory/tool-db-process-boundary-summary.tsv` - Node tool DB process transaction contract artifact: `wasm-port/build/wasm/sim-configs-inventory/tool-db-process-transaction-plan.tsv` - Node tool DB native runtime probe gate artifact: `wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-runtime-probe-gate.tsv` - Node Python-remap boundary inventory artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-boundary-summary.tsv` - Node Python-remap family inventory artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-family-summary.tsv` - Node Python-remap runtime contract artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-runtime-contract.tsv` - Node Python-remap native runtime readiness artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-readiness.tsv` - Node Python-remap native runtime probe gate artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-probe-gate.tsv` - Node Python-remap native runtime state-plan artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-state-plan.tsv` - Node Python-remap native runtime fixture-plan artifact: `wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-fixture-plan.tsv` - Node runtime-boundary contract summary artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-contract-summary.tsv` - Node boundary-phase completion artifact: `wasm-port/build/wasm/sim-configs-inventory/boundary-phase-completion-summary.tsv` - Node native runtime probe execution-plan artifact: `wasm-port/build/wasm/sim-configs-inventory/native-runtime-probe-execution-plan.tsv` - Node next-boundary worklist artifact: `wasm-port/build/wasm/sim-configs-inventory/next-boundary-worklist.tsv` - Node next-boundary recommendation artifact: `wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.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: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv` - Node blocked-runtime host preflight artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-preflight.tsv` - Node blocked-runtime host requirement summary artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-requirement-summary.tsv` - Node blocked-runtime host unblock plan artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-unblock-plan.tsv` - Node blocked-runtime family host readiness artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-family-host-readiness.tsv` - Node blocked-runtime aggregate host readiness artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv` - Node blocked-runtime opt-in probe dispatch plan artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-plan.tsv` - Node blocked-runtime opt-in probe dispatch rollup artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-rollup.tsv` - Node blocked-runtime opt-in probe skip/evidence contract artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-contract.tsv` - Node blocked-runtime opt-in probe skip/evidence rollup artifact: `wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv` - Current Node inventory: `executed 28`, `passed 28`, `skipped 131`, `unexpected_fail 0` - Current Node skip/block counts: `ASSET-ONLY 65`, `L4-PYTHON-REMAP 53`, `L4-TOOL-DB 1`, `L4-USER-M-PROCESS 1`, `NON_MAIN_CLASS 10`, `UPSTREAM-DEMO 1` Legend: - `Layer 3`: `SIM-*` means dedicated native runtime probe coverage; `5AX-EXEC` means native five-axis remap execution coverage; `-` means no dedicated runtime probe yet. - `Layer 4 Node/Browser`: `REP` means the current representative smoke covers this exact program; `INV` means the Node inventory runner covers the exact program; `N/A` means the row is a subroutine asset and should not be judged as a standalone browser main program; `-` means the row is not individually promoted at that layer and must be interpreted with the row's blocked or class-coverage note. - `Blocked`: current hard blocked dependency or non-target classification for future inventory work. `ASSET-ONLY` means the row is not a browser/main-program target. `L4-PYTHON-REMAP` means native `rs274` coverage exists but Node/browser full inventory is blocked on an intentional Python-remap runtime boundary decision. `UPSTREAM-DEMO` means the file is a preserved upstream expected-failure edge. - `boundary-summary.tsv`: one row per native inventory path. It records the matrix blocked kind, the SDK classifier's recommended hard block when an INI is vendored, declared HAL/UI/HALUI/Python process dependencies, tool database declarations, user-M process codes seen in the execution text, and which of those user-M codes are not staged by vendored `USER_M_PATH` files. Python is split into total process dependency, UI/DB process dependency, and Python remap runtime dependency so safe UI representatives such as `gladevcp` are not mislabeled as Python-remap coverage. Rows whose INI has not been vendored yet use `recommended_blocked=UNAVAILABLE` and keep their tracked matrix policy as the source of truth until the relevant boundary inventory batch vendors the missing context. - `ini-boundary-summary.tsv`: one row per unique INI referenced by the native inventory. It aggregates path-level boundary reports so vendored INIs have a direct machine-readable `report_available=1` check and hard block recommendations can be audited at INI granularity. - `blocked-dependency-summary.tsv`: one row per hard blocked `L4-PYTHON-REMAP`, `L4-TOOL-DB`, and `L4-USER-M-PROCESS` path. It reads the source `linuxcnc/configs/sim` INI files without vendoring or executing those families, records Python modules, remap/prolog/epilog function ownership, NGC remap subpaths, HAL/UI/HALUI process declarations, `DB_PROGRAM`, and tool database protocol evidence, plus external user-M execution codes, their process script files, and process side-effect evidence. The `linuxcnc_owner` field records the LinuxCNC source/config files that own the blocked behavior, and keeps those rows blocked until a LinuxCNC-owned runtime boundary is designed. - `full-process-boundary-summary.tsv`: one row for each designed-but-still-blocked non-Python full-process boundary. It currently covers `axis/db_demo/base.ngc` and `axis/vismach/millturn/example.ngc`, records LinuxCNC runtime owner evidence, records required native/Node/browser proof, and requires `execution_enabled=0`. - `user-m-process-boundary-summary.tsv`: one row for each designed-but-still-blocked external user-M process boundary. It currently records the `millturn` `M128`/`M129` process files, remap call chain, kinstype guards, and source-traceable `ini.[xyz].*` HAL pin state targets, while requiring `execution_enabled=0` and `promotion_allowed=0`. - `user-m-process-transition-plan.tsv`: the pending non-executing transition contract for the `millturn` user-M boundary. It binds `M428` to `M128` and `M429` to `M129`, records switchkins output/target, active G5x work offset, guard pin, state mode, and expected `ini.[xyz].*` outputs, and still requires `execution_enabled=0` and `promotion_allowed=0`. - `user-m-process-native-transition-alignment.tsv`: the native source alignment for the two `millturn` transition rows. It proves the generated `M428/M429` transition contract still matches the native probe stdout for switchkins output/target, G5x, offset pocket, and `M428 -> M128` / `M429 -> M129` calls, while remaining pending and non-executing. - `user-m-process-native-runtime-state-plan.tsv`: the pending native runnable state-probe contract for `millturn`. It records the required LinuxCNC task/HAL/Tcl user-M runtime, the HAL/INI environment, and exact `ini.[xyz].*` values that a future runtime probe must observe after the transitions, while keeping `execution_enabled=0` and `promotion_allowed=0`. - `user-m-process-native-runtime-readiness.tsv`: the host capability gate for that future native probe. It records whether `tclsh`, `halrun`, `halcmd`, and `linuxcnc` are available on PATH and keeps the boundary pending and non-promotable regardless of host readiness. - `user-m-process-native-runtime-probe-gate.tsv`: the generated execution gate for that future native probe. It records per-transition runtime readiness, missing host commands, source-proof readiness, and the pending gate status. The native `probe_millturn_user_m_runtime.sh` entry point reports `skipped_missing_host_runtime` on hosts without the full LinuxCNC HAL/Tcl runtime, `ready_disabled_by_default` when the host is ready but the guarded runtime probe is not explicitly enabled, or `runtime_state_probe_passed` when `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1` proves the LinuxCNC-owned `M128`/`M129` Tcl scripts update the expected `ini.[xyz].*` HAL pins. command set and does not enable execution or promotion. - `tool-db-process-boundary-summary.tsv`: one row for each designed-but-still-blocked tool database process boundary. It currently records `db_nonran.py`, LinuxCNC tooldata protocol messages, DB program callbacks, nonrandom tool database state targets, and runtime owner evidence, while requiring `execution_enabled=0` and `promotion_allowed=0`. - `tool-db-process-transaction-plan.tsv`: the pending non-executing transaction contract for the `db_demo` tool database boundary. It orders startup handshake, get-all, spindle load notify, tool offset notify, and spindle unload notify steps, binds each protocol message to the expected `db.py` callback and state targets, and still requires `execution_enabled=0` and `promotion_allowed=0`. - `tool-db-process-native-runtime-readiness.tsv`: the host capability gate for the guarded native DB process protocol probe. It records whether `python3`, `linuxcnc`, `milltask`, `halcmd`, the configured `db_nonran.py`, and LinuxCNC's `linuxcnc.so` / `tooldb.py` Python modules are available, while keeping the DB boundary pending and non-promotable. The native `probe_tool_db_runtime.sh` entry point reports `skipped_missing_host_runtime` when the host runtime is unavailable, `ready_disabled_by_default` when it is available but not explicitly enabled, or `runtime_protocol_probe_passed` when `ENABLE_TOOL_DB_RUNTIME_PROBE=1` proves the LinuxCNC-owned `DB_PROGRAM` `v2.1`/`g`/`p`/`l`/`u` protocol, nonrandom state updates, and flat-file persistence. - `tool-db-process-native-runtime-probe-gate.tsv`: the execution gate for the guarded native DB process protocol probe. It combines source proof and host readiness, records missing runtime requirements, and keeps the DB boundary non-executing and non-promotable until the manual opt-in probe is allowed. - `python-remap-boundary-summary.tsv`: one row for each `L4-PYTHON-REMAP` path. It records Python modules, remap/prolog/epilog functions, NGC-only subpaths, HAL/UI/HALUI assumptions, the LinuxCNC Python owner set, LinuxCNC Python runtime owner evidence, and requires `execution_enabled=0`. - `python-remap-family-summary.tsv`: one row per blocked Python-remap runtime family. It aggregates row and INI counts plus Python module, remap/prolog/epilog, NGC-only subpath, Python runtime owner evidence, HAL/UI/HALUI, and `execution_enabled=0` evidence without vendoring or executing those families. - `python-remap-runtime-contract.tsv`: one row per blocked Python-remap runtime family. It records LinuxCNC-owned Python runtime phases, Python modules, remap/prolog/epilog callables, NGC-only subpaths, HAL/UI/HALUI assumptions, native/Node/browser proof requirements, and keeps `proof_status=pending`, `execution_enabled=0`, and `promotion_allowed=0`. - `python-remap-native-runtime-readiness.tsv`: the host/source capability gate for guarded native Python-remap runtime probes. It records `python3`, `linuxcnc`, LinuxCNC's Python interpreter/plugin owner source files, and the configured Python modules for each blocked family, while keeping every row pending, non-executing, and non-promotable. - `python-remap-native-runtime-probe-gate.tsv`: the execution gate for the selected Python remap lifecycle fixture. It combines source proof and host readiness, records missing runtime requirements, and keeps Python remap execution blocked until the LinuxCNC host runtime and dispatch gate allow a manual opt-in probe. - `python-remap-native-runtime-state-plan.tsv`: one row per blocked Python-remap family. It records the runtime phases, modules, callables, NGC-only subpaths, process assumptions, readiness counts, source-alignment inputs, and exact future native state-probe targets while keeping every row pending, non-executing, and non-promotable. - `python-remap-native-runtime-fixture-plan.tsv`: the first non-executing Python runtime fixture plan. It selects `axis/remap/stop-lookahead/nc_files` as the minimal lifecycle fixture because it has Python modules and runtime phases without Python callable or NGC-only subpath complexity, and keeps execution/promotion disabled. The native `probe_python_remap_runtime.sh` entry point reports `skipped_missing_host_runtime` without the host runtime, `ready_disabled_by_default` when the host is ready but the probe is not explicitly enabled, or `runtime_lifecycle_probe_passed` when `ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1` proves the `demo.ini` path/toplevel import, `queuebuster` callable lookup, generator return, and first `INTERP_EXECUTE_FINISH` yield. - `runtime-boundary-contract-summary.tsv`: one row per blocked runtime boundary class. It unifies the user-M transition contract, tool DB transaction contract, and Python runtime contract with their native-alignment artifact, and requires every contract row to remain pending with execution and promotion disabled. - `boundary-phase-completion-summary.tsv`: one row per boundary-phase completion criterion. It requires vendored INI boundary reports, dependency evidence for hard blocks, safe HAL/UI representative coverage, blocked families remaining skipped/non-representative with execution disabled, and LinuxCNC-owned runtime proof fields for user-M, tool DB, and Python runtime blockers. When native source proof is available, it also requires that proof to be consumed by generated worklist/native proof-gate rows without enabling execution or promotion. It also records WASM sim-config inventory artifact documentation coverage and native generated TSV documentation coverage as explicit completion criteria. It also records the blocked runtime worklist/recommendation consistency guard, the blocked runtime promotion gate consistency guard, the blocked runtime host requirement consistency guard, the blocked runtime host/dispatch/skip-evidence rollup consistency guard, the blocked runtime opt-in cross-artifact consistency guard, the native source proof/runtime probe consistency guard, and the runtime family contract/alignment consistency guard as explicit completion criteria. The family contract/alignment check keeps the user-M, tool DB, and Python contract/readiness/probe artifacts aligned with the aggregate runtime contract and native-alignment summaries without enabling execution or promotion. Browser smoke mirrors this completion-summary criterion list and fails on criterion drift, so browser-side validation sees the same boundary-phase gate set as the Node inventory without executing blocked runtime probes. It also checks selected completion-summary counts against the blocked-runtime and family-specific artifact rows already loaded by browser smoke, so the machine-readable completion summary cannot claim a different row count from the visible gate artifacts. The Node coverage gate also checks that browser smoke keeps the same generated WASM/native artifact tokens, fixed-count guards, duplicate-free guards, fetchability/header guards, documentation-missing guards, completion count-parity guards, review-document fetches, and native skipped-artifact empty allowance as the Node inventory gate. It also checks that `runtime-boundary-contract-summary.tsv` and `runtime-boundary-native-alignment-summary.tsv` agree on boundary kind, runtime alignment artifact, alignment row count, and disabled execution and promotion state. It also cross-checks user-M, tool DB, and Python family-specific contract/readiness/probe artifacts against `runtime-boundary-contract-summary.tsv` so browser validation sees the same runtime-family contract alignment as Node inventory without executing blocked runtime processes. Browser smoke also cross-checks `native-proof-alignment-summary.tsv`, `native-runtime-probe-summary.tsv`, and `runtime-probe-gate-alignment.tsv` for source-proof readiness, runtime readiness, required native proof, target, and disabled execution/promotion parity. It also cross-checks the native runtime probe execution plan, pass evidence contract, host preflight, dispatch plan, and skip-evidence contract so the browser smoke sees the same host-blocked opt-in command, missing requirements, evidence status, and disabled execution/promotion state as the Node inventory. It also cross-checks the host-readiness, dispatch, and skip-evidence rollups for counts, blocked families, missing requirements, blocked commands, host/dispatch/evidence status, and disabled execution/promotion parity. It also cross-checks the promotion lock, promotion readiness, promotion blockers, post-native-pass gates, native evidence acceptance gate, and pass evidence contract so browser validation sees the same locked promotion state as Node inventory. It also cross-checks recommendations, execution plans, host preflight, family readiness, dispatch plans, skip-evidence contracts, and evidence acceptance gates so browser validation sees the same opt-in command, proof, missing requirement, and disabled execution/promotion state as Node inventory. It also checks recommendation artifact row counts against the generated user-M probe-gate, tool DB probe-gate, and Python runtime-contract source rows, so priority handoffs cannot drift from the visible source artifacts. It also checks each recommendation primary artifact and source artifact list against the generated WASM inventory artifact set, including duplicate detection, primary-artifact traceability, and exact per-family source artifact sets. The Node coverage gate also verifies that browser smoke passes the `wasmArtifactNames` returned by artifact documentation coverage into this recommendation source-artifact coverage check. - `native-proof-alignment-summary.tsv`: one row per native source proof class. It aligns the native source proof summary with generated worklist/native proof-gate consumers for user-M, tool DB, and Python runtime blockers. - `next-boundary-worklist.tsv`: one row per next blocked runtime-boundary design target. It keeps execution and promotion disabled, records the LinuxCNC owner set and runtime owner evidence, records native, Node, and browser proof requirements, and names the next boundary-design action before any blocked family can be promoted. - `next-boundary-recommendations.tsv`: the generated priority queue for the next blocked runtime-boundary work. It currently ranks millturn `M128/M129` state proof, tool DB protocol proof, and Python remap lifecycle proof, while preserving active promotion locks and disabled execution. The Node inventory verifies exact per-family source artifact sets, duplicate-free source lists, primary-artifact traceability, and generated artifact existence for each recommendation. - `native-runtime-probe-execution-plan.tsv`: the guarded opt-in execution plan for blocked runtime native probes. It records the exact command, required native proof key, current runtime readiness, expected pass status, missing requirements, gate alignment, and promotion prerequisites. It is not a probe runner and does not promote rows. - `runtime-boundary-native-evidence-acceptance-gate.tsv`: one row per blocked runtime family deciding whether native pass evidence may be accepted. While probes are skipped for missing host requirements, evidence acceptance is blocked and Node/browser gates remain blocked. - `runtime-boundary-promotion-blockers.tsv`: the expanded blocker summary for non-ready promotions. Current rows record missing host runtime, native probe not passed, native evidence not ready, Node/browser gates incomplete, active promotion lock, and manual lock update required. - The Node inventory also performs a cross-artifact consistency guard across the blocked runtime opt-in target set. The guard requires the recommendations, execution plan, host preflight, family readiness, dispatch plan, skip/evidence contract, native evidence acceptance gate, promotion readiness, promotion blockers, and post-native-pass gates to agree on the target, proof keys, opt-in command, missing host requirements, active promotion lock, and disabled execution/promotion fields. - The Node inventory also checks documentation coverage for generated sim-config inventory TSVs. Every artifact emitted under `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 54-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 `build/native/` by relative path, including native source-proof, runtime-probe, `nc_files`, and sim-config baseline artifacts. The native generated TSV token list must remain the exact duplicate-free 8-token baseline, and every token plus the fixed-count, duplicate-free, fetchability, and empty-skipped allowance guards must also be listed by browser smoke. - Browser smoke mirrors this documentation coverage by fetching the current 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 `54` 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 exact compatibility, matrix, and full-process boundary review-document set used for the missing-reference checks, requires those checks to iterate `wasmArtifactNames` and `nativeArtifactTokens` against the joined `documentationText`, fetches generated WASM TSVs by artifact name, fetches native TSVs by relative artifact token, binds the documentation-coverage completion counts to the returned `wasmArtifactNames` and `nativeArtifactTokens` arrays, and keeps completion evidence reviewable when browser-side count parity is checked. Browser smoke also requires a non-empty TSV header, duplicate-free expected lists, and fixed artifact/token counts. This is documentation/artifact fetchability parity only and does not execute blocked runtime probes. The native `build/native/sim-configs/skipped.tsv` artifact may be empty when the native strict sim-config baseline has no skipped rows. - The Node inventory also checks native source proof consistency. Native source proof alignment rows, the native runtime probe summary, and runtime probe gate alignment must cover the same blocked classes, agree that source proof is ready, and keep execution and promotion disabled. - `runtime-boundary-host-preflight.tsv`: the host-facing preflight for the guarded blocked-runtime native probes. It records each blocked family, required host/runtime commands, opt-in environment variable, exact native probe command, current probe status, and keeps execution and promotion disabled. It does not run the probes. - `runtime-boundary-host-requirement-summary.tsv`: a normalized requirement table for the blocked runtime probes. It records each required host command or source/module, its availability, affected blocked families, affected opt-in probe environment variables, and whether the missing requirement currently blocks execution. - `runtime-boundary-host-unblock-plan.tsv`: the filtered plan for unavailable host requirements. It records the affected blocked families, affected opt-in commands, and remaining missing requirements after each single requirement is provided. It is advisory only and does not install anything or allow promotion. - `runtime-boundary-family-host-readiness.tsv`: one host-readiness row per blocked runtime family. It records missing requirements, available prerequisites, the opt-in command, current probe/preflight status, and keeps `execution_enabled=0` and `promotion_allowed=0`. - Browser smoke cross-checks the host requirement summary, unblock plan, family host readiness, and host preflight rows. The check verifies unavailable requirement ownership, available prerequisite ownership, affected opt-in environments, and exact probe command traceability while remaining non-executing and non-promoting. - `runtime-boundary-host-readiness-rollup.tsv`: the aggregate host-readiness decision for all blocked runtime families. On this host it records zero ready families, missing `halcmd`, `halrun`, `linuxcnc`, and `milltask`, and `host_blocked_for_all_opt_in_native_probes`. - `runtime-boundary-opt-in-probe-dispatch-plan.tsv`: one dispatch row per guarded native runtime probe. It turns host readiness into a dispatch action and remains non-promoting; a dispatchable row only means the manual opt-in native probe may be attempted on a ready host. - `runtime-boundary-opt-in-probe-dispatch-rollup.tsv`: the aggregate dispatch switch for blocked runtime probes. Current rows are blocked for missing host requirements, so no opt-in native probe is dispatchable on this host. - `runtime-boundary-opt-in-probe-skip-evidence-contract.tsv`: the per-probe skip/evidence contract. It records the skip reason, missing host requirements, current probe status, whether native pass evidence is required now, and keeps every skipped probe non-executing and non-promoting. - `runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv`: the aggregate evidence decision for skipped opt-in probes. While all probes are skipped for missing host requirements, no native pass evidence is accepted. ## Summary | Class | Count | | --- | --- | | `main` | `48` | | `macro_load` | `46` | | `remap_subroutine` | `65` | ## Family Summary | Family | Count | | --- | --- | | `axis/db_demo` | `1` | | `axis/external_offsets` | `6` | | `axis/foam` | `1` | | `axis/geometry` | `1` | | `axis/gladevcp` | `1` | | `axis/laser` | `3` | | `axis/lathe-fanucy` | `1` | | `axis/remap` | `29` | | `axis/rose_engine` | `2` | | `axis/vismach` | `57` | | `gmoccapy/lathe_configs` | `8` | | `gmoccapy/macros` | `25` | | `gmoccapy/non_trivial_kinematics` | `5` | | `gscreen/industrial_lathe_wear` | `1` | | `gscreen/silverdragon` | `4` | | `qtaxis/non-trivial` | `3` | | `qtdragon/qtdragon_multi_joint` | `1` | | `qtdragon/qtdragon_xyz` | `1` | | `qtdragon/qtdragon_xyz45` | `1` | | `qtdragon_hd/qtdragon_hd_xyz` | `1` | | `qtdragon_hd/qtdragon_hd_z_compensation` | `1` | | `qtvcp_screens/industrial_lathe_wear` | `1` | | `qtvcp_screens/non-trivial` | `3` | | `qtvcp_screens/qtdragon` | `1` | | `woodpecker` | `1` | ## Program Matrix | Path | Family | Class | Native | Expected Failure | Layer 3 | Layer 4 Node | Layer 4 Browser | Blocked | Notes | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `axis/db_demo/base.ngc` | `axis/db_demo` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-TOOL-DB` | native pass, but Node/browser inventory is blocked by the LinuxCNC tool-database process boundary declared by `[EMCIO]DB_PROGRAM` | | `axis/external_offsets/circles.ngc` | `axis/external_offsets` | `macro_load` | `PASS` | `-` | `SIM-EOFF` | `REP` | `REP` | `-` | Layer 4 macro-only class representative now covered through wrapped execution with native staging inputs | | `axis/external_offsets/dyn_demo.ngc` | `axis/external_offsets` | `main` | `FAIL` | `user-m-code-M111` | `SIM-EOFF` | `REP` | `REP` | `-` | Layer 2 expected-fail; M111 runtime edge covered | | `axis/external_offsets/eoffsets.ngc` | `axis/external_offsets` | `main` | `FAIL` | `user-m-code-M111` | `SIM-EOFF` | `REP` | `REP` | `-` | Layer 2 expected-fail; M111 runtime edge covered | | `axis/external_offsets/jwp_z.ngc` | `axis/external_offsets` | `main` | `FAIL` | `user-m-code-M111` | `SIM-EOFF` | `REP` | `REP` | `-` | Layer 2 expected-fail; M111 runtime edge covered | | `axis/external_offsets/opa_demo.ngc` | `axis/external_offsets` | `main` | `FAIL` | `user-m-code-M111` | `SIM-EOFF` | `REP` | `REP` | `-` | Layer 2 expected-fail; M111 runtime edge covered | | `axis/external_offsets/queuebuster.ngc` | `axis/external_offsets` | `macro_load` | `PASS` | `-` | `SIM-EOFF` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` | | `axis/foam/foam.ngc` | `axis/foam` | `main` | `FAIL` | `ini-axis-mask-UV` | `SIM-FOAM` | `REP` | `REP` | `-` | Layer 2 expected-fail; Layer 3/4 runtime edge covered | | `axis/geometry/xyzc.ngc` | `axis/geometry` | `main` | `FAIL` | `user-m-code-M110` | `SIM-XYZC` | `REP` | `REP` | `-` | Layer 2 expected-fail; M110 runtime edge covered | | `axis/gladevcp/probe.ngc` | `axis/gladevcp` | `main` | `PASS` | `-` | `-` | `REP` | `REP` | `-` | plain INI/tool-table main-program class representative covered in Node and browser through vendored staging inputs | | `axis/laser/raster_test.ngc` | `axis/laser` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `axis/laser/vector_test.ngc` | `axis/laser` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `axis/laser/vector_test2.ngc` | `axis/laser` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `axis/lathe-fanucy/toolchange.ngc` | `axis/lathe-fanucy` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `axis/remap/cycle/nc_files/examples.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python remap/prolog/epilog runtime boundaries; remap subroutine assets remain `ASSET-ONLY` | | `axis/remap/cycle/nc_subroutines/g843.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_files/examples.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python prolog/epilog remap runtime boundaries; remap subroutine assets remain `ASSET-ONLY` | | `axis/remap/extend-builtins/nc_subroutines/change.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m0.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m1.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m60.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m7.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m8.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/extend_m9.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/prepare.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/setfeed.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/setspeed.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/extend-builtins/nc_subroutines/settool.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/getting-started/nc_files/examples.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python remap handlers such as `G88.1`; remap subroutine assets remain `ASSET-ONLY` | | `axis/remap/getting-started/nc_subroutines/change_min.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/getting-started/nc_subroutines/m400.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/getting-started/nc_subroutines/m410.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/getting-started/nc_subroutines/prepare_min.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/manual-toolchange-with-tool-length-switch/nc_files/tcdemo.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python tool-change prolog/epilog runtime boundaries; remap subroutine assets remain `ASSET-ONLY` | | `axis/remap/manual-toolchange-with-tool-length-switch/nc_subroutines/manual_change.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/manual-toolchange-with-tool-length-switch/nc_subroutines/on_abort.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/manual-toolchange-with-tool-length-switch/nc_subroutines/restore.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/rack-toolchange/nc_files/tcdemo.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python tool-change prolog/epilog runtime boundaries; remap subroutine assets remain `ASSET-ONLY` | | `axis/remap/rack-toolchange/nc_subroutines/on_abort.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/rack-toolchange/nc_subroutines/rack_change.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/rack-toolchange/nc_subroutines/tool_getput_move.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/rack-toolchange/nc_subroutines/tool_holder_clear_move.ngc` | `axis/remap` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/remap/stop-lookahead/nc_files/examples.ngc` | `axis/remap` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python `queuebuster` remap runtime boundaries; remap subroutine assets remain `ASSET-ONLY` | | `axis/rose_engine/rcone.ngc` | `axis/rose_engine` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `axis/rose_engine/rcone_demo.ngc` | `axis/rose_engine` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | Node inventory coverage uses the native harness-selected `axis/sim.tbl` fallback staged at the INI-declared tool-table path; browser class coverage is represented by other plain INI/tool-table samples | | `axis/vismach/5axis/bridgemill/5axisgui.ngc` | `axis/vismach` | `main` | `FAIL` | `ini-axis-mask-W` | `SIM-BRIDGE,5AX-EXEC` | `REP` | `REP` | `-` | Layer 2 expected-fail; W-axis and remap runtime edge covered | | `axis/vismach/5axis/bridgemill/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/bridgemill/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/bridgemill/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-dual-rotary/demos/xyzab-tdr-demo.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TDR five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-dual-rotary/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-dual-rotary/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_2.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_3.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `5AX-EXEC` | `REP` | `REP` | `-` | TRT five-axis remap class covered in Node and browser through vendored INI, tool-table, remap-subroutine, and demo staging | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/centering.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_ac.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_bc.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/xyzac_switchkins_sub.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary-tilting/remap_subs/xyzbc_switchkins_sub.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `5AX-EXEC` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/circular_pocket.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass, but Layer 4 full inventory is blocked on Python remap entry points such as g682, g69_core, and g53x_core | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass, but Layer 4 full inventory is blocked on Python remap entry points such as g682, g69_core, and g53x_core | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_back_and_forth.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass, but Layer 4 full inventory is blocked on Python remap entry points such as g682, g69_core, and g53x_core | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/incremental_repetition_g533.ngc` | `axis/vismach` | `main` | `FAIL` | `upstream-demo-missing-motion-gcode` | `-` | `-` | `-` | `UPSTREAM-DEMO` | preserve upstream demo failure; do not force PASS | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/simple_example.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass, but Layer 4 full inventory is blocked on Python remap entry points such as g682, g69_core, and g53x_core | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/demos/square.ngc` | `axis/vismach` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass, but Layer 4 full inventory is blocked on Python remap entry points such as g682, g69_core, and g53x_core | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g531remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g533remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g536remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/g69remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/on_abort_no_twp_reset.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/5axis/table-rotary_spindle-rotary-nutating/remap_subs/on_abort_with_twp_reset.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/VMC_toolchange/toolchange.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native baseline pass, but Layer 4 full inventory is blocked by Python tool-change prolog/epilog and full tool-change runtime boundaries | | `axis/vismach/hexapod-sim/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/hexapod-sim/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/hexapod-sim/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/melfa-sim/example.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `REP` | `REP` | `-` | robot/Genser-style remap machine class representative covered in Node and browser through vendored INI, tool-table, and remap-subroutine staging | | `axis/vismach/melfa-sim/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/melfa-sim/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/melfa-sim/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/millturn/example.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-USER-M-PROCESS` | native pass, but Node/browser inventory is blocked by external `USER_M_PATH` process M-codes `M128` and `M129` rather than the deterministic `M110`/`M111` boundary already modeled by the standalone runtime | | `axis/vismach/millturn/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/millturn/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/puma/puma_cube.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `REP` | `REP` | `-` | PUMA kinematics/remap machine class representative covered in Node and browser through vendored INI, tool-table, and remap-subroutine staging | | `axis/vismach/puma/puma_seam_weld.ngc` | `axis/vismach` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | Node inventory covered with the same vendored puma machine context; browser class coverage is represented by `puma_cube.ngc` | | `axis/vismach/puma/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/puma/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/puma/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/scara/remap_subs/428remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/scara/remap_subs/429remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `axis/vismach/scara/remap_subs/430remap.ngc` | `axis/vismach` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `gmoccapy/lathe_configs/boring.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/chamfer.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/drilling.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/facing.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/grooving.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/radius.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/threading.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/lathe_configs/turning.ngc` | `gmoccapy/lathe_configs` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/change.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/change_g43.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/go_to_position.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/halo_world.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/i_am_lost.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/increment.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/jog_around.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_0.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_1.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_10.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_11.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_12.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_13.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_14.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_15.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_2.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_3.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_4.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_5.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_6.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_7.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_8.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/macro_9.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/on_abort.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/macros/settool_g43.ngc` | `gmoccapy/macros` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/boat-xyzac.ngc` | `gmoccapy/non_trivial_kinematics` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/boat-xyzbc.ngc` | `gmoccapy/non_trivial_kinematics` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/impeller-7bl-xyzac.ngc` | `gmoccapy/non_trivial_kinematics` | `main` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/test-xyzac.ngc` | `gmoccapy/non_trivial_kinematics` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/test-xyzbc.ngc` | `gmoccapy/non_trivial_kinematics` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `L4-PYTHON-REMAP` | native pass; Layer 4 is blocked until the Python-remap runtime boundary is deliberately designed | | `gscreen/industrial_lathe_wear/toolchange.ngc` | `gscreen/industrial_lathe_wear` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `gscreen/silverdragon/macros/auto_zref.ngc` | `gscreen/silverdragon` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `gscreen/silverdragon/macros/laserzero.ngc` | `gscreen/silverdragon` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `gscreen/silverdragon/macros/tool_sensor.ngc` | `gscreen/silverdragon` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `gscreen/silverdragon/macros/touch_plate.ngc` | `gscreen/silverdragon` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `qtaxis/non-trivial/scara/remap_subs/428remap.ngc` | `qtaxis/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtaxis/non-trivial/scara/remap_subs/429remap.ngc` | `qtaxis/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtaxis/non-trivial/scara/remap_subs/430remap.ngc` | `qtaxis/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtdragon/qtdragon_multi_joint/on_abort.ngc` | `qtdragon/qtdragon_multi_joint` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `qtdragon/qtdragon_xyz/on_abort.ngc` | `qtdragon/qtdragon_xyz` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `qtdragon/qtdragon_xyz45/on_abort.ngc` | `qtdragon/qtdragon_xyz45` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc` | `qtdragon_hd/qtdragon_hd_xyz` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc` | `qtdragon_hd/qtdragon_hd_z_compensation` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `qtvcp_screens/industrial_lathe_wear/toolchange.ngc` | `qtvcp_screens/industrial_lathe_wear` | `macro_load` | `PASS` | `-` | `-` | `-` | `-` | `-` | inventory-only macro/load path; macro_load class coverage is represented by `axis/external_offsets/circles.ngc` unless this family is deliberately promoted later | | `qtvcp_screens/non-trivial/scara/remap_subs/428remap.ngc` | `qtvcp_screens/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtvcp_screens/non-trivial/scara/remap_subs/429remap.ngc` | `qtvcp_screens/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtvcp_screens/non-trivial/scara/remap_subs/430remap.ngc` | `qtvcp_screens/non-trivial` | `remap_subroutine` | `PASS` | `-` | `-` | `N/A` | `N/A` | `ASSET-ONLY` | subroutine asset; validate by parse/remap path rather than standalone main-program execution | | `qtvcp_screens/qtdragon/on_abort.ngc` | `qtvcp_screens/qtdragon` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table now allow Node inventory coverage; browser representative still delegated to the shared `woodpecker/on_abort.ngc` class sample | | `woodpecker/on_abort.ngc` | `woodpecker` | `main` | `PASS` | `-` | `-` | `REP` | `REP` | `-` | Layer 4 deterministic on_abort class representative now covered |