chore: finalize remaining project artifacts
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user