Add blocked runtime gate review coverage

This commit is contained in:
2026-06-12 22:59:57 +08:00
parent 949d5d2756
commit dcab5eaf32
9 changed files with 12494 additions and 37 deletions

View File

@@ -141,14 +141,28 @@ The native harness also emits machine-readable derived artifacts without
changing the `summary.tsv` schema:
```text
wasm-port/build/native/source-probes.tsv
wasm-port/build/native/native-source-proof-summary.tsv
wasm-port/build/native/native-runtime-probe-summary.tsv
wasm-port/build/native/nc-files/summary.tsv
wasm-port/build/native/sim-configs/summary.tsv
wasm-port/build/native/sim-configs/class-summary.tsv
wasm-port/build/native/sim-configs/path-matrix.tsv
wasm-port/build/native/sim-configs/skipped.tsv
```
`class-summary.tsv` aggregates class/status/expected-failure counts.
`path-matrix.tsv` records each path, class, native status, expected-failure
reason, INI, tool table, runtime family, and blocked kind for CI and Node
inventory reconciliation.
`source-probes.tsv` records the native source-probe entry points used by
`verify_native_probes.sh`. `native-source-proof-summary.tsv` records
LinuxCNC-owned source proof for user-M process, tool DB process, and Python
remap runtime blockers without enabling execution or promotion.
`native-runtime-probe-summary.tsv` records the guarded native opt-in runtime
probe status and missing host requirements. `nc-files/summary.tsv` records the
Layer 1 native `nc_files` baseline, and `sim-configs/skipped.tsv` records the
Layer 2 native sim-config skipped or expected-skip accounting.
The Node inventory layer writes its own machine-readable artifacts:
@@ -163,19 +177,34 @@ wasm-port/build/wasm/sim-configs-inventory/user-m-process-state-targets.tsv
wasm-port/build/wasm/sim-configs-inventory/user-m-process-native-state-alignment.tsv
wasm-port/build/wasm/sim-configs-inventory/tool-db-process-protocol-gates.tsv
wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-protocol-alignment.tsv
wasm-port/build/wasm/sim-configs-inventory/tool-db-process-native-runtime-probe-gate.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-boundary-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-runtime-gates.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-alignment.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-readiness.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-probe-gate.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-state-plan.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-native-runtime-fixture-plan.tsv
wasm-port/build/wasm/sim-configs-inventory/python-remap-family-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/boundary-phase-completion-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/native-proof-alignment-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-native-alignment-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/native-runtime-probe-execution-plan.tsv
wasm-port/build/wasm/sim-configs-inventory/blocked-runtime-promotion-lock.tsv
wasm-port/build/wasm/sim-configs-inventory/next-boundary-worklist.tsv
wasm-port/build/wasm/sim-configs-inventory/next-boundary-recommendations.tsv
wasm-port/build/wasm/sim-configs-inventory/boundary-proof-gates.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-native-evidence-acceptance-gate.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-preflight.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-requirement-summary.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-unblock-plan.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-family-host-readiness.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-plan.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-rollup.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-contract.tsv
wasm-port/build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv
```
The current skip/block summary is `ASSET-ONLY=65`, `L4-PYTHON-REMAP=53`,
@@ -243,6 +272,133 @@ blocked dependency row, records the required native/Node/browser proof, and
keeps `execution_enabled=0` until the corresponding LinuxCNC-owned runtime
boundary exists. The tracked matrix and inventory guard also require those two
rows to remain non-representative in Node/browser until that proof exists.
`runtime-boundary-host-preflight.tsv` is the host-facing preflight for the
blocked runtime probes. It records each blocked family, the required LinuxCNC
runtime commands, the opt-in environment variable, the exact native probe
command, the current probe status, and keeps `execution_enabled=0` and
`promotion_allowed=0`. It does not run probes or relax promotion locks.
`runtime-boundary-host-requirement-summary.tsv` normalizes those preflight
requirements into one row per host command or source/module prerequisite, so
missing `halcmd`, `halrun`, `linuxcnc`, and `milltask` can be audited by the
blocked families they affect. `runtime-boundary-host-unblock-plan.tsv`
filters that table to unavailable requirements and records the affected
opt-in commands and remaining missing requirements; it is a planning artifact
only.
`runtime-boundary-family-host-readiness.tsv` reduces the same host evidence to
one row per blocked runtime family, and
`runtime-boundary-host-readiness-rollup.tsv` gives the aggregate decision. On
this host the rollup remains `host_blocked_for_all_opt_in_native_probes` with
zero ready opt-in commands. These rows are non-executing and non-promoting.
`runtime-boundary-opt-in-probe-dispatch-plan.tsv` turns each family readiness
row into a per-probe dispatch action. `runtime-boundary-opt-in-probe-dispatch-rollup.tsv`
then gives the aggregate dispatch switch; currently every blocked runtime
probe is skipped for missing host requirements. Dispatch permission only means
the guarded native probe may be manually run on a ready host, not that the row
is promoted.
`runtime-boundary-opt-in-probe-skip-evidence-contract.tsv` records why each
non-dispatched probe is skipped and whether native pass evidence is required
yet. `runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv` gives the
aggregate evidence decision. While probes are skipped for missing host
requirements, no native pass evidence is accepted and every blocked family
remains `execution_enabled=0` and `promotion_allowed=0`.
`native-runtime-probe-execution-plan.tsv` records the exact opt-in command,
required native proof key, current runtime readiness, expected pass status,
missing requirements, and promotion prerequisites for the three guarded native
runtime probes. On this host all rows remain
`plan_status=blocked_missing_host_runtime`.
`runtime-boundary-native-evidence-acceptance-gate.tsv` decides whether native
pass evidence may be accepted for each blocked runtime family. It currently
blocks evidence acceptance until host requirements are available and the
native opt-in probe passes. `runtime-boundary-promotion-blockers.tsv` expands
each non-ready promotion decision into concrete blocker keys such as missing
host runtime, native probe not passed, Node/browser gates incomplete,
promotion lock active, and manual lock update required.
`next-boundary-recommendations.tsv` is the generated priority handoff for the
next runtime boundary work. It ranks millturn user-M, tool DB, and Python
runtime lifecycle work, while keeping `execution_enabled=0` and
`promotion_allowed=0`. The Node inventory verifies the exact per-family
`source_artifacts` set, duplicate-free source lists, and `primary_artifact`
traceability for each recommendation, and requires every referenced artifact
token to exist under the generated sim-config inventory artifact directory.
The Node inventory also runs a cross-artifact guard over the blocked runtime
opt-in target set. It requires recommendations, execution plan, host preflight,
dispatch plan, skip/evidence contract, native evidence acceptance gate,
promotion readiness, promotion blockers, and post-native-pass gates to agree
on the same target, proof keys, opt-in command, missing runtime requirements,
active promotion lock, and non-executing/non-promoting state.
The browser smoke mirrors the promotion and opt-in gate consistency checks by
cross-checking the promotion lock, readiness, blocker, post-native-pass, native
evidence acceptance, pass-evidence, recommendation, host-preflight, family
readiness, dispatch, and skip-evidence artifacts. This browser-side parity is
non-executing and keeps every blocked runtime family locked until native,
Node, browser, and manual promotion gates all agree.
It also cross-checks `runtime-boundary-host-requirement-summary.tsv`,
`runtime-boundary-host-unblock-plan.tsv`,
`runtime-boundary-family-host-readiness.tsv`, and
`runtime-boundary-host-preflight.tsv` so missing and available host
requirements, affected opt-in commands, and family probe commands cannot drift
between the host-readiness artifacts.
It also checks that `boundary-phase-completion-summary.tsv` counts match the
blocked-runtime and family-specific artifact rows the browser has already
loaded, so completion criteria cannot drift from the generated gate artifacts
seen by browser smoke.
It also cross-checks the 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 the
Node inventory, without running any blocked runtime process.
It also checks `next-boundary-recommendations.tsv` row counts against the
generated user-M probe-gate, tool DB probe-gate, and Python runtime-contract
source rows, so recommendation priority handoffs cannot drift from their
machine-readable source artifacts.
It also checks each recommendation's `primary_artifact` and `source_artifacts`
against the browser-visible generated artifact set, including duplicate
detection, primary-artifact traceability, and exact per-family source artifact
sets, while keeping execution and promotion disabled. The Node coverage gate
also confirms the browser recommendation source-artifact check uses the same
`wasmArtifactNames` returned by the artifact documentation coverage helper.
It also fetches the compatibility, matrix, and full-process boundary docs in
browser smoke and checks the documented artifact names/tokens for the generated
WASM inventory TSVs and native TSVs. The same browser check fetches those TSV
artifacts, requires a non-empty TSV header, and verifies the expected
artifact/token lists are duplicate-free with fixed counts, mirroring the Node
documentation coverage gate without executing native runtime probes. The native
`build/native/sim-configs/skipped.tsv` artifact is allowed to be empty when the
native strict sim-config baseline has no skipped rows.
The same Node inventory run also checks generated artifact documentation
coverage: every TSV emitted under
`build/wasm/sim-configs-inventory/` must be named in
`compatibility-validation.md`, `sim-configs-coverage-matrix.md`, or
`full-process-boundary-design.md`. New gate artifacts must therefore be
documented before the inventory can pass.
The Node coverage gate also requires the generated WASM inventory artifact list
to remain the exact duplicate-free 54-entry baseline and the native generated
TSV token list to remain the exact duplicate-free 8-token baseline. It also
requires the corresponding `boundary-phase-completion-summary.tsv`
documentation-coverage counts to remain `54` and `8`, respectively. It also
checks that the browser smoke source lists the same generated WASM and native
artifact tokens and preserves the same fixed-count, duplicate-free,
fetchability/header, documentation-missing, and completion count-parity guards
before browser-side artifact coverage can pass. It also checks that browser
smoke actually executes the artifact documentation coverage helper, fetches
each generated WASM artifact by artifact name, fetches each native TSV by
relative artifact token, calls the completion count-parity helper with the
generated completion rows, still fetches and joins the exact compatibility,
matrix, and full-process boundary review-document set for that coverage check
before checking for missing artifact references, requires the browser
missing-reference loops to iterate `wasmArtifactNames` and
`nativeArtifactTokens` against that joined `documentationText`, keeps
completion evidence reviewable for browser count parity, binds the
documentation-coverage completion counts to the returned `wasmArtifactNames`
and `nativeArtifactTokens` arrays, and preserves the native skipped-artifact
empty allowance for `build/native/sim-configs/skipped.tsv`.
Native generated TSVs under `build/native/` are checked the same way by their
relative artifact path. This catches native baseline/source-proof/runtime-probe
artifacts that are generated but not described in the compatibility, coverage,
or full-process boundary documentation.
It also checks native source proof consistency: the native source proof
alignment rows, native runtime probe summary, and runtime probe gate alignment
must cover the same blocked classes and agree that source proof is ready while
execution and promotion remain disabled.
`user-m-process-state-targets.tsv` expands the `millturn` M128/M129 process
boundary into per-pin proof targets: two user-M codes, three axes, and four
`ini.[xyz]` HAL pins per axis. Each row records the source Tcl file, remap
@@ -302,6 +458,10 @@ keeping `proof_status=pending`, `execution_enabled=0`, and
vendored `DB_PROGRAM`, drives the LinuxCNC `tooldb.py` `v2.1`/`g`/`p`/`l`/`u`
protocol, verifies nonrandom startup/update/load/unload state and persistence,
and reports `runtime_protocol_probe_passed` without enabling promotion.
`tool-db-process-native-runtime-probe-gate.tsv` combines the DB source proof
and host readiness into the execution gate for that guarded native probe. It
records `runtime_ready`, missing requirements, source proof readiness, and the
non-promoting gate status before any manual opt-in run is allowed.
`python-remap-boundary-summary.tsv` is the machine-readable companion for the
Python remap inventory batch. It has one inventory-only row for each
`L4-PYTHON-REMAP` path, records Python modules, remap/prolog/epilog functions,
@@ -323,6 +483,11 @@ prerequisites for guarded probes by family: `python3`, `linuxcnc`,
LinuxCNC's `interp_python.cc` / `python_plugin.cc` owner source files, and the
configured Python modules. It is a readiness gate only and keeps every row
`proof_status=pending`, `execution_enabled=0`, and `promotion_allowed=0`.
`python-remap-native-runtime-probe-gate.tsv` combines the selected Python
runtime fixture, source proof, and host readiness into the execution gate for
the guarded native lifecycle probe. It remains non-executing and
non-promoting until `linuxcnc` is available and the dispatch gate permits the
manual opt-in probe.
`python-remap-native-runtime-state-plan.tsv` records the next native runtime
probe target set by family: LinuxCNC Python phases, configured modules,
callables, NGC-only subpaths, process assumptions, readiness counts, and
@@ -352,6 +517,50 @@ disabled, and proof that blocked runtime families carry LinuxCNC-owned user-M,
tool DB, and Python runtime evidence fields. It also records native source
proof alignment when the native proof summary is available, plus the aggregate
native stdout alignment summary for user-M, tool DB, and Python runtime gates.
The same completion summary now includes documentation-coverage criteria for
generated WASM sim-config inventory TSV artifacts and native generated TSV
artifacts, so artifact generation and review documentation stay in lockstep.
It also exposes 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 completion criteria, so review
can see those gates without reopening every individual TSV. The family
contract/alignment guard checks that the user-M, tool DB, and Python-specific
contract, readiness, probe-gate, and fixture/state-plan artifacts agree with
`runtime-boundary-contract-summary.tsv` and
`runtime-boundary-native-alignment-summary.tsv` while keeping execution and
promotion disabled.
The browser smoke consumes the same `boundary-phase-completion-summary.tsv`
criterion list and fails on criterion drift. This is a browser-side parity
check for generated gate artifacts only; it does not execute blocked native
runtime probes or allow promotion.
The browser smoke also checks that `runtime-boundary-contract-summary.tsv`
points at the same runtime alignment artifact, row count, boundary kind, and
disabled execution/promotion state reported by
`runtime-boundary-native-alignment-summary.tsv`.
It also cross-checks `native-proof-alignment-summary.tsv`,
`native-runtime-probe-summary.tsv`, and `runtime-probe-gate-alignment.tsv` so
browser validation sees the same source-proof readiness, runtime readiness,
required native proof, target, and disabled execution/promotion state as the
Node inventory.
The browser smoke also cross-checks `native-runtime-probe-execution-plan.tsv`,
`native-runtime-probe-pass-evidence-contract.tsv`,
`runtime-boundary-host-preflight.tsv`,
`runtime-boundary-opt-in-probe-dispatch-plan.tsv`, and
`runtime-boundary-opt-in-probe-skip-evidence-contract.tsv`, keeping the
current host-blocked probe status, missing requirements, opt-in command,
evidence status, and disabled execution/promotion state aligned.
It also checks the host requirement summary and unblock plan against family
host-readiness and preflight rows, including unavailable requirement
ownership, available prerequisite ownership, opt-in environment variables, and
execution command traceability.
It also cross-checks `runtime-boundary-host-readiness-rollup.tsv`,
`runtime-boundary-opt-in-probe-dispatch-rollup.tsv`, and
`runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv` for family/probe
counts, blocked families, missing requirements, blocked opt-in commands,
host/dispatch/evidence status, and disabled execution/promotion parity.
`native-proof-alignment-summary.tsv` aligns native source proof rows with the
generated worklist and native proof gates for user-M, tool DB, and Python
runtime blockers. It is proof-consumption accounting only and keeps execution