Files
cnc_wams/wasm-port/docs/sim-configs-coverage-matrix.md

631 lines
69 KiB
Markdown

# 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` | `-` | `-` | `-` | non-main macro/load fixture diagnostics evidence is now required by virtual HAL release validation through the owning `eoffsets.ini` NGCGUI declaration; not promoted as a standalone browser main program |
| `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` | `-` | `-` | `-` | `-` | `-` | non-main macro/load fixture diagnostics evidence is now required by virtual HAL release validation and paired with `rcone_demo.ngc`; not promoted as a standalone browser main program |
| `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; virtual HAL promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `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; virtual HAL promotion candidate gate now exports explicit browser diagnostics evidence paired with the `puma_cube.ngc` representative while inventory baseline remains unchanged |
| `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 allow Node inventory coverage; virtual HAL promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `qtdragon/qtdragon_xyz/on_abort.ngc` | `qtdragon/qtdragon_xyz` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table allow Node inventory coverage; QtDragon family promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `qtdragon/qtdragon_xyz45/on_abort.ngc` | `qtdragon/qtdragon_xyz45` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table allow Node inventory coverage; QtDragon family promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc` | `qtdragon_hd/qtdragon_hd_xyz` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table allow Node inventory coverage; QtDragon family promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc` | `qtdragon_hd/qtdragon_hd_z_compensation` | `main` | `PASS` | `-` | `-` | `INV` | `-` | `-` | vendored INI/tool-table allow Node inventory coverage; QtDragon family promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `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 allow Node inventory coverage; QtDragon family promotion candidate gate now exports explicit browser diagnostics evidence while inventory baseline remains unchanged |
| `woodpecker/on_abort.ngc` | `woodpecker` | `main` | `PASS` | `-` | `-` | `REP` | `REP` | `-` | Layer 4 deterministic on_abort class representative now covered |