chore: finalize remaining project artifacts

This commit is contained in:
wangdequan
2026-07-05 22:13:40 -04:00
parent 4224f835dc
commit 6b937a038d
30 changed files with 14093 additions and 46 deletions

View File

@@ -1,12 +1,12 @@
{
"apiName": "xyzbc-trt-native-web-evidence-comparison",
"status": "pass",
"comparedAt": "2026-07-03T13:49:04.790Z",
"comparedAt": "2026-07-05T22:57:05.625Z",
"nativePath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json",
"webPath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json",
"summary": {
"checkCount": 35,
"passCount": 35,
"checkCount": 60,
"passCount": 60,
"failCount": 0,
"blockers": [],
"nativeStatus": "ok",
@@ -876,6 +876,8 @@
"view-p",
"clear-preview",
"audit",
"toggle-auto-manual",
"pause-resume",
"tab-manual",
"tab-mdi",
"select-joint",
@@ -898,6 +900,7 @@
"optional-stop",
"toggle-flood",
"toggle-mist",
"mdi-input",
"mdi-form",
"mdi-history",
"kins-identity",
@@ -905,8 +908,8 @@
"kins-userk"
],
"missingActions": [],
"buttonCount": 61,
"sourceReferencedCount": 61,
"buttonCount": 63,
"sourceReferencedCount": 63,
"ready": true
},
"buttons": [
@@ -1064,6 +1067,13 @@
"sourceLines": "axis.py:2231-2241",
"expected": "toggle machine power"
},
{
"id": "toolbar-auto-manual",
"action": "toggle-auto-manual",
"sourceSymbol": "commands.ensure_manual / commands.task_mode_auto",
"sourceLines": "axis.py:2308-2320,2520-2531",
"expected": "toggle task mode between AUTO and MANUAL"
},
{
"id": "toolbar-load",
"action": "open",
@@ -1087,10 +1097,10 @@
},
{
"id": "toolbar-pause-resume",
"action": "pause",
"action": "pause-resume",
"sourceSymbol": "commands.task_pauseresume",
"sourceLines": "axis.py:2353-2363",
"expected": "pause or resume based on paused state"
"sourceLines": "axis.py:2433-2443 / axis.tcl:543-549",
"expected": "AUTO_PAUSE when interpreter is not idle; AUTO_RESUME when paused"
},
{
"id": "toolbar-step",
@@ -1295,6 +1305,13 @@
"sourceLines": "axis.py:3175",
"expected": "mist coolant toggle"
},
{
"id": "mdi-input",
"action": "mdi-input",
"sourceSymbol": "commands.mdi_command.entry",
"sourceLines": "axis.py:2413-2417,2499-2516",
"expected": "edit pending MDI command text before submit/history execution"
},
{
"id": "mdi-submit",
"action": "mdi-form",
@@ -1549,6 +1566,8 @@
"view-p",
"clear-preview",
"audit",
"toggle-auto-manual",
"pause-resume",
"tab-manual",
"tab-mdi",
"select-joint",
@@ -1571,6 +1590,7 @@
"optional-stop",
"toggle-flood",
"toggle-mist",
"mdi-input",
"mdi-form",
"mdi-history",
"kins-identity",
@@ -1578,8 +1598,8 @@
"kins-userk"
],
"missingActions": [],
"buttonCount": 61,
"sourceReferencedCount": 61,
"buttonCount": 63,
"sourceReferencedCount": 63,
"ready": true
}
}
@@ -1663,6 +1683,8 @@
"view-p",
"clear-preview",
"audit",
"toggle-auto-manual",
"pause-resume",
"tab-manual",
"tab-mdi",
"select-joint",
@@ -1685,6 +1707,7 @@
"optional-stop",
"toggle-flood",
"toggle-mist",
"mdi-input",
"mdi-form",
"mdi-history",
"kins-identity",
@@ -1692,8 +1715,8 @@
"kins-userk"
],
"missingActions": [],
"buttonCount": 61,
"sourceReferencedCount": 61,
"buttonCount": 63,
"sourceReferencedCount": 63,
"ready": true
}
}
@@ -1937,6 +1960,387 @@
"webExecutionSampleCount": 228,
"unavailable": []
}
},
{
"category": "source-manifest",
"requirement": "T-051 LinuxCNC source tree authority manifest is complete",
"status": "pass",
"evidence": {
"status": "pass",
"nativeFileCount": 23,
"nativeMissingCount": 0,
"webFileCount": 20,
"nativeRoles": [
"axis-source",
"demo-program",
"desktop-entry",
"halcmd",
"ini",
"kinematics-source",
"ngcgui-subroutine",
"parameter-file",
"postgui-hal",
"pyvcp",
"remap",
"runtime-artifact",
"runtime-entry",
"tool-table",
"vismach-source"
]
}
},
{
"category": "runtime-launch",
"requirement": "T-052 native/Web launch entrypoints and runtime environment are recorded",
"status": "pass",
"evidence": {
"status": "pass",
"nativeEntrypoints": {
"ripEnvironment": "/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment",
"linuxcnc": "/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc",
"axis": "/home/mes123456/cnc_wams/linuxcnc/bin/axis",
"vismach": "/home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"desktop": "/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/table-rotary-tilting/xyzbc-trt.desktop"
},
"webEntrypoints": {
"app": "app/index.html",
"devServer": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run dev",
"staticBuild": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build"
}
}
},
{
"category": "ini-full",
"requirement": "T-053 complete INI section/key coverage matches native baseline",
"status": "pass",
"evidence": {
"status": "pass",
"nativeSectionCount": 21,
"webSectionCount": 21,
"nativeKeyCount": 124,
"webKeyCount": 124
}
},
{
"category": "hal-graph",
"requirement": "T-054 HAL source graph and runtime pin model are present",
"status": "pass",
"evidence": {
"status": "pass",
"nativeCommandCount": 172,
"webCommandCount": 23,
"nativeRuntimePins": 15,
"webRuntimePins": 13
}
},
{
"category": "kinematics",
"requirement": "T-055 xyzbc-trt kinematics formula evidence and sample validation are present",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "source_formula_references_plus_xyzbc_sample_validation",
"webBoundary": "web_xyzbc_kinematics_formula_sample_validation"
}
},
{
"category": "remap",
"requirement": "T-056 M428/M429/M430 remap semantics are source-checked",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "m428_m429_m430_remap_semantics_source_checked",
"webBoundary": "web_m428_m429_m430_remap_semantics"
}
},
{
"category": "pyvcp-postgui",
"requirement": "T-057 PyVCP POSTGUI HAL full chain is represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "pyvcp_xml_postgui_hal_full_chain",
"webBoundary": "web_pyvcp_postgui_hal_chain"
}
},
{
"category": "axis-ui",
"requirement": "T-058 AXIS UI source behavior references are represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_axis_py_ui_behavior_source_reference",
"webBoundary": "web_axis_ui_source_referenced_behavior"
}
},
{
"category": "vismach",
"requirement": "T-059 Vismach transform tree evidence is represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_vismach_transform_tree_source_reference",
"webBoundary": "web_vismach_transform_tree_strict"
}
},
{
"category": "timing",
"requirement": "T-060 servo/task timing and 50ms sampling budget are represented",
"status": "pass",
"evidence": {
"status": "pass",
"native": {
"ready": true,
"servoPeriodNs": 1000000,
"taskCycleTimeSeconds": 0.01,
"samplePeriodMs": 50,
"runtimeEventCount": 3,
"runtimeSampleDeltasMs": [
50,
51
],
"runtimeDeltaMinMs": 50,
"runtimeDeltaMaxMs": 51,
"semanticBoundary": "native_servo_task_timing_and_50ms_sampling_budget"
},
"web": {
"ready": true,
"samplePeriodMs": 50,
"taskCycleTimeSeconds": 0.01,
"servoPeriodNs": 1000000,
"runtimeSampleCount": 228,
"semanticBoundary": "web_servo_task_timing_budget"
}
}
},
{
"category": "runtime-execution",
"requirement": "T-061 true runtime execution samples are separated from source-derived expansion",
"status": "pass",
"evidence": {
"status": "pass",
"nativeRuntimeStatus": "completed",
"nativeRuntimeEventCount": 3,
"webRuntimeSampleCount": 228,
"nativeSourceDerivedSampleCount": 1300,
"webSourceDerivedSampleCount": 1300
}
},
{
"category": "staging-hash",
"requirement": "T-062 Web staged file hashes match native source manifest for staged files",
"status": "pass",
"evidence": {
"status": "pass",
"commonFileCount": 12,
"mismatchCount": 0,
"mismatches": []
}
},
{
"category": "wasm-source",
"requirement": "T-063 WASM artifacts are bound to source and have hashes",
"status": "pass",
"evidence": {
"status": "pass",
"artifactCount": 8,
"sourceManifestSha256": "da59feae2d963a410e7f8fdf968a2238f5ca2b3c7bf7a6c6e408ea28f514fbef"
}
},
{
"category": "task-hal-full",
"requirement": "T-064 task/HAL full state fields are represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_task_hal_full_state_snapshot",
"webBoundary": "web_task_hal_full_state"
}
},
{
"category": "limits",
"requirement": "T-065 TRAJ/AXIS/JOINT limits and interlocks are represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "traj_axis_joint_limits_and_interlock_source",
"webBoundary": "web_axis_joint_limits_and_interlocks"
}
},
{
"category": "tool-parameters",
"requirement": "T-066 tool table and parameter file persistence are represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "tool_table_parameter_file_persistence_native_source",
"webBoundary": "web_tool_table_parameter_persistence"
}
},
{
"category": "program-corpus",
"requirement": "T-067 Ngcgui and demo program corpus execution is represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "ngcgui_and_demo_program_corpus_source_runtime_coverage",
"webBoundary": "web_program_corpus_execution"
}
},
{
"category": "visual",
"requirement": "T-068 native/Web visual evidence paths are present",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_web_visual_evidence_paths_for_same_state_review",
"webBoundary": "web_visual_evidence_paths"
}
},
{
"category": "errors",
"requirement": "T-069 error path parity matrix is represented",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_web_error_path_and_message_parity_matrix",
"webBoundary": "web_error_path_matrix"
}
},
{
"category": "dual-baseline",
"requirement": "T-070 compare JSON contains source/runtime dual baseline sections",
"status": "pass",
"evidence": {
"status": "pass",
"sections": [
"sourceManifestComparison",
"runtimeLaunchComparison",
"halGraphComparison",
"iniFullComparison",
"kinematicsFormulaComparison",
"uiBehaviorComparison",
"visualComparison"
]
}
},
{
"category": "classification",
"requirement": "T-071 evidence classification prevents static derivation being labeled runtime",
"status": "pass",
"evidence": {
"status": "pass",
"native": {
"ready": true,
"sourceDerived": [
"sourceManifest",
"iniFull",
"halGraph.sourceFiles",
"semanticExecutionPath"
],
"runtimeObserved": [
"linuxcncRuntime.processes",
"before",
"after",
"hal.raw"
],
"runtimeSampled": [
"commandResult.events"
],
"rule": "runtimeSampled fields must come from linuxcnc stat/HAL/log channels; source expansion remains explicitly sourceDerived.",
"semanticBoundary": "explicit_no_static_derivation_as_runtime_observation"
},
"web": {
"ready": true,
"sourceDerived": [
"sourceManifest",
"iniFull",
"semanticExecutionPath"
],
"runtimeObserved": [
"taskHalEquivalence",
"state",
"paths.executionPath"
],
"runtimeSampled": [
"executionPath.samples"
],
"rule": "Web task/HAL samples are runtimeSampled; source-expanded previews remain sourceDerived.",
"semanticBoundary": "web_runtime_classification_no_static_as_runtime"
}
}
},
{
"category": "rerun",
"requirement": "T-072 one-command rerun entrypoint is recorded",
"status": "pass",
"evidence": {
"status": "pass",
"nativeRerunCommand": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web && npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare",
"webEvidenceFiles": [
"working/evidence/native-xyzbc-trt-evidence.json",
"working/evidence/web-xyzbc-trt-evidence.json",
"working/evidence/compare-xyzbc-trt-evidence.json"
]
}
},
{
"category": "reverse-index",
"requirement": "T-073 reverse source index is present",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "working_conclusions_reverse_index_to_linuxcnc_source_lines_and_web_files",
"webBoundary": "web_reverse_source_index"
}
},
{
"category": "performance",
"requirement": "T-074 performance/error budget is represented and current geometric errors fit",
"status": "pass",
"evidence": {
"status": "pass",
"maxTcpErrorMm": 3.552713678800501e-15,
"maxJointError": 3.552713678800501e-15,
"maxToolAxisAngleDeg": 0,
"sampleCountDelta": 0
}
},
{
"category": "strict-acceptance",
"requirement": "T-075 strict acceptance freeze metadata is present",
"status": "pass",
"evidence": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "strict_acceptance_freeze_manifest_evidence_compare",
"webBoundary": "web_strict_acceptance_freeze"
}
}
],
"pathComparison": {
@@ -3338,6 +3742,337 @@
"mismatches": [],
"semanticBoundary": "native_web_complete_gcode_execution_process_json_comparison"
},
"sourceManifestComparison": {
"status": "pass",
"nativeFileCount": 23,
"nativeMissingCount": 0,
"webFileCount": 20,
"nativeRoles": [
"axis-source",
"demo-program",
"desktop-entry",
"halcmd",
"ini",
"kinematics-source",
"ngcgui-subroutine",
"parameter-file",
"postgui-hal",
"pyvcp",
"remap",
"runtime-artifact",
"runtime-entry",
"tool-table",
"vismach-source"
]
},
"runtimeLaunchComparison": {
"status": "pass",
"nativeEntrypoints": {
"ripEnvironment": "/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment",
"linuxcnc": "/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc",
"axis": "/home/mes123456/cnc_wams/linuxcnc/bin/axis",
"vismach": "/home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"desktop": "/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/table-rotary-tilting/xyzbc-trt.desktop"
},
"webEntrypoints": {
"app": "app/index.html",
"devServer": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run dev",
"staticBuild": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build"
}
},
"halGraphComparison": {
"status": "pass",
"nativeCommandCount": 172,
"webCommandCount": 23,
"nativeRuntimePins": 15,
"webRuntimePins": 13
},
"iniFullComparison": {
"status": "pass",
"nativeSectionCount": 21,
"webSectionCount": 21,
"nativeKeyCount": 124,
"webKeyCount": 124
},
"kinematicsFormulaComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "source_formula_references_plus_xyzbc_sample_validation",
"webBoundary": "web_xyzbc_kinematics_formula_sample_validation"
},
"uiBehaviorComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_axis_py_ui_behavior_source_reference",
"webBoundary": "web_axis_ui_source_referenced_behavior"
},
"visualComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_vismach_transform_tree_source_reference",
"webBoundary": "web_vismach_transform_tree_strict"
},
"strictComparison": {
"sourceManifestComparison": {
"status": "pass",
"nativeFileCount": 23,
"nativeMissingCount": 0,
"webFileCount": 20,
"nativeRoles": [
"axis-source",
"demo-program",
"desktop-entry",
"halcmd",
"ini",
"kinematics-source",
"ngcgui-subroutine",
"parameter-file",
"postgui-hal",
"pyvcp",
"remap",
"runtime-artifact",
"runtime-entry",
"tool-table",
"vismach-source"
]
},
"runtimeLaunchComparison": {
"status": "pass",
"nativeEntrypoints": {
"ripEnvironment": "/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment",
"linuxcnc": "/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc",
"axis": "/home/mes123456/cnc_wams/linuxcnc/bin/axis",
"vismach": "/home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"desktop": "/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/table-rotary-tilting/xyzbc-trt.desktop"
},
"webEntrypoints": {
"app": "app/index.html",
"devServer": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run dev",
"staticBuild": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build"
}
},
"iniFullComparison": {
"status": "pass",
"nativeSectionCount": 21,
"webSectionCount": 21,
"nativeKeyCount": 124,
"webKeyCount": 124
},
"halGraphComparison": {
"status": "pass",
"nativeCommandCount": 172,
"webCommandCount": 23,
"nativeRuntimePins": 15,
"webRuntimePins": 13
},
"kinematicsFormulaComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "source_formula_references_plus_xyzbc_sample_validation",
"webBoundary": "web_xyzbc_kinematics_formula_sample_validation"
},
"remapSemanticsComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "m428_m429_m430_remap_semantics_source_checked",
"webBoundary": "web_m428_m429_m430_remap_semantics"
},
"pyvcpPostguiComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "pyvcp_xml_postgui_hal_full_chain",
"webBoundary": "web_pyvcp_postgui_hal_chain"
},
"axisUiBehaviorComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_axis_py_ui_behavior_source_reference",
"webBoundary": "web_axis_ui_source_referenced_behavior"
},
"visualComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_vismach_transform_tree_source_reference",
"webBoundary": "web_vismach_transform_tree_strict"
},
"servoTaskTimingComparison": {
"status": "pass",
"native": {
"ready": true,
"servoPeriodNs": 1000000,
"taskCycleTimeSeconds": 0.01,
"samplePeriodMs": 50,
"runtimeEventCount": 3,
"runtimeSampleDeltasMs": [
50,
51
],
"runtimeDeltaMinMs": 50,
"runtimeDeltaMaxMs": 51,
"semanticBoundary": "native_servo_task_timing_and_50ms_sampling_budget"
},
"web": {
"ready": true,
"samplePeriodMs": 50,
"taskCycleTimeSeconds": 0.01,
"servoPeriodNs": 1000000,
"runtimeSampleCount": 228,
"semanticBoundary": "web_servo_task_timing_budget"
}
},
"runtimeExecutionComparison": {
"status": "pass",
"nativeRuntimeStatus": "completed",
"nativeRuntimeEventCount": 3,
"webRuntimeSampleCount": 228,
"nativeSourceDerivedSampleCount": 1300,
"webSourceDerivedSampleCount": 1300
},
"webStagingHashComparison": {
"status": "pass",
"commonFileCount": 12,
"mismatchCount": 0,
"mismatches": []
},
"wasmSourceBindingComparison": {
"status": "pass",
"artifactCount": 8,
"sourceManifestSha256": "da59feae2d963a410e7f8fdf968a2238f5ca2b3c7bf7a6c6e408ea28f514fbef"
},
"taskHalFullStateComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_task_hal_full_state_snapshot",
"webBoundary": "web_task_hal_full_state"
},
"limitInterlocksComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "traj_axis_joint_limits_and_interlock_source",
"webBoundary": "web_axis_joint_limits_and_interlocks"
},
"toolParameterComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "tool_table_parameter_file_persistence_native_source",
"webBoundary": "web_tool_table_parameter_persistence"
},
"programCorpusComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "ngcgui_and_demo_program_corpus_source_runtime_coverage",
"webBoundary": "web_program_corpus_execution"
},
"nativeWebVisualComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_web_visual_evidence_paths_for_same_state_review",
"webBoundary": "web_visual_evidence_paths"
},
"errorPathComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "native_web_error_path_and_message_parity_matrix",
"webBoundary": "web_error_path_matrix"
},
"dualBaselineComparison": {
"status": "pass",
"sections": [
"sourceManifestComparison",
"runtimeLaunchComparison",
"halGraphComparison",
"iniFullComparison",
"kinematicsFormulaComparison",
"uiBehaviorComparison",
"visualComparison"
]
},
"evidenceClassificationComparison": {
"status": "pass",
"native": {
"ready": true,
"sourceDerived": [
"sourceManifest",
"iniFull",
"halGraph.sourceFiles",
"semanticExecutionPath"
],
"runtimeObserved": [
"linuxcncRuntime.processes",
"before",
"after",
"hal.raw"
],
"runtimeSampled": [
"commandResult.events"
],
"rule": "runtimeSampled fields must come from linuxcnc stat/HAL/log channels; source expansion remains explicitly sourceDerived.",
"semanticBoundary": "explicit_no_static_derivation_as_runtime_observation"
},
"web": {
"ready": true,
"sourceDerived": [
"sourceManifest",
"iniFull",
"semanticExecutionPath"
],
"runtimeObserved": [
"taskHalEquivalence",
"state",
"paths.executionPath"
],
"runtimeSampled": [
"executionPath.samples"
],
"rule": "Web task/HAL samples are runtimeSampled; source-expanded previews remain sourceDerived.",
"semanticBoundary": "web_runtime_classification_no_static_as_runtime"
}
},
"rerunEntryComparison": {
"status": "pass",
"nativeRerunCommand": "npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web && npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare",
"webEvidenceFiles": [
"working/evidence/native-xyzbc-trt-evidence.json",
"working/evidence/web-xyzbc-trt-evidence.json",
"working/evidence/compare-xyzbc-trt-evidence.json"
]
},
"reverseSourceIndexComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "working_conclusions_reverse_index_to_linuxcnc_source_lines_and_web_files",
"webBoundary": "web_reverse_source_index"
},
"performanceBudgetComparison": {
"status": "pass",
"maxTcpErrorMm": 3.552713678800501e-15,
"maxJointError": 3.552713678800501e-15,
"maxToolAxisAngleDeg": 0,
"sampleCountDelta": 0
},
"strictAcceptanceComparison": {
"status": "pass",
"nativeReady": true,
"webReady": true,
"nativeBoundary": "strict_acceptance_freeze_manifest_evidence_compare",
"webBoundary": "web_strict_acceptance_freeze"
}
},
"requiredImprovements": [],
"semanticBoundary": "native_linuxcnc_vs_web_opfs_wasm_xyzbc_trt_evidence_comparison"
}