Make machine configuration authoritative and restore native checkpoints exactly

This commit is contained in:
2026-09-18 09:09:41 +08:00
parent 6a69511276
commit 4a568f1f4c
94 changed files with 10882 additions and 301 deletions

View File

@@ -0,0 +1,65 @@
{
"report_id": "cfg-r01-trt-r01-acceptance-v1",
"status": "verified",
"tasks": [
"CFG-R01",
"TRT-R01"
],
"native_build_id": "fff6a3970ae13c6a575d90373332f25c90034318d4758616dee3bedd227cfc89",
"wasm_sha256": "aa0f5d551e42859eef3b37aee9079f09ae04e668819da4e62aee2b74522e8bc6",
"checkpoint_sizes": {
"sim_core": 24,
"sim_protocol": 12,
"sim_event": 786448,
"sim_program": 49496,
"sim_linuxcnc_tp": 47304,
"sim_hal": 49544
},
"continuation_samples": 120,
"first_divergent_tick": null,
"boundaries": [
"matching native build and machine configuration required",
"old snapshots lacking native state are rejected",
"TRT checkpoint event tails require explicit subsequent commands",
"backward public recovery requires a fresh transport session",
"OPFS retains its existing quota; no physical crash or cross-browser parity claim"
],
"evidence": [
{
"path": "coverage/recovery/axis3-selected-case.report.json",
"sha256": "24a017e622073950726652399da8959fb695097b1f26e9a88c3357269f09b96e"
},
{
"path": "coverage/recovery/axis-gates.report.json",
"sha256": "e92a7ee1b9545cffbabe8a4933eca73330703746e1169627cef1fd838d19fdd4"
},
{
"path": "coverage/recovery/axis3-checkpoint.report.json",
"sha256": "638b13148f0e82b3b78a9ff9b8a91ead5c144ff0c3ebec4cf0ce9df913c2989b"
},
{
"path": "coverage/recovery/checkpoint-state.report.json",
"sha256": "12b7792cd312e327154d4b66a13d869906a4c53a9143dd0d04493f687452da3b"
},
{
"path": "coverage/recovery/exact-checkpoint.report.json",
"sha256": "bda234634bcfbaef24dfa7291cf8650c67d33805a3ceefe96e251fdb2a64059e"
},
{
"path": "coverage/recovery/power-off.report.json",
"sha256": "d0f18fbe4749d2a89fac242e99596c125ad8aa056067d18b59589519d83c6b46"
},
{
"path": "coverage/recovery/storage-bridge.report.json",
"sha256": "e9489615ac04e8f6186f340c7eecf78d5aca32db715b8a0b73ef7bef693d0dc6"
},
{
"path": "coverage/recovery/browser-reload.report.json",
"sha256": "108b1da696ac1cc4666301c8b5b1d478d3b6853372640428192211a03771e993"
},
{
"path": "coverage/recovery/browser-reload-xyzbc-trt.report.json",
"sha256": "d136b7985b0c7f0d0215cb04f9b4a35aa239e50534ebd65f80e57af278cf1f9f"
}
]
}

View File

@@ -0,0 +1 @@
{"schema":"axis-contract-sample.v1","status":"verified","commands":25,"matrix":25,"blocked_reasons":["axis_mdi_queue_full","axis_estop_active"]}

View File

@@ -0,0 +1 @@
{"schema":"wasm-motion-checkpoint-t3.v1","status":"verified","case":"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini","checkpoint_hash":"fnv1a64:0fec51679b74f35c","continuous_hash":"fnv1a64:6ad7c87921fa2384","recovered_hash":"fnv1a64:6ad7c87921fa2384","endpoint_equal":true,"trace_import":"verified","checkpoint_queue_depth":1,"blocked_damaged_checkpoint":"blocked"}

View File

@@ -0,0 +1 @@
{"schema":"axis3-selected-case-parity.v1","status":"verified","case":"linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini","machine":{"type":"cartesian_vismach","axes":["X","Y","Z"],"joints":3,"kinematics":"trivkins","model":"3axis-tutorial"},"exact_files":["linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini","linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.hal","linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial","linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial_mm.var","linuxcnc/configs/nc_files/3dtest.ngc","linuxcnc/configs/sim/axis/vismach/3axis-tutorial/tool.tbl","linuxcnc/linuxcnc.gif"],"loader":{"fetched":7,"missing":0,"state_hash":"fnv1a64:94e21a5c7a684e63"},"startup":{"state":"TASK_READY","hal_blocked":0},"operation_sequence":["HOME","JOG_START","SIM_STEP","JOG_STOP","SET_OVERRIDE","PROGRAM_LOAD","PROGRAM_RUN","CHECKPOINT","SPINDLE_COMMAND","COOLANT_COMMAND","TOOL_PREPARE","TOOL_CHANGE","ESTOP","IO_RECOVER","RECOVER"],"observed":{"jog_x":0.19999999999999998,"program_status":"completed","checkpoint_hash":"fnv1a64:9d53b245b2779038","recovery":"recovered","final_hash":"fnv1a64:47a5f0e6ae76a4af"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View File

@@ -0,0 +1,39 @@
{
"report_id": "checkpoint-browser-reload-v1",
"machine": "xyzbc-trt",
"status": "verified",
"before": [
2.4666500000000022,
0,
0,
0,
0
],
"saved": {
"schema": "linuxcnc-ui-temp-json.v1",
"status": "verified",
"storage": "opfs",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"key": "xyzbc-trt-power-off",
"generation": 1,
"slot": "state-b.json",
"state_hash": "fnv1a64:9dc45f4891e8b147",
"bytes": 102567
},
"after": [
2.4666500000000022,
0,
0,
0,
0
],
"preview_segments": 1,
"continued": [
2.5666500000000023,
0,
0,
0,
0
],
"browser_errors": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

View File

@@ -0,0 +1,39 @@
{
"report_id": "checkpoint-browser-reload-v1",
"machine": "xyzac-trt",
"status": "verified",
"before": [
2.266650000000002,
0,
0,
0,
0
],
"saved": {
"schema": "linuxcnc-ui-temp-json.v1",
"status": "verified",
"storage": "opfs",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"key": "xyzac-trt-power-off",
"generation": 1,
"slot": "state-b.json",
"state_hash": "fnv1a64:bc9feb6862938390",
"bytes": 103146
},
"after": [
2.266650000000002,
0,
0,
0,
0
],
"preview_segments": 1,
"continued": [
2.366650000000002,
0,
0,
0,
0
],
"browser_errors": []
}

168
coverage/recovery/build.log Normal file
View File

@@ -0,0 +1,168 @@
configure: cmake -S /home/mes006/linuxcncWebWASM/wasm-core -B /home/mes006/linuxcncWebWASM/build-wasm -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/share/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/node;--experimental-wasm-threads
-- Configuring done (0.5s)
-- Generating done (0.0s)
-- Build files have been written to: /home/mes006/linuxcncWebWASM/build-wasm
[0/2] Re-checking globbed directories...
[1/55] Building C object CMakeFiles/sim_core.dir/src/sim_api.c.o
[2/55] Building C object CMakeFiles/sim_core.dir/src/sim_scheduler.c.o
[3/55] Building C object CMakeFiles/sim_core.dir/src/sim_protocol.c.o
[4/55] Building C object CMakeFiles/sim_core.dir/src/sim_event.c.o
[5/55] Building C object CMakeFiles/sim_core.dir/src/sim_task.c.o
[6/55] Building C object CMakeFiles/sim_core.dir/src/sim_posemath.c.o
[7/55] Building C object CMakeFiles/sim_core.dir/src/sim_device_io.c.o
[8/55] Building C object CMakeFiles/sim_core.dir/src/sim_motion_queue.c.o
[9/55] Building C object CMakeFiles/sim_core.dir/src/sim_switchkins.c.o
[10/55] Building C object CMakeFiles/sim_core.dir/src/sim_linuxcnc_tp.c.o
[11/55] Building C object CMakeFiles/sim_core.dir/src/sim_userkins.c.o
[12/55] Building C object CMakeFiles/sim_core.dir/src/sim_interpreter.c.o
[13/55] Building C object CMakeFiles/sim_core.dir/src/sim_hal.c.o
[14/55] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_registry.c.o
[15/55] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_motion.c.o
[16/55] Building C object CMakeFiles/sim_core.dir/src/sim_program.c.o
[17/55] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_feedback.c.o
[18/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_api.c.o
[19/55] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_home_limit.c.o
[20/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_protocol.c.o
[21/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_event.c.o
[22/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_task.c.o
[23/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_scheduler.c.o
[24/55] Building C object CMakeFiles/sim_core.dir/src/sim_io.c.o
[25/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_posemath.c.o
[26/55] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics.c.o
[27/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_device_io.c.o
[28/55] Linking CXX static library libsim_core.a
[29/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_motion_queue.c.o
[30/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_hal.c.o
[31/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_switchkins.c.o
[32/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_linuxcnc_tp.c.o
[33/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_program.c.o
[34/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_interpreter.c.o
[35/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_kinematics.c.o
[36/55] Linking CXX executable sim_kinematics_registry_wasm_test.js
[37/55] Linking CXX executable sim_hal_wasm_test.js
[38/55] Linking CXX executable sim_kinematics_wasm_test.js
[39/55] Linking CXX executable sim_switchkins_wasm_test.js
[40/55] Linking CXX executable sim_kinematics_motion_wasm_test.js
[41/55] Linking CXX executable sim_userkins_wasm_test.js
[42/55] Linking CXX executable sim_kinematics_feedback_wasm_test.js
[43/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_userkins.c.o
[44/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_kinematics_registry.c.o
[45/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_kinematics_motion.c.o
[46/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_kinematics_feedback.c.o
[47/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_kinematics_home_limit.c.o
[48/55] Linking CXX executable sim_kinematics_home_limit_wasm_test.js
[49/55] Building C object CMakeFiles/sim_core_module.dir/src/sim_io.c.o
[50/55] Linking CXX executable sim_io_wasm_test.js
[51/55] Linking CXX executable sim_device_io_wasm_test.js
[52/55] Linking CXX executable sim_motion_queue_wasm_test.js
[53/55] Linking CXX executable sim_source_unit_adapter_wasm_test.js
[54/55] Linking CXX executable sim_xyzac_trace_wasm_test.js
[55/55] Linking CXX executable linuxcnc-sim-core.js
{"schema":"kinematics-coupled-samples.v1","corexy":{"pose":[4.000000000,2.000000000,3.000000000],"inverse":[6.000000000,2.000000000,3.000000000],"state_hash":15100884384408177781},"rose":{"pose":[-1.969615506,-0.347296355,7.000000000],"inverse":[2.000000000,7.000000000,190.000000000],"branch":1,"state_hash":2438572543122669123},"maxkins":{"pose":[-4.000000000,3.000000000,5.000000000],"inverse":[3.000000000,4.000000000,5.000000000,0.000000000,30.000000000,90.000000000],"state_hash":9619955171041365392},"rotatekins":{"pose":[4.000000000,-3.000000000,5.000000000],"inverse":[3.000000000,4.000000000,5.000000000,0.000000000,0.000000000,90.000000000],"state_hash":4875770340631299468},"fiveaxiskins":{"pose":[118.967490359,111.434580971,76.850293016],"inverse":[10.000000000,20.000000000,30.000000000,35.000000000,40.000000000,-2.000000000,20.000000000],"state_hash":7748142909372720337},"xyzac_trt":{"pose":[142.826706376,9.689621386,163.102540378],"inverse":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],"state_hash":13756563895642799233},"xyzbc_trt":{"pose":[44.740352549,25.970325570,227.671759760],"inverse":[100.000000000,50.000000000,200.000000000,30.000000000,45.000000000],"state_hash":16201786080257949760},"scara":{"pose":[590.460310444,130.945742721,465.000000000],"inverse":[-3.644300703,40.000000000,25.000000000,-31.355699297,5.000000000,-3.000000000],"state_hash":16144366080292311245},"puma":{"pose":[450.112320486,207.114833215,-612.180622409],"inverse":[10.000000000,20.000000000,-30.000000000,40.000000000,25.000000000,-15.000000000],"state_hash":3358632253473456540},"scorbot":{"pose":[366.786994761,171.035584569,191.173940759],"inverse":[25.000000000,35.000000000,-20.000000000,10.000000000,-5.000000000],"state_hash":7814353589808450675},"genser":{"pose":[619.051467462,30.411237800,-349.855537721],"inverse":[0.000000000,10.000000000,-20.000000000,29.999999999,15.000000000,-9.999999999],"state_hash":7456282805679296496,"iterations":0,"residual":0.000000000000},"lineardelta":{"pose":[0.000000000,0.000000000,64.636584194],"inverse":[300.000000000,300.000000000,300.000000000],"state_hash":5975346607623231017},"rotarydelta":{"pose":[0.000000000,0.000000000,-3.793360169],"inverse":[10.000000000,10.000000000,10.000000000],"state_hash":2370894419412951220},"tripod":{"pose":[2.000000000,3.000000000,4.000000000],"inverse":[5.385164807,9.433981132,6.447715952],"state_hash":15608486964708188096},"genhex":{"pose":[10.000000000,-5.000000000,60.000000000,4.999999999,-3.000000001,10.000000000],"inverse":[68.274402001,63.007928550,63.783820692,65.475127133,60.456723205,68.231500501],"state_hash":7575268797291078131,"iterations":14,"residual":0.000000000857},"pentapod":{"pose":[0.000000000,500.000000000,300.000000000,0.010000000,-0.010000000],"inverse":[625.895566556,649.261562588,754.767615986,338.490149644,341.118326622],"state_hash":13978136356142463125,"iterations":12,"residual":0.000000001000},"delta_edges":{"lineardelta":{"alternate_status":0,"alternate_branch":1,"alternate_pose":[-0.000000000,-0.000000000,535.363415806],"no_solution":-702,"limit_error":-702,"geometry_error":-703,"branch":0,"iterations":0},"rotarydelta":{"alternate_status":0,"alternate_branch":1,"alternate_pose":[-0.000000000,-0.000000000,0.320396615],"singular":-704,"geometry_error":-703,"branch":0,"iterations":0},"tripod":{"alternate_status":0,"alternate_branch":1,"alternate_pose":[2.000000000,3.000000000,-4.000000000],"no_solution":-702,"singular":-704,"limit_error":-702,"geometry_error":-703,"branch":0,"iterations":0},"genhex":{"alternate_status":0,"alternate_branch":1,"alternate_pose":[10.000000000,-5.000000000,-60.000000000],"nonpositive":-702,"iteration_limit":-702,"max_error":-702,"singular":-704,"limit_error":-702,"branch":0,"iterations":14,"residual":0.000000000857},"pentapod":{"alternate_status":-702,"alternate_branch":1,"alternate_pose":[0.000000000,0.000000000,0.000000000],"alternate_iterations":1,"nonpositive":-702,"nonpositive_iterations":0,"iteration_limit":-702,"iteration_limit_iterations":1,"max_error":-702,"max_error_iterations":1,"singular":-704,"singular_iterations":0,"limit_error":-702,"branch":0,"iterations":12,"residual":0.000000001000}}}
{"schema":"hal-corexy-sample.v1","command":{"j0":6.000,"j1":2.000,"alpha":4.000,"beta":2.000},"feedback":{"alpha":4.000,"beta":1.000,"j0":5.000,"j1":3.000},"tick":1,"function_calls":1,"component_batch":{"gate":1,"constant":3.500,"rollback_tick":1}}
{"schema":"linuxcnc-source-unit-adapter.v1","cases":[{"id":"source-unit:interp/movement-linear","name":"Movement commands / Linear Feed","source":"linuxcnc/unit_tests/interp/test_interp_block.cc","result_hash":16718210192490359486,"status":"PASSED"},{"id":"source-unit:interp/movement-rapid","name":"Movement commands / Rapid","source":"linuxcnc/unit_tests/interp/test_interp_block.cc","result_hash":10600861468726077694,"status":"PASSED"},{"id":"source-unit:interp/movement-arc","name":"Movement commands / Clockwise circular","source":"linuxcnc/unit_tests/interp/test_interp_block.cc","result_hash":3344452133792667065,"status":"PASSED"},{"id":"source-unit:interp/gcode-to-string","name":"convert G-codes to string","source":"linuxcnc/unit_tests/interp/test_string_conversion.cc","result_hash":18096020171334179193,"status":"PASSED"},{"id":"source-unit:interp/g10-coordinate-offset","name":"G10 L2 / G54 coordinate offset","source":"linuxcnc/unit_tests/interp/test_interp_basics.cc","result_hash":10503294382485028241,"status":"PASSED"},{"id":"source-unit:interp/parameter-expression","name":"parameter expression assignment","source":"linuxcnc/unit_tests/interp/test_interp_basics.cc","result_hash":12191524797282674768,"status":"PASSED"},{"id":"source-unit:interp/modal-units","name":"G20 length/feed conversion","source":"linuxcnc/unit_tests/interp/test_interp_basics.cc","result_hash":17337372050960250323,"status":"PASSED"},{"id":"source-unit:tp/pmCartCartParallel_numerical","name":"pmCartCartParallel_numerical","source":"linuxcnc/unit_tests/tp/test_blendmath.c","result_hash":8528287329722895704,"status":"PASSED"},{"id":"source-unit:tp/pmCartCartAntiParallel_numerical","name":"pmCartCartAntiParallel_numerical","source":"linuxcnc/unit_tests/tp/test_blendmath.c","result_hash":6154898365857503476,"status":"PASSED"}],"counts":{"FAILED":0,"PASSED":9},"aggregate_hash":12570001048447364769,"pending":[{"source_id":"source-test:linuxcnc/tests/abort/g64/test.sh","adapter":"WORKER_TASK_MOTION_PENDING","reason":"G64 blend/tolerance and abort endpoint require Worker Task plus motion queue"},{"source_id":"source-test:linuxcnc/tests/abort/feed-rate/test.sh","adapter":"WORKER_TASK_MOTION_PENDING","reason":"abort/restart timing is owned by Worker Task and fixed-tick motion"}]}
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/mes006/linuxcncWebWASM/build-native
[0/2] Re-checking globbed directories...
[1/43] Building C object CMakeFiles/sim_core.dir/src/sim_api.c.o
[2/43] Building C object CMakeFiles/sim_core.dir/src/sim_scheduler.c.o
[3/43] Building C object CMakeFiles/sim_core.dir/src/sim_protocol.c.o
[4/43] Building C object CMakeFiles/sim_core.dir/src/sim_event.c.o
[5/43] Building C object CMakeFiles/sim_core.dir/src/sim_posemath.c.o
[6/43] Building C object CMakeFiles/sim_core.dir/src/sim_device_io.c.o
[7/43] Building C object CMakeFiles/sim_core.dir/src/sim_switchkins.c.o
[8/43] Building C object CMakeFiles/sim_core.dir/src/sim_task.c.o
[9/43] Building C object CMakeFiles/sim_core.dir/src/sim_program.c.o
[10/43] Building C object CMakeFiles/sim_core.dir/src/sim_userkins.c.o
[11/43] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_registry.c.o
[12/43] Building C object CMakeFiles/sim_core.dir/src/sim_hal.c.o
[13/43] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_feedback.c.o
[14/43] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_motion.c.o
[15/43] Building C object CMakeFiles/sim_core.dir/src/sim_linuxcnc_tp.c.o
[16/43] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics_home_limit.c.o
[17/43] Building C object CMakeFiles/sim_core.dir/src/sim_motion_queue.c.o
[18/43] Building C object CMakeFiles/sim_core.dir/src/sim_io.c.o
[19/43] Building C object CMakeFiles/sim_core.dir/src/sim_interpreter.c.o
[20/43] Building C object CMakeFiles/sim_core.dir/src/sim_kinematics.c.o
[21/43] Linking CXX static library libsim_core.a
[22/43] Linking CXX executable sim_task_test
[23/43] Linking CXX executable sim_protocol_test
[24/43] Linking CXX executable sim_native_homing_test
[25/43] Linking CXX executable sim_event_test
[26/43] Linking CXX executable sim_api_test
[27/43] Linking CXX executable sim_contract_test
[28/43] Linking CXX executable sim_scheduler_test
[29/43] Linking CXX executable sim_hal_test
[30/43] Linking CXX executable sim_posemath_test
[31/43] Linking CXX executable sim_interpreter_test
[32/43] Linking CXX executable sim_switchkins_test
[33/43] Linking CXX executable sim_kinematics_registry_test
[34/43] Linking CXX executable sim_source_unit_adapter_test
[35/43] Linking CXX executable sim_userkins_test
[36/43] Linking CXX executable sim_kinematics_motion_test
[37/43] Linking CXX executable sim_motion_queue_test
[38/43] Linking CXX executable sim_kinematics_test
[39/43] Linking CXX executable sim_kinematics_feedback_test
[40/43] Linking CXX executable sim_kinematics_home_limit_test
[41/43] Linking CXX executable sim_xyzac_trace_test
[42/43] Linking CXX executable sim_io_test
[43/43] Linking CXX executable sim_device_io_test
Internal ctest changing into directory: /home/mes006/linuxcncWebWASM/build-native
Test project /home/mes006/linuxcncWebWASM/build-native
Start 1: sim_native_homing_test
1/23 Test #1: sim_native_homing_test ........... Passed 0.00 sec
Start 2: sim_api_test
2/23 Test #2: sim_api_test ..................... Passed 0.00 sec
Start 3: sim_protocol_test
3/23 Test #3: sim_protocol_test ................ Passed 0.00 sec
Start 4: sim_event_test
4/23 Test #4: sim_event_test ................... Passed 0.00 sec
Start 5: sim_contract_test
5/23 Test #5: sim_contract_test ................ Passed 0.00 sec
Start 6: sim_task_test
6/23 Test #6: sim_task_test .................... Passed 0.00 sec
Start 7: sim_scheduler_test
7/23 Test #7: sim_scheduler_test ............... Passed 0.00 sec
Start 8: sim_hal_test
8/23 Test #8: sim_hal_test ..................... Passed 0.00 sec
Start 9: sim_posemath_test
9/23 Test #9: sim_posemath_test ................ Passed 0.00 sec
Start 10: sim_interpreter_test
10/23 Test #10: sim_interpreter_test ............. Passed 0.00 sec
Start 11: sim_source_unit_adapter_test
11/23 Test #11: sim_source_unit_adapter_test ..... Passed 0.00 sec
Start 12: sim_motion_queue_test
12/23 Test #12: sim_motion_queue_test ............ Passed 0.00 sec
Start 13: sim_kinematics_test
13/23 Test #13: sim_kinematics_test .............. Passed 0.00 sec
Start 14: sim_switchkins_test
14/23 Test #14: sim_switchkins_test .............. Passed 0.00 sec
Start 15: sim_userkins_test
15/23 Test #15: sim_userkins_test ................ Passed 0.00 sec
Start 16: sim_kinematics_registry_test
16/23 Test #16: sim_kinematics_registry_test ..... Passed 0.00 sec
Start 17: sim_kinematics_motion_test
17/23 Test #17: sim_kinematics_motion_test ....... Passed 0.00 sec
Start 18: sim_kinematics_feedback_test
18/23 Test #18: sim_kinematics_feedback_test ..... Passed 0.00 sec
Start 19: sim_kinematics_home_limit_test
19/23 Test #19: sim_kinematics_home_limit_test ... Passed 0.00 sec
Start 20: sim_io_test
20/23 Test #20: sim_io_test ...................... Passed 0.00 sec
Start 21: sim_device_io_test
21/23 Test #21: sim_device_io_test ............... Passed 0.00 sec
Start 22: sim_xyzac_trace_test
22/23 Test #22: sim_xyzac_trace_test ............. Passed 0.00 sec
Start 23: sim_linuxcnc_tp_test
23/23 Test #23: sim_linuxcnc_tp_test ............. Passed 0.00 sec
100% tests passed, 0 tests failed out of 23
Total Test time (real) = 0.03 sec
wasm_build=/home/mes006/linuxcncWebWASM/build-wasm/linuxcnc-sim-core.js
native_test=/home/mes006/linuxcncWebWASM/build-native/sim_api_test
native_protocol_test=/home/mes006/linuxcncWebWASM/build-native/sim_protocol_test
wasm_kinematics_test=/home/mes006/linuxcncWebWASM/build-wasm/sim_kinematics_wasm_test.js
wasm_hal_test=/home/mes006/linuxcncWebWASM/build-wasm/sim_hal_wasm_test.js
wasm_source_unit_test=/home/mes006/linuxcncWebWASM/build-wasm/sim_source_unit_adapter_wasm_test.js

View File

@@ -0,0 +1 @@
{"schema":"xyzac-recovery-rtcp-11.v1","status":"verified","case":"linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","checkpoint":{"required_fields":["context_id","simulation_tick","event_cursor","state_hash","task","program","kinematics","motion","wasm_motion","ledger"],"active_type":1,"state_hash":"fnv1a64:00e5c37554124a5d"},"continuous_endpoint_hash":"fnv1a64:6c0c36b47a65d571","restored_endpoint_hash":"fnv1a64:6c0c36b47a65d571","checkpoint_tick":3,"unreplayed_tail_endpoint_hash":"fnv1a64:40beb05449a569c8","endpoint_at_checkpoint_equal":true,"no_duplicate_m428":true,"replayed_operation":true,"corrupt_checkpoint":"blocked","schema_mismatch":"blocked","journal":{"status":"recovered","corrupt_status":"blocked","schema_status":"blocked"},"opfs":{"unavailable_status":"blocked","probe_status":"blocked","physical_crash":"REAL-EXCLUDED"},"first_divergent_tick":null}

View File

@@ -0,0 +1,131 @@
{
"report_id": "trt-checkpoint-exact-v1",
"status": "verified",
"safeguards": {
"corrupt_native_rejected": true,
"foreign_build_rejected": true,
"frozen_subroutines": true,
"heap_relocation_checked": true,
"receipts_nonrecursive": true,
"backward_transport_restore_rejected": true
},
"rows": [
{
"machine": "xyzac-trt",
"phase": "subroutine",
"checkpoint_tick": 6,
"continuation_tick": 18,
"state_hash": "fnv1a64:113cda82a07e692a",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "paused-resumed",
"checkpoint_tick": 18,
"continuation_tick": 30,
"state_hash": "fnv1a64:e380c733d2e27194",
"samples": 12,
"new_transport_recovery": true,
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "line",
"checkpoint_tick": 35,
"continuation_tick": 47,
"state_hash": "fnv1a64:8e128e04aca13b45",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "arc",
"checkpoint_tick": 72,
"continuation_tick": 84,
"state_hash": "fnv1a64:16fef8e7095d1cc7",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "completed",
"checkpoint_tick": 684,
"continuation_tick": 696,
"state_hash": "fnv1a64:571fff3045139a9b",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "trace-and-transport",
"state_hash": "fnv1a64:50c207f5409d5062",
"first_divergent_tick": null
},
{
"machine": "xyzac-trt",
"phase": "post-recovery-jog",
"samples": 6,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "subroutine",
"checkpoint_tick": 6,
"continuation_tick": 18,
"state_hash": "fnv1a64:94587fdc5ce1e3b1",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "paused-resumed",
"checkpoint_tick": 18,
"continuation_tick": 30,
"state_hash": "fnv1a64:5f0adc4aa9f2a037",
"samples": 12,
"new_transport_recovery": true,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "line",
"checkpoint_tick": 35,
"continuation_tick": 47,
"state_hash": "fnv1a64:74b83ca0c127a6c1",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "arc",
"checkpoint_tick": 72,
"continuation_tick": 84,
"state_hash": "fnv1a64:89a768be32ed9eda",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "completed",
"checkpoint_tick": 704,
"continuation_tick": 716,
"state_hash": "fnv1a64:d0cf609cae7c894b",
"samples": 12,
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "trace-and-transport",
"state_hash": "fnv1a64:4e6307e65d801db6",
"first_divergent_tick": null
},
{
"machine": "xyzbc-trt",
"phase": "post-recovery-jog",
"samples": 6,
"first_divergent_tick": null
}
],
"state_hash": "fnv1a64:d7f8b093cb3e4510"
}

View File

@@ -0,0 +1 @@
{"schema":"xyzac-runtime-followups.v1","status":"verified","motion_delta":{"compact_bytes":7224,"full_bytes":23215,"reduction_ratio":0.689},"errors":{"code":"axis_gate","reason":"xyzac_machine_off","message_key":"xyzac_machine_off"},"power_off_persistence":{"schema":"xyzac-power-off-checkpoint.v1","bytes":101157,"restored":"verified"}}

View File

@@ -0,0 +1,657 @@
{
"report_id": "trt-rtcp-jog-browser-v1",
"status": "verified",
"machines": [
{
"coordinates": "XYZAC",
"rows": [
{
"axis": "a",
"before": {
"joints": [
4.266649999999998,
3.8666500000000035,
0,
0,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 59,
"rendered_tick": 59,
"tool_tip": [
0,
2,
0
]
},
"moving": {
"joints": [
4.266649999999998,
5.061423130217634,
-1.709991602392515,
6.300000000000009,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 90,
"rendered_tick": 84,
"tool_tip": [
0,
2,
0
],
"tcp_error": 1.3877787807814457e-17
},
"stopped": {
"joints": [
4.266649999999998,
5.436614141154411,
-2.173445467445781,
8.100000000000021,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 101,
"rendered_tick": 101,
"tool_tip": [
0,
2,
0
],
"tcp_error": 4.441434166503682e-16
}
},
{
"axis": "c",
"before": {
"joints": [
4.266649999999998,
5.436614141154411,
-2.173445467445781,
8.100000000000021,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 101,
"rendered_tick": 101,
"tool_tip": [
0,
2,
0
]
},
"moving": {
"joints": [
3.816579336612649,
5.877023221778387,
-2.1107659733420316,
8.100000000000021,
6.30000000000001
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 132,
"rendered_tick": 126,
"tool_tip": [
0,
2,
0
],
"tcp_error": 4.441976168356516e-16
},
"stopped": {
"joints": [
3.6792686907248924,
5.993602656197197,
-2.0941742628307054,
8.100000000000021,
8.100000000000021
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 143,
"rendered_tick": 143,
"tool_tip": [
0,
2,
0
],
"tcp_error": 1.962615573354719e-17
}
},
{
"axis": "a",
"before": {
"joints": [
3.6792686907248924,
5.993602656197197,
-2.0941742628307054,
8.100000000000021,
8.100000000000021
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 143,
"rendered_tick": 143,
"tool_tip": [
0,
2,
0
]
},
"moving": {
"joints": [
3.6792686907248924,
6.985677681046019,
-3.15582122980466,
12.600000000000016,
8.100000000000021
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 168,
"rendered_tick": 162,
"tool_tip": [
0,
2,
0
],
"tcp_error": 2.5018537765542006e-17
},
"stopped": {
"joints": [
3.6792686907248924,
7.405333794615657,
-3.558119369114298,
14.40000000000003,
8.100000000000021
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 179,
"rendered_tick": 179,
"tool_tip": [
0,
2,
0
],
"tcp_error": 3.7367087251761353e-17
}
},
{
"axis": "c",
"before": {
"joints": [
3.6792686907248924,
7.405333794615657,
-3.558119369114298,
14.40000000000003,
8.100000000000021
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 179,
"rendered_tick": 179,
"tool_tip": [
0,
2,
0
]
},
"moving": {
"joints": [
3.044109145431041,
7.8492876810852135,
-3.444131385053268,
14.40000000000003,
15.900000000000045
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 215,
"rendered_tick": 209,
"tool_tip": [
0,
2,
0
],
"tcp_error": 2.2247786310271853e-16
},
"stopped": {
"joints": [
2.8890836739630625,
7.9395654828013065,
-3.4209519852626453,
14.40000000000003,
17.70000000000001
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": 0,
"y_offset": 20,
"z_offset": 10,
"tool_offset": 0
},
"tick": 226,
"rendered_tick": 226,
"tool_tip": [
0,
2,
0
],
"tcp_error": 3.622208959480119e-17
}
}
]
},
{
"coordinates": "XYZBC",
"rows": [
{
"axis": "b",
"before": {
"joints": [
4.466649999999994,
3.466650000000003,
0,
0,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 284,
"rendered_tick": 284,
"tool_tip": [
0,
1.5,
0
]
},
"moving": {
"joints": [
7.000111209846697,
3.466650000000003,
-5.273183620607902,
11.699999999999944,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 333,
"rendered_tick": 333,
"tool_tip": [
0,
1.4472681637939209,
0
],
"tcp_error": 2.237726045655905e-16
},
"stopped": {
"joints": [
7.292314970736374,
3.466650000000003,
-6.126077205619893,
13.499999999999906,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 344,
"rendered_tick": 344,
"tool_tip": [
0,
1.4387392279438012,
0
],
"tcp_error": 2.7755575615628914e-17
}
},
{
"axis": "c",
"before": {
"joints": [
7.292314970736374,
3.466650000000003,
-6.126077205619893,
13.499999999999906,
0
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 344,
"rendered_tick": 344,
"tool_tip": [
0,
1.4387392279438012,
0
]
},
"moving": {
"joints": [
6.753295838822215,
4.081962692594443,
-5.996670161309499,
13.499999999999906,
8.400000000000015
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 382,
"rendered_tick": 376,
"tool_tip": [
0,
1.4397384871103407,
0
],
"tcp_error": 2.2247786310271853e-16
},
"stopped": {
"joints": [
6.626743801709193,
4.202837259715039,
-5.966287705280346,
13.499999999999906,
10.199999999999976
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 393,
"rendered_tick": 393,
"tool_tip": [
0,
1.4403371229471966,
0
],
"tcp_error": 6.938893903907228e-18
}
},
{
"axis": "b",
"before": {
"joints": [
6.626743801709193,
4.202837259715039,
-5.966287705280346,
13.499999999999906,
10.199999999999976
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 393,
"rendered_tick": 393,
"tool_tip": [
0,
1.4403371229471966,
0
]
},
"moving": {
"joints": [
7.783411671211734,
4.202837259715039,
-10.678717873870822,
23.39999999999989,
10.199999999999976
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 436,
"rendered_tick": 429,
"tool_tip": [
0,
1.4033646717032329,
0
],
"tcp_error": 2.2473876566261383e-16
},
"stopped": {
"joints": [
7.783411671211734,
4.202837259715039,
-10.678717873870822,
23.39999999999989,
10.199999999999976
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 441,
"rendered_tick": 441,
"tool_tip": [
0,
1.3932128212612918,
0
],
"tcp_error": 2.2473876566261383e-16
}
},
{
"axis": "c",
"before": {
"joints": [
7.783411671211734,
4.202837259715039,
-10.678717873870822,
23.39999999999989,
10.199999999999976
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 441,
"rendered_tick": 441,
"tool_tip": [
0,
1.3932128212612918,
0
]
},
"moving": {
"joints": [
7.317075360390216,
4.609695511941566,
-10.476916131895246,
23.39999999999989,
16.79999999999999
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 473,
"rendered_tick": 473,
"tool_tip": [
0,
1.3952308386810475,
0
],
"tcp_error": 2.238801616996866e-16
},
"stopped": {
"joints": [
7.205302306697099,
4.693820235514115,
-10.428547612400239,
23.39999999999989,
18.299999999999997
],
"offsets": {
"x_rot_point": 0,
"y_rot_point": 0,
"z_rot_point": 0,
"x_offset": -20,
"y_offset": 0,
"z_offset": -15,
"tool_offset": 0
},
"tick": 483,
"rendered_tick": 483,
"tool_tip": [
0,
1.3957145238759976,
0
],
"tcp_error": 2.234765555274009e-16
}
}
]
}
],
"browser_errors": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

View File

@@ -0,0 +1 @@
{"schema":"opfs-worker-bridge.v1","status":"verified","ui_commands_do_not_consume_wasm_sequence":true,"poweroff_checkpoint_roundtrip":true}