Complete XYZAC LinuxCNC WASM parity and smooth 3D preview

This commit is contained in:
2026-08-28 06:24:50 +08:00
parent e8fe323aab
commit 1a7995fa9b
181 changed files with 36854 additions and 215 deletions

View File

@@ -2,7 +2,7 @@
"schema": "runtime-mapping-report.v1",
"status": "passed",
"mapped_error_codes": 18,
"commands": 27,
"commands": 50,
"limits": 6,
"real_exclusions": 3
}

View File

@@ -5,20 +5,20 @@
"host devices, unsupported dynamic loaders, and missing LinuxCNC source resources remain blocked"
],
"catalog": {
"catalog_sha256": "ac762b8b27b4b7988c0c8c532c6299a0957a69538ccb42bc65f78593b8ab4815",
"catalog_sha256": "3c35f4b6df095ea0c4d3fcaacab1b5eee08274e451e0229b9668ca6107ef0167",
"module": "web/workspace/sim-case-catalog.mjs"
},
"counts": {
"cases": 235,
"files": 2000,
"indexed_blocked": 226,
"cases": 236,
"files": 2006,
"indexed_blocked": 227,
"indexed_static_ready": 9
},
"implementation_status": "verified",
"inputs": [
{
"path": "coverage/full-configuration-startup-matrix.report.json",
"sha256": "f2140e4c1685ca17738645faedb962dcaa7210200c9151084bd5df40285eadf9"
"sha256": "9345288c2e5353d382a17e2ff18f881d8516f2e792920325c2b5cc28ac17a2f9"
},
{
"path": "coverage/hal-component-manifest.report.json",
@@ -27,33 +27,33 @@
],
"outputs": [
{
"bytes": 226050,
"bytes": 227026,
"path": "web/workspace/sim-case-catalog.mjs",
"sha256": "a43d9868fb8d749cd9aa7958cfc6630cbc1bbf78827feb612d7c2f952d267b99",
"sha256": "e90af5f821e30e5f655dae245448b4ae691961d7b03ee47138bdcbbbb6d16b6a",
"status": "present"
},
{
"bytes": 11291,
"bytes": 14544,
"path": "web/workspace/sim-case-loader.mjs",
"sha256": "9f76f8fd886a9e39990b0036c4a75c1cc5a02325da5487bbe5793702a746f8ee",
"sha256": "a79b4c89e2d06f7d7dba5378848983ae1f8c2baa56729f1238bf31210c1b5675",
"status": "present"
},
{
"bytes": 3444,
"bytes": 3686,
"path": "web/workspace/hal-configuration.mjs",
"sha256": "3979f687b9a808256b918b9e1919a0ed6d59c591cb990d4b7bdb57903c50a385",
"sha256": "44823665f199acc48bbfdf0903acf19e95d5ac4aeededcd570293cb7456169d6",
"status": "present"
},
{
"bytes": 2911,
"bytes": 3546,
"path": "web/workspace/test_sim_case_loader.mjs",
"sha256": "0a07affb488505f91889cb3b843eb84782725b9f337313f1023510778e3381c3",
"sha256": "99f1656f402491c4f1d56b495d7274f440775bc4b557720dd82640b904bc14ba",
"status": "present"
},
{
"bytes": 16777,
"bytes": 16849,
"path": "web/app/app.mjs",
"sha256": "5ae3c3df053383f5ae3242aba20c2c8818b04639868e96514955bd1a760ec2ef",
"sha256": "f2af4be261941e4eaa48e32c1d929fcb8adfa4fe91475c398eec03f1fa99a8a4",
"status": "present"
},
{
@@ -75,7 +75,7 @@
"status": "present"
}
],
"report_sha256": "b17fe0aad525c7b9e914d6a1ff384ab640bc8d3f475e8553aa3745bed02c49c0",
"report_sha256": "09ddb06b10860f9e37d7cb8d40499cb8b6fe3e121b88cd3b371b9df6b3fa91c5",
"schema": "linuxcnc-sim-case-catalog-report.v1",
"scope": "configs/sim case catalog and exact-path browser loader input",
"status": "verified",

View File

@@ -0,0 +1,42 @@
{
"schema": "task-handoff.v1",
"task_id": "PARITY-00",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "Native C, WASM C and Worker protocol/control/state/canonical/recovery traces compare tick-by-tick with positive divergence detection",
"report": {"path": "coverage/xyzac-trt-trace-parity.report.json", "sha256": "39c63aa9af38fd98e49fd68ec2401ee8715fcafef98d47c070a47ab6f6dc0a48"},
"outputs": [
{"path": "scripts/compare_xyzac_native_wasm_trace.py", "sha256": "89834553f2a7afc47e351bbddd33f83259665b943cd7f22fe48acbba32aaf7c4"},
{"path": "web/worker/test_xyzac_trace_parity.mjs", "sha256": "f5c6a7cd3e8b7f72bb1b25b5c368c0e52d494b9c811022d34435e668612ec4ce"},
{"path": "coverage/xyzac-trt-trace-parity.report.json", "sha256": "ef914bb7823b9cdb0f6e15ca409515659d5575d09cdc6da2c458cd81fafa595a"},
{"path": "wasm-core/tests/sim_xyzac_trace_test.c", "sha256": "0a3d5f748d9f69f4212c3a1cdd65fe2986c253442c4de2de78de2e5a5635ff08"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"protocol_level": "passed",
"control_level": "passed",
"state_level": "passed",
"canonical_level": "passed",
"recovery_level": "passed",
"native_wasm_exact": "passed",
"native_worker_semantic": "passed",
"positive_divergence_tick": "passed",
"report_self_hash": "passed",
"native_ctest_21": "passed",
"react_typecheck_build": "passed"
},
"evidence": {
"levels": ["protocol", "control", "state", "canonical", "recovery"],
"first_divergent_tick": null,
"positive_sample_tick": 2,
"positive_sample_path": "$[1].active_type",
"native_wasm_trace_sha256": "18d2ef9d77f9a7a5bf2fa8d9380c8b04383a58ee2b0258364cba31ec34a168f0"
},
"failure_samples": [],
"next_task": "RTCP-09",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,40 @@
{
"schema": "task-handoff.v1",
"task_id": "RELEASE-00",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "Selected xyzac-trt.ini WASM-only release gate verified; release remains STOP_RELEASE by explicit scope governance",
"report": {"path": "coverage/xyzac-trt-wasm-only-release-gate.report.json", "sha256": "368bc17b4ade17b8567abe299b7d7395abc0f09d187028a0cb750aa170b5891c"},
"outputs": [
{"path": "scripts/generate_xyzac_trt_wasm_only_release_gate.py", "sha256": "06e4c564d0b4fc482150ffd19ae7ce93d553a6bf525144159875d824054eca70"},
{"path": "coverage/xyzac-trt-wasm-only-release-gate.report.json", "sha256": "f85319a0d1a5bc28a2ab06aed6c043ba1fff8a5d69d8901754b6d62ce6eb0c1c"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"wasm_authority": "passed",
"all_13_selected_case_reports": "passed",
"native_worker_trace": "passed",
"browser_matrix": "passed",
"recovery_endpoint": "passed",
"scope_exclusions_explicit": "passed",
"release_report_self_hash": "passed"
},
"evidence": {
"selected_case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"candidate_eligible": false,
"release_status": "STOP_RELEASE",
"blockers": [
"HOST_EXCLUDED: Safari not in project scope",
"REAL-EXCLUDED: physical power loss not simulated",
"HOST_EXCLUDED: xyzbc/3axis/other LinuxCNC cases out of scope"
],
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": null,
"next_task_status": "complete",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,42 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-01",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"result": "XYZAC Worker topology, logical scheduler, command ledger and cancellation/reconcile contract verified",
"outputs": [
{"path": "web/worker/xyzac-session.mjs", "sha256": "9cbbbd08ae372e515bafe906f87fe3a9552571f52997b4e5495b42a36097c6b3"},
{"path": "web/worker/xyzac-scheduler.mjs", "sha256": "0c7544298869c9c2858cce1275db8f3f2034655a5aa92aac5bd6dbf2b16e3221"},
{"path": "web/worker/xyzac-command-ledger.mjs", "sha256": "90d5fd10547f544338014a026a407cfb73f08c639bf0f1bef9c19a85fbcd16f5"},
{"path": "web/worker/test_xyzac_session.mjs", "sha256": "76cd74a09a0318a33d70529f7c5b9cad25fd0daebd6dd8bb05f87b42626858ef"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"xyzac_session": "passed",
"xyzac_case_worker": "passed",
"xyzac_program_authority": "passed",
"xyzac_io_authority": "passed",
"ledger_replay_commit": "passed",
"ledger_timeout_reconcile": "passed",
"cancel_no_blind_retry": "passed",
"scheduler_logical_tick": "passed",
"native_ctest": "20/20 passed",
"react_typecheck_build": "passed"
},
"evidence": {
"session_authority": "linuxcnc-wasm-worker",
"machine": {"coordinates": "XYZAC", "joint_count": 5, "kinematics": "xyzac-trt", "rotary_units": "degrees"},
"scheduler_tick": 3,
"scheduler_state_hash": "fnv1a64:d6b307bada354385",
"replayed": true,
"committed_operation": "step-1",
"pending_after_abort": 0,
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RTCP-02",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,35 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-02",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "Exact xyzac-trt.ini resource closure and startup state machine verified; xyzbc/3axis/other cases excluded",
"report": {"path": "coverage/xyzac-trt-startup.report.json", "sha256": "12cdae5c4547d8f2647da1f4721e147807ba738474adeb60901b3d837e4cb39e"},
"outputs": [
{"path": "web/workspace/xyzac-trt-case-loader.mjs", "sha256": "8480a20a13301cfc8dd37fbe66cf9b4cbfbfd7bd18623e81499a583c72f9f44a"},
{"path": "coverage/xyzac-trt-startup.report.json", "sha256": "56e040b645bcefc3d6c57244cb2d3aba16f421ff5137089d9c3336970dfd968b"},
{"path": "web/worker/test_xyzac_startup.mjs", "sha256": "013023e5f0a01d93ed8ab568879937f462a97e2fe08742995f15775c867fb8aa"},
{"path": "scripts/generate_xyzac_trt_startup_report.py", "sha256": "0b7fca4feb6039423b92164cd57802b7aaaefa7e141dffd38cb024f9b031fb5e"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"xyzac_startup_test": "passed",
"startup_report_self_hash": "passed",
"exact_resource_count": 15,
"required_ini_sections": 7,
"hal_record_count": 165,
"missing_resource_fail_closed": "passed",
"xyzac_worker_case": "passed",
"native_ctest": "20/20 passed",
"react_typecheck": "passed"
},
"startup_state_sequence": ["TASK_NEW", "CONFIG_RESOLVED", "HAL_READY", "RUNTIME_READY", "TASK_READY"],
"machine": {"coordinates": "XYZAC", "joint_count": 5, "rotary_units": "degrees", "kinematics": "xyzac-trt"},
"failure_samples": [],
"next_task": "RTCP-03",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,41 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-03",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "XYZAC authoritative snapshot, axis_state projection and gate matrix verified",
"report": {"path": "coverage/xyzac-trt-gate-matrix.report.json", "sha256": "25deaea6a1fb442d86e660319fdd1d3061ca7da0af7d48858258aad4c71ec56c"},
"outputs": [
{"path": "web/worker/test_xyzac_gate_matrix.mjs", "sha256": "07e4f05f3b7bf470fb87ecea077587e7584928d28fe7e28932f8a649c960525d"},
{"path": "coverage/xyzac-trt-gate-matrix.report.json", "sha256": "7c8cb2dad644e54462b30dd0ec3e3e792ecee8da67c9c2de236bc38f1c0e6188"},
{"path": "web/app/axis-contract.mjs", "sha256": "51854238857e03c42abe91f1dec4da3f49734386a6cf3d99dae97d7f07ebafd5"},
{"path": "web/worker/sim-session.mjs", "sha256": "bdde47643f15780fe32cc10fe1b8542bd70c3170fd057b26d34b5c79ccd9dc29"},
{"path": "scripts/generate_xyzac_trt_gate_matrix_report.py", "sha256": "a5ec4edbe3f416f134812fe8e4b7222a426de0aa7b524fb9deafbcc3d999b6a9"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"xyzac_gate_matrix": "passed",
"gate_report_self_hash": "passed",
"xyzac_worker_case": "passed",
"panel_gate_regression": "passed",
"axis_contract_regression": "passed",
"react_typecheck": "passed"
},
"gate_scenarios": {
"no_file": "axis_taskfile_missing",
"highlight_missing": "axis_highlight_missing",
"switchkins_hal_missing": "xyzac_hal_pin_vars_missing",
"switchkins_estop": "xyzac_estop_active",
"running_pause_abort": "verified",
"paused_resume": "verified",
"vismach_clear_visual_only": "verified"
},
"state_hash": "fnv1a64:a95c3da31e470f59",
"failure_samples": [],
"next_task": "RTCP-04",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,20 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-04",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "WASM canonical XYZAC program load/preview/ledger flow verified",
"report": {"path": "coverage/xyzac-trt-program-preview.report.json", "sha256": "ad151b42a738667f0d62f1811409190adc06f5b59f3bde9019eec8b895abf736"},
"outputs": [
{"path": "web/worker/test_xyzac_program_preview.mjs", "sha256": "2ecec15067d0350741b1a02d14dd4aed3587ef1bc236065a51c28bc3391c2eef"},
{"path": "coverage/xyzac-trt-program-preview.report.json", "sha256": "3398060c346e51691717b43c164322c333cab951a5c83ac3dd5e87fe0e452429"},
{"path": "web/worker/wasm-program-runtime.mjs", "sha256": "3a91b2111f9803d58c8dc6dfc8fb0db4f7343cc7b87108bc53b642a13032c844"}
],
"checks": {"baseline": "passed", "download_index": "passed", "pointer": "passed", "xyzac_program_preview": "passed", "preview_report_self_hash": "passed", "source_path_hash": "passed", "canonical_segments": "passed", "invalid_gcode_fail_closed": "passed", "empty_program_fail_closed": "passed", "program_load_replay": "passed", "xyzac_worker_case": "passed", "react_typecheck": "passed"},
"evidence": {"source_hash": "fnv1a64:b7f4678312207b31", "line_count": 5, "segment_count": 2, "preview_hash": "fnv1a64:e226b45322b06337", "state_hash": "fnv1a64:d1505250bdc90614", "preview_authority": "linuxcnc-wasm-sim_program", "first_divergent_tick": null},
"failure_samples": [],
"next_task": "RTCP-05",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,20 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-05",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "WASM XYZAC Run/Pause/Resume/Step/Abort/Restart/Run-from-line workflow verified",
"report": {"path": "coverage/xyzac-trt-workflow.report.json", "sha256": "5abbef3106546d65d0951cce07777532903653abeed52221a9c8ecd142d5bc0d"},
"outputs": [
{"path": "web/worker/test_xyzac_workflow.mjs", "sha256": "6c738c6993d43b4ce16feecfe87d2b507824a88b06ead2f0659db6ca25c346b5"},
{"path": "scripts/generate_xyzac_trt_workflow_report.py", "sha256": "f1f4b34105b64d7caea34921ec8504d0c58006ee0fd9fa15561cecb1cba93abb"},
{"path": "coverage/xyzac-trt-workflow.report.json", "sha256": "0a9749ed647fb5ead26681719468470b7cf9e765ea4df5881d74404c019c0a5d"}
],
"checks": {"baseline": "passed", "download_index": "passed", "pointer": "passed", "xyzac_workflow": "passed", "workflow_report_self_hash": "passed", "run_pause_resume_step": "passed", "abort_queue_empty": "passed", "restart_source_hash": "passed", "run_from_line": "passed", "checkpoint_recovery": "passed", "xyzac_preview_regression": "passed", "xyzac_gate_regression": "passed", "react_typecheck": "passed"},
"evidence": {"tick_after_first": 1, "active_before_abort": 1, "pause_cursor": 1, "restart_source_hash": "fnv1a64:7e075e2e695feafd", "run_from_line": 4, "recovery": "recovered", "final_state_hash": "fnv1a64:de58dbdf1fa2606f", "first_divergent_tick": null},
"failure_samples": [],
"next_task": "RTCP-06",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,21 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-06",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "WASM XYZAC MDI, five-axis jog, home, limits and ESTOP recovery verified",
"report": {"path": "coverage/xyzac-trt-manual-control.report.json", "sha256": "ec2180de513726dc70c0940ed15e03a7d9e54714960ba7246aba19eaf95d849b"},
"outputs": [
{"path": "web/worker/test_xyzac_manual_control.mjs", "sha256": "75ed33fcbe9f40f0c244029b4dd57017c4f9944107c88c5500ade5c6e67fe893"},
{"path": "coverage/xyzac-trt-manual-control.report.json", "sha256": "012871cb9758621d0b38a0acf240e5d077b332a72bad42d9592fe39c86567a99"},
{"path": "wasm-core/src/sim_posemath.c", "sha256": "2e63d8cc2bf4275a89238b2622b41dcd8dfabfe6d24ef5918628083a4f4f5216"},
{"path": "wasm-core/src/sim_motion_queue.c", "sha256": "252de61937b685689c479be60e6ce398364790ef5034e54cd89db138b368937f"}
],
"checks": {"baseline": "passed", "download_index": "passed", "pointer": "passed", "xyzac_manual_control": "passed", "manual_report_self_hash": "passed", "home_five_joints": "passed", "jog_xyz": "passed", "jog_ac_degrees": "passed", "mdi": "passed", "nonfinite_speed": "passed", "range_boundary": "passed", "following_error": "passed", "mdi_running_gate": "passed", "estop_recovery": "passed", "xyzac_workflow_regression": "passed", "react_typecheck": "passed"},
"evidence": {"linear_axes": ["X", "Y", "Z"], "angular_axes": ["A", "C"], "angular_units": "degrees", "home_joint_count": 5, "jog_state_hash": "fnv1a64:458a605f469d43cc", "first_divergent_tick": null},
"failure_samples": [],
"next_task": "RTCP-07",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,60 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-07",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "WASM XYZAC HAL, PyVCP, tool, spindle, coolant, device acknowledgement and alarm authority verified",
"report": {
"path": "coverage/xyzac-trt-hal-tool-alarm.report.json",
"sha256": "3b59d77a19277228a3d37d00486c5344571392651adcf4b7d019217d0880fbe8"
},
"outputs": [
{
"path": "web/worker/test_xyzac_hal_tool_alarm.mjs",
"sha256": "731ff64fc5b9abd70c6ab6649a2644e51e363bda710a0d4ec9faeffa3bb77db3"
},
{
"path": "coverage/xyzac-trt-hal-tool-alarm.report.json",
"sha256": "d0e8fef743ea45ed230a29bb5deefa563f07d82df85e6f9c70be56f67e79031a"
},
{
"path": "web/worker/wasm-xyzac-io.mjs",
"sha256": "c5b77654b952e0656edc9d649f07af6e3244d649313761b9ff42aed329c98f0b"
},
{
"path": "web/worker/sim-session.mjs",
"sha256": "ec5846105eeecb5dcf5d9ec579ff00b185eaaba2039caeabe1e9a199a6749873"
}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"xyzac_hal_tool_alarm": "passed",
"hal_tool_alarm_report_self_hash": "passed",
"pyvcp_switches": "passed",
"vismach_clear_visual_only": "passed",
"hal_write_allowlist": "passed",
"tool_spindle_coolant": "passed",
"device_ack_timeout_abort": "passed",
"xyzac_io_regression": "passed",
"xyzac_manual_control_regression": "passed",
"native_ctest": "passed",
"react_typecheck_build": "passed"
},
"evidence": {
"pyvcp_m_codes": ["M429", "M428", "M430"],
"hal_allowed": "motion.probe-input",
"hal_denied_code": "wasm_hal_write_denied",
"tool": 7,
"spindle_rpm": 1200,
"ack_timeout_code": "wasm_sim_device_ack_ack_-1008",
"state_hash": "fnv1a64:78582773ec5a3bbe",
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RTCP-08",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,60 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-08",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "WASM XYZAC identity/TRT/userk kinematics, offsets, limits, multi-turn G93 arc, switchkins and lifecycle recovery verified",
"report": {
"path": "coverage/xyzac-trt-rtcp.report.json",
"sha256": "c370004d8f2d962937b3b91abe2b0dd1632283f570e29d2d194731bc0fe0a083"
},
"outputs": [
{"path": "web/worker/test_xyzac_rtcp.mjs", "sha256": "9bc14997e56a8d0f6f0043b3a92fa5efe0fc8b3fa9c973bffa9045446973208f"},
{"path": "coverage/xyzac-trt-rtcp.report.json", "sha256": "b1562d6d2c9cd5144c7c8c9b334bd8bf67919ea7297f103ec67cb32773608d08"},
{"path": "web/worker/wasm-xyzac-kinematics.mjs", "sha256": "f14581a52830df5f55d612a1ec88d82737bb429ff63b5267ea3903984be6050e"},
{"path": "web/worker/sim-session.mjs", "sha256": "f3b3f78146a08ad0f770bceae9cb46e66dd997c1270e3be7e27c544c2f5d3b6b"},
{"path": "wasm-core/src/sim_interpreter.c", "sha256": "714396428b6826d9ac8c05d654dcc33acf24eef4b6393f610c8997997e540e5a"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"xyzac_rtcp_k0_k6": "passed",
"rtcp_report_self_hash": "passed",
"identity_forward_inverse": "passed",
"xyzac_forward_inverse_offsets": "passed",
"userk_static_capability": "passed",
"dynamic_userk_rejection": "passed",
"switchkins_pose_preservation": "passed",
"g93_multiturn_arc": "passed",
"pause_abort_restart_recovery": "passed",
"native_ctest_20": "passed",
"wasm_switchkins_kinematics_userkins": "passed",
"xyzac_worker_regressions": "passed",
"motion_checkpoint_regression": "passed",
"react_typecheck_build": "passed"
},
"evidence": {
"coordinates": "XYZAC",
"linear_units": "mm",
"angular_units": "deg",
"range_error": "wasm_xyzac_forward_-702",
"nonfinite_error": "wasm_xyzac_forward_-701",
"dynamic_userk_error": -712,
"helix_turn": -3,
"recovered_active_type": 1,
"recovered_state_hash": "fnv1a64:8c57efd84475776a",
"first_divergent_tick": null
},
"failure_samples": [
{
"classification": "HOST_EXCLUDED",
"code": "wasm_ctest_node18_local_url",
"detail": "CTest sim_api_test uses Node 18 fetch on a bare local .wasm path; real Node 24 Worker module and single-file WASM tests passed"
}
],
"next_task": "PARITY-00",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,42 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-09",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "XYZAC additive Worker commands, typed snapshot projection, React controls, gate/operation/alarm/recovery visibility and browser layout verified",
"report": {"path": "coverage/xyzac-trt-protocol-react.report.json", "sha256": "ad83b98df362f1f7e25effbdbf43da2b2ea4e2b0f1f185568f33495c88aba854"},
"outputs": [
{"path": "web/react/src/XyzacTrtPanel.tsx", "sha256": "f17e25f74d87a39a1bd7520f65cf1b285cb4c38d8e4fcaec13320e41c4ca6511"},
{"path": "web/react/src/xyzac-panel-contract.ts", "sha256": "650ac562d6153c992762a138752e5821e0d4fc16706622511cb94e4a733e6733"},
{"path": "coverage/xyzac-trt-protocol-react.report.json", "sha256": "94bb31615c0cbe5a227fbfd6af42ed1b6ace82880d2453bd3cde89340647fc6d"},
{"path": "web/worker/test_xyzac_protocol_react.mjs", "sha256": "69d942dfdcb7bc0d7fb26d6708220a47af13aa84acdcf490780980f6de0cc03d"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"additive_power": "passed",
"kinematics_select": "passed",
"visual_clear_visual_only": "passed",
"gate_rejection_reason": "passed",
"operation_pending_ack_result": "passed",
"react_worker_only_static_audit": "passed",
"react_typecheck_build": "passed",
"browser_desktop": "passed",
"browser_mobile": "passed",
"canvas_nonblank": "passed",
"horizontal_overflow": "passed"
},
"evidence": {
"commands": ["POWER", "KINEMATICS_SELECT", "VISUAL_CLEAR"],
"components": ["XyzacTrtPanel", "XyzacProgramPane", "XyzacKinematicsControl", "XyzacManualPanel", "XyzacDiagnostics"],
"browser": {"desktop": [1440, 1000], "mobile": [390, 844], "desktop_status": "READY", "mobile_status": "READY", "desktop_scroll_width": 1425, "mobile_scroll_width": 390},
"state_hash": "fnv1a64:4034107d88cc3171",
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RTCP-10",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,43 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-10",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "Three.js XYZAC TRT Vismach hierarchy, signed table/saddle/spindle translations, A/C rotations, tool offset and authoritative visual trace verified",
"report": {"path": "coverage/xyzac-trt-threejs.report.json", "sha256": "592f729730cb122238edefd90417399cd2f21a2084603001d1b46aadad7b261f"},
"outputs": [
{"path": "web/react/src/XyzacMachineView.tsx", "sha256": "2645e2dadeda98357e73974ae7a48b5fb825a2362ddca33689604bb11ee78a71"},
{"path": "web/react/src/XyzacToolPreview.tsx", "sha256": "32f6879594c3ed9bb6a9f2bb17650ea2cfb89a972c93ce31091bcccc73cdb6ef"},
{"path": "web/react/src/xyzac-visual-adapter.ts", "sha256": "1e9aca3e5f206876310268b86c5cabd0c37cd23a28cfbf599e29612effdf20dd"},
{"path": "web/react/src/test_xyzac_threejs.mjs", "sha256": "a858df19658826e92e5d6f6df566a16741741648631f4e02f36b2825b97f6e7d"},
{"path": "web/react/src/test_xyzac_tool_preview.mjs", "sha256": "be345e8df99a1bb4912c2a1fb334ed1823e03dd2ba67ca6cf60bee927d269b0a"},
{"path": "coverage/xyzac-trt-threejs.report.json", "sha256": "0bdd0e072c7d1c87f1a3183ca522cc61baf0bdc3d26a94199d1f3e005a960dbb"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"machine_hierarchy": "passed",
"tool_preview_separated": "passed",
"ac_direction_offset": "passed",
"authoritative_tick_hash": "passed",
"canvas_nonblank_desktop": "passed",
"canvas_nonblank_mobile": "passed",
"visual_clear_nonmutating": "passed",
"horizontal_overflow_desktop_mobile": "passed",
"react_typecheck_build": "passed",
"xyzac_worker_regressions": "passed",
"native_ctest_21": "passed"
},
"evidence": {
"machine_groups": ["xyzac-machine", "table-x", "saddle-y", "spindle-z", "tilt-a", "rotate-c", "tool-offset", "xyzac-toolpath", "xyzac-live-toolpath"],
"direction": {"table_x": -1, "saddle_y": -1, "spindle_z": -1, "tilt_a": "x+", "rotate_c": "z+", "tool_offset": "z-"},
"browser_pixel_oracle": {"desktop_nonzero_pixels": 777266, "mobile_nonzero_pixels": 118864},
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RTCP-11",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,45 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-11",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "XYZAC WASM checkpoint/journal/restart/replay/reconcile recovery verified with no duplicate M428 and fail-closed corruption paths",
"report": {"path": "coverage/xyzac-trt-recovery.report.json", "sha256": "9dc18abe81d4d7f84ef2543d664895f43ffd52ab5b4925672402724902b2369f"},
"outputs": [
{"path": "web/worker/test_xyzac_recovery.mjs", "sha256": "d8f02b0ab5b7c9fc5ef30a3a67f7896071ecf9bbaa7d2f3614c031d118e655e7"},
{"path": "coverage/xyzac-trt-recovery.report.json", "sha256": "a863e06fce29904913b38526fe0f780f3f8912f0e741763c1e7221283a335808"},
{"path": "scripts/generate_xyzac_trt_recovery_report.py", "sha256": "5e75fe82fd069d891e7a34a07da7aa9b4e7b3152b6b61ce791a77a97e2dc957c"},
{"path": "web/worker/sim-session.mjs", "sha256": "0ab5e206629e005eabb834db8bb90106e28f2cfcc23ddec4acbb96f38c3d5423"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"checkpoint_minimum_fields": "passed",
"endpoint_pose_joints_program_hash": "passed",
"no_duplicate_m428": "passed",
"ledger_reconcile": "passed",
"corrupt_checkpoint_fail_closed": "passed",
"schema_mismatch_fail_closed": "passed",
"journal_commit_recovery": "passed",
"journal_corruption_fail_closed": "passed",
"opfs_unavailable_fail_closed": "passed",
"native_ctest_21": "passed",
"react_typecheck_build": "passed"
},
"evidence": {
"required_checkpoint_fields": ["context_id", "simulation_tick", "event_cursor", "state_hash", "task", "program", "kinematics", "motion", "wasm_motion", "ledger"],
"endpoint_at_checkpoint_equal": true,
"no_duplicate_m428": true,
"replayed_operation": true,
"corrupt_checkpoint": "blocked",
"schema_mismatch": "blocked",
"opfs_physical_crash": "REAL-EXCLUDED",
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RTCP-12",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,38 @@
{
"schema": "task-handoff.v1",
"task_id": "RTCP-12",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"scope": "xyzac_only",
"result": "Selected xyzac-trt.ini native/Worker/WASM/React/Three.js parity aggregate verified with explicit release exclusions",
"report": {"path": "coverage/xyzac-trt-web-wasm-parity.report.json", "sha256": "676f94870045670d2808c2193bded706fdd4909f06d70be00f46dd2653d92927"},
"outputs": [
{"path": "scripts/generate_xyzac_trt_web_wasm_parity_report.py", "sha256": "fd658a157981d8ca8bd95eecea3cf803443c0f10c7d7ca1dde75c184a69abd4d"},
{"path": "coverage/xyzac-trt-web-wasm-parity.report.json", "sha256": "032912a30e5bdd970f6ff10cadb9a30642b7bdb45252ea40cd7f1b953a1050c7"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"all_13_selected_case_reports": "passed",
"native_wasm_trace": "passed",
"native_worker_trace": "passed",
"first_divergent_tick_normal": "null",
"first_divergent_tick_positive_sample": "2",
"browser_desktop_mobile": "passed",
"recovery_endpoint_equal": "passed",
"blocker_identity_explicit": "passed",
"report_self_hash": "passed"
},
"evidence": {
"report_count": 13,
"candidate_eligible": false,
"release_status": "STOP_RELEASE",
"excluded": ["Safari", "physical power loss", "host hardware", "xyzbc", "3axis", "other cases"],
"first_divergent_tick": null
},
"failure_samples": [],
"next_task": "RELEASE-00",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,33 @@
{
"schema": "task-handoff.v1",
"task_id": "SRC-00-REMEDIATION",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"result": "resolved native source startup, exact intro resource, and XYZAC native/WASM/Worker evidence",
"reports": [
{"path": "coverage/xyzac-trt-native-wasm-parity.report.json", "sha256": "ec9c3d9062ab68ab542e5193852e7f8296a40c9c1813d9a303b0971cf4b89598"},
{"path": "coverage/xyzac-trt-source-slice-inventory.report.json", "sha256": "69385c93662a6627dc6d83eaca851411ddf76156ae9aa85f56d4e029455e68ef"}
],
"resolved": [
"run-5axis-rtcp.sh now uses the repository run-in-place launcher",
"sim_lib.tcl recognizes xyzac-trt-kins and xyzbc-trt-kins",
"INTRO_GRAPHIC uses the existing linuxcnc.gif exact manifest asset",
"Worker loads xyzac-trt-headless_cmds.hal fixture and TASK_READY",
"WASM C API supplies XYZAC five-joint kinematics and M428/M429/M430 transitions"
],
"checks": {
"native_xyzac_xyzbc_startup": "passed",
"native_wasm_kinematics_trace": "passed",
"native_wasm_switchkins_trace": "passed",
"xyzac_worker_case": "passed",
"source_slice_self_hash": "passed",
"native_ctest": "20/20",
"wasm_kinematics_tests": "passed",
"react_typecheck": "passed"
},
"evidence": {"control_count": 110, "menus": 80, "toolbar": 20, "keyboard": 10, "slices": 11, "direct_sources": 35, "unregistered_slices": 0, "js_authority": 0, "first_divergent_tick": null},
"packet": {"path": "coverage/task-packets/SRC-00-REMEDIATION.json", "sha256": "855839e8a1e5ca5168330ab25a3dc6eebc87ce3f9b6e69475c53e2b74a2b4e33"},
"next_task": "WASM-00",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,42 @@
{
"schema": "task-handoff.v1",
"task_id": "SRC-00",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"result": "source inventory, native/WASM parity, and exact XYZAC Worker authority evidence verified",
"reports": [
{"path": "coverage/xyzac-trt-source-slice-inventory.report.json", "sha256": "601fb94f39681e382262b0ed6d6890f9db67e27a8ff4383b977fb073b46562e4"},
{"path": "coverage/xyzac-trt-native-wasm-parity.report.json", "sha256": "f67633527c623e826c14d89687139d109d046fdeaf445fc754506a66c8262d8e"}
],
"checks": {
"baseline": "passed",
"download_index": "passed",
"pointer": "passed",
"source_slice_unittest": "passed",
"source_slice_self_hash": "passed",
"native_xyzac_xyzbc_startup": "passed",
"native_wasm_kinematics_trace": "passed",
"native_wasm_switchkins_trace": "passed",
"xyzac_worker_case": "passed",
"mjs_syntax": "passed",
"react_typecheck": "passed"
},
"evidence": {
"control_count": 110,
"menus": 80,
"toolbar": 20,
"keyboard": 10,
"slices": 11,
"direct_sources": 35,
"unregistered_slices": 0,
"blocked_resources": 0,
"js_authority": 0,
"first_divergent_tick": null,
"worker_state_hash": "fnv1a64:72275811a4320d7c"
},
"failure_samples": [],
"packet": {"path": "coverage/task-packets/SRC-00.json", "sha256": "a13fa893653494bf12cee5e15c38cc6c74edc6ffcd02a10cb788c4a87e3cf37b"},
"next_task": "WASM-00",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,45 @@
{
"schema": "task-handoff.v1",
"task_id": "WASM-00-REMEDIATION",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "verified",
"result": "selected XYZAC authority verified for the simulation scope; physical power-loss and Safari are accepted scope exclusions",
"report": {"path": "coverage/xyzac-trt-wasm-authority-audit.report.json", "sha256": "279a9c2b0496e415cb3da25fc387ee245e826e942b67471a25796a3c23122205"},
"implemented": [
"sim_program C/WASM runtime owns selected XYZAC program load/control/interpreter/motion events",
"selected XYZAC jog/home/limit validation routes through WASM motion queue and home-limit",
"selected XYZAC snapshots omit JS compatibility planner state",
"sim_io C/WASM owns spindle/tool/probe/ESTOP/recovery and HAL scalar writes",
"sim_device_io C/WASM owns encoder/coolant/door/interlock/ack state",
"Chromium SIGKILL/profile reopen and corruption detection verified",
"Firefox Worker OPFS round-trip verified"
],
"tests": {
"native_ctest": "20/20 passed",
"react_typecheck_build": "passed",
"xyzac_worker": "passed",
"xyzac_program_authority": "passed",
"xyzac_io_authority": "passed",
"native_xyzac_xyzbc_startup": "passed",
"native_wasm_parity": "passed",
"chromium_opfs_crash": "passed",
"chromium_opfs_corruption": "passed",
"firefox_opfs_round_trip": "passed",
"authority_audit": "passed"
},
"authority_matrix": {
"program_interpreter": "verified",
"motion_jog_home_limit": "verified",
"task_state": "verified",
"hal_io_tool_probe": "verified",
"kinematics_rtcp_switchkins": "verified"
},
"accepted_scope_exclusions": [
{"code": "PHYSICAL_POWER_LOSS_OUTSIDE_BROWSER", "status": "accepted_scope_exclusion"},
{"code": "SAFARI_NOT_REQUIRED", "status": "accepted_scope_exclusion"}
],
"failure_samples": [],
"next_task": "RTCP-01",
"next_task_status": "queued",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,38 @@
{
"schema": "task-handoff.v1",
"task_id": "WASM-00",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "blocked",
"result": "XYZAC WASM authority audit completed; selected Worker trace is verified but JS authority and external recovery/browser boundaries remain open",
"report": {"path": "coverage/xyzac-trt-wasm-authority-audit.report.json", "sha256": "36fdd77229015634dcde9f796e32eb0435ae2729dc4267aca28d081179a44d7f"},
"packet": {"path": "coverage/task-packets/WASM-00.json", "sha256": "4bdb5ca36b7a57d977248693ebea2b76a6bc9cc7d3a8998d59983630a342e73e"},
"checks": {
"authority_audit_unittest": "passed",
"report_self_hash": "passed",
"xyzac_worker_trace": "passed",
"worker_motion_authority": "wasm",
"first_divergent_tick": null,
"react_direct_wasm_pointer": "passed",
"react_direct_opfs_writer": "passed"
},
"evidence": {
"control_count": 110,
"switchkins": ["M429", "M428", "M430"],
"tick_sequence": [0, 0, 0],
"state_hash": "fnv1a64:72275811a4320d7c",
"js_authority_call_count": 0,
"js_authority_findings": 3,
"blocker_count": 5,
"candidate_eligible": false
},
"failure_samples": [
{"code": "JS_PROGRAM_CONTROL_FLOW", "detail": "ProgramRunner executes control directives and schedules interpreter blocks from JS"},
{"code": "JS_MOTION_STATE_MIRROR", "detail": "MotionState owns XYZAC-relevant HOME/JOG/limit/fault transitions"},
{"code": "JS_COMPATIBILITY_PLANNER_PRESENT", "detail": "AuthoritativeRuntime remains constructed and serializable for the selected session"},
{"code": "BROWSER_OPFS_ORACLE_BLOCKED", "detail": "physical OPFS crash/restart and Firefox/Safari matrix are unavailable"},
{"code": "FULL_XYZAC_AUTHORITY_MATRIX_PENDING", "detail": "HAL/IO/tool/probe and non-selected authority closure remain outside WASM-00"}
],
"next_task": "RTCP-01",
"next_task_status": "blocked",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,76 @@
{
"authority": "linuxcnc-wasm-worker",
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"HELLO",
"SESSION_ATTACH",
"LOAD_WORKSPACE",
"PROGRAM_LOAD",
"PROGRAM_RUN",
"PROGRAM_PAUSE",
"PROGRAM_ABORT",
"ESTOP",
"IO_RECOVER",
"SNAPSHOT_REQUEST"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"failure_samples": [],
"gate_scenarios": {
"highlight_missing": {
"reason": "axis_highlight_missing",
"status": "verified"
},
"no_file": {
"reason": "axis_taskfile_missing",
"status": "verified"
},
"paused_resume": {
"resume": true,
"status": "verified"
},
"running_pause_abort": {
"abort": true,
"pause": true,
"status": "verified"
},
"switchkins_estop": {
"reason": "xyzac_estop_active",
"status": "verified"
},
"switchkins_hal_missing": {
"reason": "xyzac_hal_pin_vars_missing",
"status": "verified"
},
"vismach_clear": {
"status": "verified",
"visual_only": true
}
},
"release_status": "STOP_RELEASE",
"report_sha256": "ae3ebd07146e75e1fa50c90d37e56ca195e2c6b82069718aedf9b63338ad2219",
"schema": "xyzac-gate-matrix-rtcp-03.v1",
"scope": "xyzac_only",
"state_hash": "fnv1a64:9abaa158693c6300",
"status": "verified",
"task_id": "RTCP-03",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_gate_matrix.mjs"
],
"output_sha256": "a8e61897c9e8f666970804f4ba8d0a959557960df40bf26261a7b4d73517de9a",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
0,
0,
0
]
}

View File

@@ -0,0 +1,87 @@
{
"ack": {
"abort": "verified",
"normal": "verified",
"timeout": "wasm_sim_device_ack_ack_-1008"
},
"alarm": {
"code": "wasm_hal_write_denied",
"operation_id": "hal-denied"
},
"authority": "linuxcnc-wasm-worker",
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"MDI_EXECUTE:M429",
"MDI_EXECUTE:M428",
"MDI_EXECUTE:M430",
"VCP_UPDATE:VISMACH_CLEAR",
"HAL_SET_ALLOWED",
"HAL_SET_DENIED",
"SPINDLE_COMMAND",
"COOLANT_COMMAND",
"TOOL_PREPARE",
"TOOL_CHANGE",
"MDI:G43",
"MDI:G49",
"DEVICE_ACK",
"DEVICE_ACK_TIMEOUT",
"DEVICE_ACK_ABORT"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"coolant": {
"flood": 1,
"lube": 0,
"mist": 1
},
"failure_samples": [],
"hal": {
"allowed": "motion.probe-input",
"denied": "wasm_hal_write_denied"
},
"hal_write_policy": {
"direct_switchkins_write": "denied",
"mode": "allowlist",
"switchkins_path": "M429/M428/M430"
},
"pyvcp": [
"M429",
"M428",
"M430",
"vismach-clear"
],
"release_status": "STOP_RELEASE",
"report_sha256": "75c368880a881da1230d3e66ec5265ad693053dc9eecce462d92c84f5a025872",
"schema": "xyzac-hal-tool-alarm-rtcp-07.v1",
"scope": "xyzac_only",
"spindle_rpm": 1200,
"state_hash": "fnv1a64:184c713588cb828d",
"status": "verified",
"task_id": "RTCP-07",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_hal_tool_alarm.mjs"
],
"output_sha256": "02c7e7eace9b8be9d3a3144f259fdfbf870569df26ba01c22b4146e1bc3bc9e2",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
0,
10,
30,
31
],
"tool": 7,
"visual_clear": {
"runtime_hash_unchanged": true,
"status": "verified",
"visual_only": true
}
}

View File

@@ -0,0 +1,96 @@
{
"authority": "linuxcnc-wasm-worker",
"axes": [
{
"axis": "x",
"end": 0.01,
"start": 0
},
{
"axis": "y",
"end": 0.01,
"start": 0
},
{
"axis": "z",
"end": 0.01,
"start": 0
},
{
"axis": "a",
"end": 0.01,
"start": 0
},
{
"axis": "c",
"end": 0.01,
"start": 0
}
],
"boundary": {
"following_error": "motion_following_error",
"nonfinite_speed": "motion_queue",
"out_of_range": "motion_queue"
},
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"HOME",
"JOG_START:X",
"SIM_STEP",
"JOG_STOP",
"JOG_START:Y",
"JOG_START:Z",
"JOG_START:A",
"JOG_START:C",
"MDI_EXECUTE",
"PROGRAM_RUN",
"MDI_EXECUTE_BLOCKED",
"ESTOP",
"IO_RECOVER"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"estop_recovery": "verified",
"failure_samples": [],
"home": {
"authority": "wasm_home_limit",
"joints": 5
},
"mdi": "verified",
"release_status": "STOP_RELEASE",
"report_sha256": "0660bca7d4ae6d68e584346606911c98aaacb14922f1b5fc9a7a44d782936be6",
"schema": "xyzac-manual-control-rtcp-06.v1",
"scope": "xyzac_only",
"state_hash": "fnv1a64:fac98a76f1a41fbc",
"status": "verified",
"task_id": "RTCP-06",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_manual_control.mjs"
],
"output_sha256": "930fe1e249389de9b0c0460f59c36e46820e3e006dc4675ffdf2528891731066",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
1
],
"units": {
"angular_axes": [
"A",
"C"
],
"angular_units": "degrees",
"linear_axes": [
"X",
"Y",
"Z"
]
}
}

View File

@@ -0,0 +1,116 @@
{
"authority": "linuxcnc-wasm-worker",
"case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"js_authority": 0,
"native": {
"command": [
"./build-native/sim_xyzac_trace_test"
],
"output_sha256": "18d2ef9d77f9a7a5bf2fa8d9380c8b04383a58ee2b0258364cba31ec34a168f0",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
},
"release_status": "STOP_RELEASE",
"report_sha256": "3a6278c6c80adf6565944b0fdce78349e640dc197c3e187eea16cdbbf6572ed3",
"schema": "xyzac-trt-native-wasm-parity.v2",
"scope": "xyzac_only",
"status": "verified",
"task_id": "PARITY-00",
"trace": {
"first_divergent_tick": null,
"levels": [
"protocol",
"control",
"state",
"canonical",
"recovery"
],
"native_wasm": {
"first_divergent_tick": null,
"levels": {
"canonical": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"control": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"protocol": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"recovery": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"state": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
}
},
"status": "verified"
},
"native_worker": {
"first_divergent_tick": null,
"levels": {
"canonical": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"control": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"protocol": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"recovery": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"state": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
}
},
"status": "verified"
},
"positive_divergence_sample": {
"detected": true,
"difference_path": "$[1].active_type",
"first_divergent_tick": 2,
"mutation": "state[1].active_type=99"
}
},
"wasm": {
"command": [
"node",
"build-wasm/sim_xyzac_trace_wasm_test.js"
],
"output_sha256": "18d2ef9d77f9a7a5bf2fa8d9380c8b04383a58ee2b0258364cba31ec34a168f0",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
},
"worker": {
"command": [
"node",
"web/worker/test_xyzac_trace_parity.mjs"
],
"output_sha256": "773f77181d7fd891a25a9ec6e7c3109f5f6e9b7ddcc3f876e1e973657959558e",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
}
}

View File

@@ -0,0 +1,62 @@
{
"authority": "linuxcnc-wasm-worker",
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"PROGRAM_LOAD",
"WASM_PROGRAM_PREVIEW",
"SNAPSHOT_REQUEST",
"PROGRAM_LOAD_REPLAY",
"PROGRAM_LOAD_INVALID",
"PROGRAM_LOAD_EMPTY"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"error_cases": {
"empty_source": "program_source_invalid",
"invalid_gcode": "error"
},
"failure_samples": [],
"line_count": 4,
"preview_authority": "linuxcnc-wasm-sim_program",
"preview_fields": [
"id",
"source_line",
"start",
"end",
"motion_type",
"center",
"normal",
"turn"
],
"preview_hash": "fnv1a64:6bdaeeddf0262c90",
"recovery": {
"no_duplicate_side_effect": true,
"replay_same_operation": "verified"
},
"release_status": "STOP_RELEASE",
"report_sha256": "bde1a054c9a633a62595ec19e5097d73499ca8fbcf07c817c01265dbf643f04a",
"schema": "xyzac-program-preview-rtcp-04.v1",
"scope": "xyzac_only",
"segment_count": 2,
"source_hash": "fnv1a64:b7f4678312207b31",
"state_hash": "fnv1a64:fda625a2e7b00ac7",
"status": "verified",
"task_id": "RTCP-04",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_program_preview.mjs"
],
"output_sha256": "79dd24d44e07958fd86484197c4502d3bdadd6d6971b7e74727b594d1d6b630f",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
0
]
}

View File

@@ -0,0 +1,146 @@
{
"additive_commands": [
"POWER",
"KINEMATICS_SELECT",
"VISUAL_CLEAR"
],
"authority": "linuxcnc-wasm-worker",
"browser_matrix": {
"console_exceptions": 0,
"desktop": {
"canvas_nonblank": true,
"document_width": 1425,
"scroll_width": 1425,
"status": "READY",
"switchkins_controls": 3,
"viewport": [
1440,
1000
]
},
"functional_note": "Chromium simulation only; Safari and physical power loss are excluded by scope",
"mobile": {
"canvas_nonblank": true,
"document_width": 390,
"scroll_width": 390,
"status": "READY",
"switchkins_controls": 3,
"viewport": [
390,
844
]
}
},
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"components": [
"XyzacTrtPanel",
"XyzacProgramPane",
"XyzacKinematicsControl",
"XyzacManualPanel",
"XyzacDiagnostics"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"default_case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [],
"gates": {
"controller": [
"blocked",
"pending",
"result"
],
"invalid": "xyzac_kinematics_type_invalid",
"running": "xyzac_interp_not_idle"
},
"known_blockers": [],
"operation_phases": [
"blocked",
"pending",
"result"
],
"outputs": [
{
"path": "web/react/src/XyzacTrtPanel.tsx",
"sha256": "f17e25f74d87a39a1bd7520f65cf1b285cb4c38d8e4fcaec13320e41c4ca6511"
},
{
"path": "web/react/src/xyzac-panel-contract.ts",
"sha256": "a1afaa368927bbc5b7d9e21a64213b963a97b687cecb0005bb9b8e47e969e823"
},
{
"path": "web/worker/test_xyzac_protocol_react.mjs",
"sha256": "69d942dfdcb7bc0d7fb26d6708220a47af13aa84acdcf490780980f6de0cc03d"
}
],
"release_status": "STOP_RELEASE",
"report_sha256": "a8ee87b6cb3ccbd683e9888c85a063dabbe17fafdd2708636bd48be592b7b520",
"schema": "xyzac-trt-protocol-react-report.v1",
"state_hash": "fnv1a64:2de42fa3ac15497a",
"status": "verified",
"switchkins": [
{
"operation_id": "select-0-4",
"phase": "committed",
"type": 0
},
{
"operation_id": "select-1-5",
"phase": "committed",
"type": 1
},
{
"operation_id": "select-2-6",
"phase": "committed",
"type": 2
},
{
"operation_id": "select-1-7",
"phase": "committed",
"type": 1
}
],
"task_id": "RTCP-09",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_protocol_react.mjs"
],
"output_sha256": "cf72a973132e3e79c155fcb0feb58f07259c082970287127d786e94a92cc4327",
"returncode": 0
},
{
"command": [
"npm",
"run",
"typecheck"
],
"output_sha256": "08fb3e3d0d9396a56f8720eb15d9f6920f8a30c2dad7b0b6672ac446801f27e3",
"returncode": 0
}
],
"visibility": {
"alarms": true,
"gate_reason": true,
"pending_ack_result_error": true,
"recovery": true
},
"worker_only_boundary": {
"react_direct_opfs": 0,
"react_direct_wasm": 0,
"react_post_message": 0,
"status": "verified",
"transport": "ReactWorkerClient"
}
}

View File

@@ -0,0 +1,102 @@
{
"authority": "linuxcnc-wasm-worker",
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"checkpoint": {
"active_type": 1,
"required_fields": [
"context_id",
"simulation_tick",
"event_cursor",
"state_hash",
"task",
"program",
"kinematics",
"motion",
"wasm_motion",
"ledger"
],
"state_hash": "fnv1a64:1463b940dede5cf0"
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"endpoint": {
"at_checkpoint_equal": true,
"continuous_hash": "fnv1a64:a4dee4490d19b4ec",
"restored_hash": "fnv1a64:ca9e3481aaa28f6d"
},
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"fail_closed": {
"corrupt_checkpoint": "blocked",
"journal_corrupt": "blocked",
"journal_schema": "blocked",
"schema_mismatch": "blocked"
},
"failure_samples": [],
"first_divergent_tick": null,
"journal": {
"corrupt_status": "blocked",
"schema_status": "blocked",
"status": "recovered"
},
"known_blockers": [],
"no_duplicate_side_effect": {
"m428": true,
"replayed_operation": true
},
"opfs": {
"physical_crash": "REAL-EXCLUDED",
"probe_status": "blocked",
"unavailable_status": "blocked"
},
"outputs": [
{
"path": "web/worker/test_xyzac_recovery.mjs",
"sha256": "d8f02b0ab5b7c9fc5ef30a3a67f7896071ecf9bbaa7d2f3614c031d118e655e7"
},
{
"path": "web/worker/sim-session.mjs",
"sha256": "7ce91549f0f3a06ff77db9ee281fd9544848f6e41e08f9da302ee2e7827194e3"
},
{
"path": "web/worker/wasm-program-runtime.mjs",
"sha256": "60da7b953ac4ee2659f2b05c6bb93b58c8d0c2c4b56363f6a93e44aab7aebb02"
}
],
"release_status": "STOP_RELEASE",
"report_sha256": "6c38c4e541868934f7a8231d36314b7e736daeb6d685f1dad48809fa49ef65ae",
"required_checkpoint_fields": [
"context_id",
"simulation_tick",
"event_cursor",
"state_hash",
"task",
"program",
"kinematics",
"motion",
"wasm_motion",
"ledger"
],
"schema": "xyzac-trt-recovery-report.v1",
"status": "verified",
"task_id": "RTCP-11",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_recovery.mjs"
],
"output_sha256": "d13944363157b9b97a440adb6135ec8977332f31778fb7ae40383e52ba2f1f35",
"returncode": 0
}
]
}

View File

@@ -0,0 +1,256 @@
{
"authority": "linuxcnc-wasm-sim_kinematics_switch",
"boundaries": {
"nonfinite_joints": "wasm_xyzac_forward_-701",
"nonfinite_pose": "wasm_xyzac_inverse_-701",
"range": "wasm_xyzac_forward_-702",
"xyzac_singularity": "closed_form_no_singular_branch"
},
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"WASM:IDENTITY_FORWARD_INVERSE",
"WASM:XYZAC_FORWARD_INVERSE",
"WASM:TOOL_ROTATION_AXIS_OFFSETS",
"WASM:USERK_IDENTITY_TEMPLATE",
"WASM:DYNAMIC_USERK_REJECT",
"WORKER:MDI_M429_M428_M430",
"WASM:G93_G2_P3_XYZAC_HELIX",
"WORKER:PROGRAM_PAUSE_RESUME_ABORT_RESTART",
"WORKER:CHECKPOINT_RECOVER"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"environment": {
"functional_node": "v24",
"wasm_ctest_harness": "HOST_EXCLUDED",
"wasm_ctest_node": "v18"
},
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [
{
"classification": "HOST_EXCLUDED",
"code": "wasm_ctest_node18_local_url",
"detail": "CTest sim_api_test uses Node 18 fetch on a bare local .wasm path; real Node 24 Worker module and single-file WASM tests passed"
}
],
"first_divergent_tick": null,
"helix": {
"end": {
"a": 30,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": 0,
"z": 5
},
"motion_type": 2,
"turn": -3,
"velocity": 6.538822170860375
},
"identity": {
"pose": {
"a": 30,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 12,
"y": -5,
"z": 20
},
"state_hash": "fnv1a64:1b181f155736dc31"
},
"inputs": [
{
"path": "linuxcnc/src/emc/kinematics/xyzac-trt-kins.c",
"sha256": "24c633613db9876c2ec246e1519a63d288fd27c68296d89f89f0368105634e69"
},
{
"path": "linuxcnc/src/emc/kinematics/trtfuncs.c",
"sha256": "ced2f9d4732681e2e82153b2f6343eccdf6972222d558d1e277bf1ec0bdc87fd"
},
{
"path": "linuxcnc/src/emc/kinematics/switchkins.c",
"sha256": "4de32a4a147e5ceee5346b9c6bf471dddf5c64ff58afe5044406c50bcd96b7f5"
},
{
"path": "linuxcnc/src/emc/kinematics/userkfuncs.c",
"sha256": "146238645955f8d4e2cb0cd34ff44db3a9dad01e149f81c08f8a53c19f1609bc"
},
{
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
{
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_ac.ngc",
"sha256": "06cb755e33dc35d9a179b3c48e4203c8469632ab248d94379b10f2538dd0b54a"
}
],
"known_blockers": [],
"lifecycle": {
"abort": "STOPPED",
"pause": "PAUSED",
"recovery": "recovered",
"restart": "loaded",
"resume": "RUNNING"
},
"mapping": {
"angular_units": "deg",
"coordinates": "XYZAC",
"limits": {
"a": [
-100,
50
],
"c": [
-36000,
36000
],
"x": [
-200,
200
],
"y": [
-100,
100
],
"z": [
-120,
120
]
},
"linear_units": "mm"
},
"offsets": {
"base": {
"a": 30,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 50.44481813796586,
"y": -20.265859980688887,
"z": 32.32050807568878
},
"changed": {
"a": 30,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 43.07044946720128,
"y": -25.569160839588,
"z": 35.6698729810778
},
"configured": {
"tool_offset": 25,
"x_rot_point": 5,
"y_offset": 20,
"z_offset": 10
}
},
"recovery": {
"active_type": 1,
"state_hash": "fnv1a64:8c57efd84475776a"
},
"release_status": "STOP_RELEASE",
"report_sha256": "c370004d8f2d962937b3b91abe2b0dd1632283f570e29d2d194731bc0fe0a083",
"schema": "xyzac-rtcp-08-report.v1",
"scope": "xyzac_only",
"singularity_classification": {
"reason": "xyzac-trt forward/inverse is closed-form and has no denominator singular branch; A=-90 degree boundary roundtrip is retained",
"status": "not_applicable"
},
"status": "verified",
"switchkins": [
{
"active_type": 0,
"code": "M429",
"state_hash": "fnv1a64:7614a240beddd8ba"
},
{
"active_type": 1,
"code": "M428",
"state_hash": "fnv1a64:1463b940dede5cf0"
},
{
"active_type": 2,
"code": "M430",
"state_hash": "fnv1a64:310f1bed69a45614"
},
{
"active_type": 1,
"code": "M428",
"state_hash": "fnv1a64:6c90a42b0ca912d4"
}
],
"task_id": "RTCP-08",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_rtcp.mjs"
],
"output_sha256": "3b4411bd1f640a689bde7a99e087965edd0694ca49696d1a936397113980e6c1",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
0,
1,
2
],
"trt": {
"joints": [
49.99999999999999,
10.000000000000004,
30.000000000000007,
30,
45
],
"pivot_boundary": {
"a": -90,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 14.142135623730951,
"y": -14.142135623730951,
"z": -4.999999999999998
},
"pose": {
"a": 30,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 50.44481813796586,
"y": -20.265859980688887,
"z": 32.32050807568878
},
"state_hash": "fnv1a64:928adf4a1feb90e9"
},
"userk": {
"dynamic_module_error": -712,
"native_type": "userk-identity-template"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,161 @@
{
"authority": "linuxcnc-wasm-worker",
"browser_matrix": {
"canvas_context": "webgl2",
"console_exceptions": 0,
"desktop": {
"canvas_nonblank": true,
"document_width": 1425,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 499671,
"scroll_width": 1425,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
1440,
1000
]
},
"functional_note": "Chromium simulation only; Safari and physical power loss are excluded by scope",
"mobile": {
"canvas_nonblank": true,
"document_width": 390,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 114080,
"scroll_width": 390,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
390,
844
]
},
"preserve_drawing_buffer": true
},
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"direction": {
"rotate_c": "z+",
"saddle_y": -1,
"spindle_z": -1,
"table_x": -1,
"tilt_a": "x+",
"tool_offset": "z-"
},
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [],
"known_blockers": [],
"machine_groups": [
"xyzac-machine",
"table-x",
"saddle-y",
"spindle-z",
"tilt-a",
"rotate-c",
"tool-offset",
"xyzac-toolpath",
"xyzac-live-toolpath"
],
"outputs": [
{
"path": "web/react/src/XyzacMachineView.tsx",
"sha256": "fd3804b8b86d6630054755c00f35828591dec5093f86ea080c9d6fb5db7aa05d"
},
{
"path": "web/react/src/XyzacToolPreview.tsx",
"sha256": "caca009f96336847c8d9b8d5823c3d7de86ed77c37cae2fe9f5f3e4d30132d57"
},
{
"path": "web/react/src/xyzac-visual-adapter.ts",
"sha256": "2e67bf4522ff87648d0b7de1f6fc447d51e780eed66c299d7f4bc3c35d7b33f8"
},
{
"path": "web/react/src/test_xyzac_threejs.mjs",
"sha256": "840f191d5243016e6ecba4404f2950a067d63f9c1f280a2c1655f30bf021324b"
},
{
"path": "web/react/src/test_xyzac_tool_preview.mjs",
"sha256": "99f60e050a3ba90b3feb2922b007a49cb4a9e2f88610a0f55f1b6a9c8f07cdbd"
}
],
"projection": {
"active_segment": 7,
"clear_visual_nonmutating": true,
"state_hash": "fnv1a64:xyzac-authoritative",
"tick": 42
},
"release_status": "STOP_RELEASE",
"report_sha256": "fd1296fc1819bee5371708e869b0547dd64bd91f98eab1d12f1ddce043450f6a",
"schema": "xyzac-trt-threejs-report.v1",
"status": "verified",
"task_id": "RTCP-10",
"tests": [
{
"command": [
"node",
"--experimental-strip-types",
"web/react/src/test_xyzac_threejs.mjs"
],
"output_sha256": "2760c09251a854eec84d854cfb8847244bf21653e7d096fa625d4fe2970924ee",
"returncode": 0
},
{
"command": [
"node",
"--experimental-strip-types",
"web/react/src/test_xyzac_tool_preview.mjs"
],
"output_sha256": "26a7f3645c9ca6212fc5664e870eee5dff2a146bb71a1d14de6845e982cddf92",
"returncode": 0
},
{
"command": [
"npm",
"run",
"typecheck"
],
"output_sha256": "08fb3e3d0d9396a56f8720eb15d9f6920f8a30c2dad7b0b6672ac446801f27e3",
"returncode": 0
}
],
"tool_preview": {
"active_segment": 3,
"canonical_toolpath_segments": 1,
"joints": [
11,
-4,
19,
31,
44
],
"machine_scene_nodes": 0,
"schema": "xyzac-tool-preview-rtcp-10b.v1",
"source": "linuxcnc-wasm-worker",
"state_hash": "fnv1a64:tool-preview",
"status": "verified",
"tick": 12,
"tool_pose": {
"a": 31,
"b": 0,
"c": 44,
"u": 0,
"v": 0,
"w": 0,
"x": 11,
"y": -4,
"z": 19
}
},
"visual_source": "authoritative panel_snapshot.visual + panel_snapshot.kinematics; main preview is tool-only"
}

View File

@@ -0,0 +1,436 @@
{
"authority": "linuxcnc-wasm-worker",
"browser_matrix": {
"desktop": {
"canvas_nonblank": true,
"document_width": 1425,
"nonzero_pixels": 499671,
"sample_points": 438,
"scroll_width": 1425,
"status": "READY",
"toolpath_segments": 29,
"viewport": [
1440,
1000
]
},
"machine_nodes_in_tool_preview": 0,
"mobile": {
"canvas_nonblank": true,
"document_width": 390,
"nonzero_pixels": 114080,
"sample_points": 438,
"scroll_width": 390,
"status": "READY",
"toolpath_segments": 29,
"viewport": [
390,
844
]
}
},
"candidate_eligible": true,
"canonical_source": "panel_snapshot.visual.toolpath",
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [],
"known_blockers": [],
"machine_preview": {
"embedded": false,
"separate_component": "web/react/src/XyzacMachineView.tsx"
},
"origin_coordinate_system": {
"axes": [
"X",
"Y",
"Z"
],
"labels": true,
"origin": [
0,
0,
0
],
"source": "xyzac-origin-coordinate-system"
},
"outputs": [
{
"path": "web/react/src/XyzacToolPreview.tsx",
"sha256": "caca009f96336847c8d9b8d5823c3d7de86ed77c37cae2fe9f5f3e4d30132d57"
},
{
"path": "web/react/src/xyzac-visual-adapter.ts",
"sha256": "2e67bf4522ff87648d0b7de1f6fc447d51e780eed66c299d7f4bc3c35d7b33f8"
},
{
"path": "web/worker/sim-session.mjs",
"sha256": "7ce91549f0f3a06ff77db9ee281fd9544848f6e41e08f9da302ee2e7827194e3"
},
{
"path": "web/worker/test_xyzac_exact_preview.mjs",
"sha256": "dc5cc312aab46003e12a4bfc26d695b05d78843e61808c550cb4a5925338687b"
},
{
"path": "web/worker/wasm-program-runtime.mjs",
"sha256": "60da7b953ac4ee2659f2b05c6bb93b58c8d0c2c4b56363f6a93e44aab7aebb02"
},
{
"path": "web/worker/wasm-motion-queue.mjs",
"sha256": "85b53bf7a31b9b1f1e7e76dad4bf29aabb36defcf6344d34bbb192c157a80764"
},
{
"path": "web/worker/wasm-xyzac-io.mjs",
"sha256": "fdb92e8819e38010aa7a1b8f5f58473a930644fbfeba3d7d5a5c23e075ee92ca"
},
{
"path": "web/worker/wasm-xyzac-device-io.mjs",
"sha256": "1d813d59048afb6854b6fd7783dc86f65bf37ccc46f0d4f592b56cbe044211a5"
},
{
"path": "web/worker/test_xyzac_machine_sequence.mjs",
"sha256": "9dcd89d54596fe4b339d5aca4e028a0c44e173a8e646f1254defc706bd3fcc96"
},
{
"path": "web/react/src/App.tsx",
"sha256": "8cbec29f00c44e18a01ac92734e4f8b64764cc04db4cec48ce9c28693bd2bbef"
},
{
"path": "web/react/src/styles.css",
"sha256": "c39b6848f0c8d176991acb633206697bbc01bd8dbf28cba69afe605b1d7e6cb9"
},
{
"path": "wasm-core/src/sim_task.c",
"sha256": "06aa4ba015d863e1749cfe11877a82507fd6aff2c6922a114f30f6c8871b0b5b"
},
{
"path": "wasm-core/src/sim_program.c",
"sha256": "1ab97bbe8750d678b8cffebbad9cad44926285b627858cf2b1aad22da3e0457f"
},
{
"path": "wasm-core/src/sim_posemath.c",
"sha256": "2e63d8cc2bf4275a89238b2622b41dcd8dfabfe6d24ef5918628083a4f4f5216"
}
],
"preview_mode": "tool_only",
"projection": {
"exact_program": {
"arc_count": 4,
"arc_turn": -3,
"case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"clear_visual_only": true,
"helix_details": [
{
"axial_delta": -5,
"center": {
"x": 20,
"y": 20,
"z": 10
},
"end": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": 20,
"z": 5
},
"kind": "helix",
"radius": 10,
"samples": 97,
"samples_source": "linuxcnc-wasm-sim_posemath_segment_point",
"source_line": 67,
"start": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": 20,
"z": 10
},
"turns": 3
},
{
"axial_delta": -5,
"center": {
"x": -20,
"y": 20,
"z": 10
},
"end": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": -30,
"y": 20,
"z": 5
},
"kind": "helix",
"radius": 10,
"samples": 97,
"samples_source": "linuxcnc-wasm-sim_posemath_segment_point",
"source_line": 67,
"start": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": -30,
"y": 20,
"z": 10
},
"turns": 3
},
{
"axial_delta": -5,
"center": {
"x": -20,
"y": -20,
"z": 10
},
"end": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": -30,
"y": -20,
"z": 5
},
"kind": "helix",
"radius": 10,
"samples": 97,
"samples_source": "linuxcnc-wasm-sim_posemath_segment_point",
"source_line": 67,
"start": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": -30,
"y": -20,
"z": 10
},
"turns": 3
},
{
"axial_delta": -5,
"center": {
"x": 20,
"y": -20,
"z": 10
},
"end": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": -20,
"z": 5
},
"kind": "helix",
"radius": 10,
"samples": 97,
"samples_source": "linuxcnc-wasm-sim_posemath_segment_point",
"source_line": 67,
"start": {
"a": 20,
"b": 0,
"c": 45,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": -20,
"z": 10
},
"turns": 3
}
],
"helix_validation": {
"radius_mm": 10,
"sample_points_per_helix": 97,
"samples_source": "linuxcnc-wasm-sim_posemath_segment_point",
"turns_per_helix": 3,
"z_end": 5,
"z_start": 10
},
"motion_mode_source": "linuxcnc-wasm-sim_program_canonical",
"program_path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"rapid_count": 25,
"restart_visual_segments": 29,
"schema": "xyzac-exact-tool-preview.v1",
"segment_count": 29,
"source_hash": "fnv1a64:522e219683194ad2",
"state_hash": "fnv1a64:c7e53444cce4a142",
"status": "verified",
"visual_segments": 29
},
"machine_sequence": {
"active_progress": 0.09848857801796111,
"active_segment_id": 4,
"authority": {
"home_limit": "wasm_home_limit",
"io": "wasm_io",
"motion": "wasm",
"program": "linuxcnc-wasm-sim_program",
"visual": "wasm_canonical_motion"
},
"case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"current_line_after_step": 68,
"estop_queue_depth": 0,
"full_run": {
"cycles": 8000,
"final_switchkins_type": 0,
"program_status": "completed",
"queue_depth": 0,
"task_state": "STOPPED"
},
"home_joint_count": 5,
"js_motion_unchanged": true,
"live_axis_sample": {
"a": 1.9697715603592223,
"b": 0,
"c": 4.43198601080825,
"u": 0,
"v": 0,
"w": 0,
"x": 10,
"y": 20,
"z": 10
},
"live_joints": [
8.42458503579587,
20.712530389342145,
10.024505737045653,
1.9697715603592223,
4.43198601080825
],
"rtcp_active_type": 1,
"rtcp_joint_pose_delta": [
-1.5754149642041302,
0.7125303893421453,
0.02450573704565251,
0,
0
],
"schema": "xyzac-machine-sequence.v1",
"sequence": [
"ESTOP",
"ESTOP_RELEASE",
"IO_RECOVER",
"POWER",
"HOME_ALL",
"PROGRAM_RUN",
"SIM_STEP"
],
"state_hash": "fnv1a64:c8f6326c97e651f9",
"status": "verified"
},
"static": {
"active_segment": 3,
"canonical_toolpath_segments": 1,
"joints": [
11,
-4,
19,
31,
44
],
"machine_scene_nodes": 0,
"schema": "xyzac-tool-preview-rtcp-10b.v1",
"source": "linuxcnc-wasm-worker",
"state_hash": "fnv1a64:tool-preview",
"status": "verified",
"tick": 12,
"tool_pose": {
"a": 31,
"b": 0,
"c": 44,
"u": 0,
"v": 0,
"w": 0,
"x": 11,
"y": -4,
"z": 19
}
}
},
"release_status": "STOP_RELEASE",
"report_sha256": "94b18227ec72689934629a5b428cf6a9f16500d30b200d4b36a10d03c84c56b9",
"schema": "xyzac-trt-tool-preview-report.v1",
"status": "verified",
"task_id": "RTCP-10-TOOL-PREVIEW",
"tests": [
{
"command": [
"node",
"--experimental-strip-types",
"web/react/src/test_xyzac_tool_preview.mjs"
],
"output_sha256": "26a7f3645c9ca6212fc5664e870eee5dff2a146bb71a1d14de6845e982cddf92",
"returncode": 0
},
{
"command": [
"node",
"web/worker/test_xyzac_exact_preview.mjs"
],
"output_sha256": "60cec025efd2f29de45fb6139f0929f329a505bd331212e6b01ab5fbb5f8fca8",
"returncode": 0
},
{
"command": [
"node",
"web/worker/test_xyzac_machine_sequence.mjs"
],
"output_sha256": "2a72e723603080bb3eff8169b8be5352fa46d6b0c8ae04dbeeb2e5e1371e1c47",
"returncode": 0
}
],
"three_d_controller": {
"buttons": [
"zoomIn",
"zoomOut",
"panLeft",
"panRight",
"panUp",
"panDown",
"reset"
],
"library": "three/examples/jsm/controls/OrbitControls",
"pointer_controls": {
"left_drag": "rotate",
"right_or_middle_drag": "pan",
"wheel": "zoom"
},
"source": "web/react/src/XyzacToolPreview.tsx"
}
}

View File

@@ -0,0 +1,165 @@
{
"builds": [
{
"command": [
"cmake",
"--build",
"build-native",
"--target",
"sim_xyzac_trace_test"
],
"output_sha256": "8c35b1682f73592d30612d7b0fabdb384fcfff35cb5a076cb48b85b1368aa794",
"returncode": 0
},
{
"command": [
"cmake",
"--build",
"build-wasm",
"--target",
"sim_xyzac_trace_wasm_test"
],
"output_sha256": "8c35b1682f73592d30612d7b0fabdb384fcfff35cb5a076cb48b85b1368aa794",
"returncode": 0
}
],
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [],
"first_divergent_tick": null,
"inputs": [
{
"path": "wasm-core/tests/sim_xyzac_trace_test.c",
"sha256": "0a3d5f748d9f69f4212c3a1cdd65fe2986c253442c4de2de78de2e5a5635ff08"
},
{
"path": "web/worker/test_xyzac_trace_parity.mjs",
"sha256": "f5c6a7cd3e8b7f72bb1b25b5c368c0e52d494b9c811022d34435e668612ec4ce"
},
{
"path": "coverage/xyzac-trt-rtcp.report.json",
"sha256": "b1562d6d2c9cd5144c7c8c9b334bd8bf67919ea7297f103ec67cb32773608d08"
}
],
"known_blockers": [],
"levels": [
"protocol",
"control",
"state",
"canonical",
"recovery"
],
"native_wasm": {
"first_divergent_tick": null,
"levels": {
"canonical": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"control": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"protocol": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"recovery": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"state": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
}
},
"status": "verified"
},
"native_worker": {
"first_divergent_tick": null,
"levels": {
"canonical": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"control": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"protocol": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"recovery": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
},
"state": {
"difference_path": null,
"first_divergent_tick": null,
"status": "verified"
}
},
"status": "verified"
},
"positive_divergence_sample": {
"detected": true,
"difference_path": "$[1].active_type",
"first_divergent_tick": 2,
"mutation": "state[1].active_type=99"
},
"release_status": "STOP_RELEASE",
"report_sha256": "39c63aa9af38fd98e49fd68ec2401ee8715fcafef98d47c070a47ab6f6dc0a48",
"schema": "xyzac-trt-trace-parity-report.v1",
"status": "verified",
"task_id": "PARITY-00",
"traces": {
"native": {
"command": [
"./build-native/sim_xyzac_trace_test"
],
"output_sha256": "18d2ef9d77f9a7a5bf2fa8d9380c8b04383a58ee2b0258364cba31ec34a168f0",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
},
"wasm": {
"command": [
"node",
"build-wasm/sim_xyzac_trace_wasm_test.js"
],
"output_sha256": "18d2ef9d77f9a7a5bf2fa8d9380c8b04383a58ee2b0258364cba31ec34a168f0",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
},
"worker": {
"command": [
"node",
"web/worker/test_xyzac_trace_parity.mjs"
],
"output_sha256": "773f77181d7fd891a25a9ec6e7c3109f5f6e9b7ddcc3f876e1e973657959558e",
"returncode": 0,
"trace_sha256": "ca13e8dcb6d2816787a98c7bddc04db552b88f8d8a994b49301973a1bd11245a"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,111 @@
{
"blocker_identity": [
{
"classification": "HOST_EXCLUDED",
"detail": "Safari is explicitly excluded from this project",
"id": "safari_not_in_project_scope"
},
{
"classification": "REAL-EXCLUDED",
"detail": "simulation environment intentionally excludes real physical power loss",
"id": "physical_power_loss_not_simulated"
},
{
"classification": "HOST_EXCLUDED",
"detail": "only xyzac-trt.ini is selected",
"id": "other_linuxcnc_cases_out_of_scope"
}
],
"candidate_eligible": false,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"checks": {
"all_task_reports": {
"count": 14,
"status": "verified"
},
"browser_matrix": {
"desktop": {
"canvas_nonblank": true,
"document_width": 1425,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 499671,
"scroll_width": 1425,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
1440,
1000
]
},
"mobile": {
"canvas_nonblank": true,
"document_width": 390,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 114080,
"scroll_width": 390,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
390,
844
]
},
"status": "verified"
},
"recovery": {
"at_checkpoint_equal": true,
"continuous_hash": "fnv1a64:a4dee4490d19b4ec",
"restored_hash": "fnv1a64:ca9e3481aaa28f6d",
"status": "verified"
},
"scope_exclusions": {
"Safari": "out_of_scope",
"host_hardware": "out_of_scope",
"other_cases": [
"xyzbc",
"3axis"
],
"physical_power_loss": "REAL-EXCLUDED",
"status": "verified"
},
"selected_case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"status": "verified"
},
"trace_parity": {
"first_divergent_tick": null,
"levels": [
"protocol",
"control",
"state",
"canonical",
"recovery"
],
"status": "verified"
},
"wasm_authority": {
"authority": "linuxcnc-wasm-worker",
"js_authority": 0,
"status": "verified"
}
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"failure_samples": [],
"input": {
"path": "coverage/xyzac-trt-web-wasm-parity.report.json",
"sha256": "d8bd04725525c1c5881d749466c8793f4b771e34ba260c5d35cb1d29f889d4fc"
},
"known_blockers": [
"STOP_RELEASE is intentional until an owner authorizes scope expansion"
],
"outputs": [],
"release_decision": "selected_case_verified_but_release_stopped_by_scope_exclusions",
"release_status": "STOP_RELEASE",
"report_sha256": "70dc5704e2530f9a42d6f5985f242be4fc4b691a2272fd15b9fa0bd8031a0728",
"schema": "xyzac-trt-wasm-only-release-gate.v1",
"status": "verified",
"task_id": "RELEASE-00"
}

View File

@@ -0,0 +1,138 @@
{
"authority": "linuxcnc-wasm-worker",
"authority_audit": {},
"blocker_identity": {
"case_mismatches": [],
"failed_reports": [],
"host_excluded": [
"Safari",
"physical power loss",
"host hardware"
],
"missing_reports": [],
"release_status": "STOP_RELEASE"
},
"browser_matrix": {
"canvas_context": "webgl2",
"console_exceptions": 0,
"desktop": {
"canvas_nonblank": true,
"document_width": 1425,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 499671,
"scroll_width": 1425,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
1440,
1000
]
},
"functional_note": "Chromium simulation only; Safari and physical power loss are excluded by scope",
"mobile": {
"canvas_nonblank": true,
"document_width": 390,
"machine_nodes_in_tool_preview": 0,
"nonzero_pixels": 114080,
"scroll_width": 390,
"status": "READY",
"toolpath_segments": 3,
"viewport": [
390,
844
]
},
"preserve_drawing_buffer": true
},
"candidate_eligible": false,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"checks": {
"all_reports_present": true,
"all_reports_verified": true,
"all_selected_case": true,
"browser_desktop_mobile": true,
"recovery_endpoint_equal": true,
"trace_first_divergent_tick_null": true
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"exclusions": [
"xyzbc",
"3axis",
"other cases",
"Safari",
"physical power loss",
"host hardware"
],
"failure_samples": [],
"known_blockers": [
"HOST_EXCLUDED: Safari not in project scope",
"REAL-EXCLUDED: physical power loss not simulated"
],
"parity": {
"first_divergent_tick": null,
"native_wasm": "verified",
"native_worker": "verified",
"positive_divergence_tick": 2,
"trace_levels": [
"protocol",
"control",
"state",
"canonical",
"recovery"
]
},
"recovery": {
"at_checkpoint_equal": true,
"continuous_hash": "fnv1a64:a4dee4490d19b4ec",
"restored_hash": "fnv1a64:ca9e3481aaa28f6d"
},
"release_status": "STOP_RELEASE",
"report_hashes": {
"coverage/xyzac-trt-gate-matrix.report.json": "495f452f59848114bb885561e26e7080f356650cc1b620cfddf515685fbf1628",
"coverage/xyzac-trt-hal-tool-alarm.report.json": "2abcfd59bf16e596c9183296061ff66ce00f6d9b6efee121519a499007001216",
"coverage/xyzac-trt-manual-control.report.json": "b7333980194ff9b6344d34ec97a181fbb79b5730184dd13a6d1a9067c9212af9",
"coverage/xyzac-trt-program-preview.report.json": "ee41e2b4ac97f719817e21eee2bd3d503fc78c783ec1bc185466b3c56fc62045",
"coverage/xyzac-trt-protocol-react.report.json": "bc25315930095ca096bae0f97047c41d45bf9ff83373ac7a73f52273b33d9237",
"coverage/xyzac-trt-recovery.report.json": "deff32f2998930dfcd9373ca0a6a960d1fa7e5732ef785cc7cacf336b9dc3459",
"coverage/xyzac-trt-rtcp.report.json": "b1562d6d2c9cd5144c7c8c9b334bd8bf67919ea7297f103ec67cb32773608d08",
"coverage/xyzac-trt-source-slice-inventory.report.json": "20382f2bcd13fdaf3f25521b7a8c42e83e0409f75092c643b4c79a7613fdf287",
"coverage/xyzac-trt-startup.report.json": "56e040b645bcefc3d6c57244cb2d3aba16f421ff5137089d9c3336970dfd968b",
"coverage/xyzac-trt-threejs.report.json": "2791930c38a48ab9fa61f284e57483708787e89b558c75ddc9d99e4b3e76ad28",
"coverage/xyzac-trt-tool-preview.report.json": "4a5b286b0a13324a1e773669ef34ab9a64fd0376dfaf5adf39a95d9b420bd965",
"coverage/xyzac-trt-trace-parity.report.json": "ef914bb7823b9cdb0f6e15ca409515659d5575d09cdc6da2c458cd81fafa595a",
"coverage/xyzac-trt-wasm-authority-audit.report.json": "e7c84d3f36db280c13c1ab8a29f4f827b4257eb34b8cb2bbc47357a920001692",
"coverage/xyzac-trt-workflow.report.json": "ede73fab04f3cc3e64a13fbe0ab10603253e9a01b4357feff1f3f54313777e75"
},
"report_sha256": "bf2f04c1798cd43016833836bab8c789ca71699ae414746601ae0efed010666d",
"schema": "xyzac-trt-web-wasm-parity-report.v1",
"source_coverage": {
"axis_keyboard": 10,
"axis_menus": 80,
"axis_toolbar": 20,
"blocked_resources": 0,
"direct_sources": 35,
"slices": 11,
"unregistered_slices": 0
},
"status": "verified",
"task_id": "RTCP-12",
"task_reports": {
"coverage/xyzac-trt-gate-matrix.report.json": "verified",
"coverage/xyzac-trt-hal-tool-alarm.report.json": "verified",
"coverage/xyzac-trt-manual-control.report.json": "verified",
"coverage/xyzac-trt-program-preview.report.json": "verified",
"coverage/xyzac-trt-protocol-react.report.json": "verified",
"coverage/xyzac-trt-recovery.report.json": "verified",
"coverage/xyzac-trt-rtcp.report.json": "verified",
"coverage/xyzac-trt-source-slice-inventory.report.json": "verified",
"coverage/xyzac-trt-startup.report.json": "verified",
"coverage/xyzac-trt-threejs.report.json": "verified",
"coverage/xyzac-trt-tool-preview.report.json": "verified",
"coverage/xyzac-trt-trace-parity.report.json": "verified",
"coverage/xyzac-trt-wasm-authority-audit.report.json": "verified",
"coverage/xyzac-trt-workflow.report.json": "verified"
}
}

View File

@@ -0,0 +1,63 @@
{
"abort_queue_empty": true,
"active_segment_before_abort": 1,
"authority": "linuxcnc-wasm-worker",
"candidate_eligible": true,
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"sha256": "f985970db293b70c055e4c41fc316d0c16037b5dc7ce07490e18f554e851f811"
},
"command_trace": [
"PROGRAM_LOAD",
"PROGRAM_RUN",
"SIM_STEP",
"PROGRAM_PAUSE",
"SNAPSHOT_REQUEST",
"PROGRAM_RESUME",
"SIM_STEP",
"PROGRAM_ABORT",
"PROGRAM_RESTART",
"PROGRAM_SEEK",
"PROGRAM_RESUME",
"SIM_STEP",
"CHECKPOINT",
"RECOVER"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"failure_samples": [],
"pause_cursor_stable": true,
"recovery_status": "recovered",
"release_status": "STOP_RELEASE",
"report_sha256": "d98a16e6582c0bc9fdaa410da64be369cc21d56a61a04b43436d4900c12461b0",
"restart_source_hash_preserved": true,
"run_from_line": 4,
"schema": "xyzac-workflow-rtcp-05.v1",
"scope": "xyzac_only",
"state_hash": "fnv1a64:285d97dde7d56ea7",
"status": "verified",
"task_id": "RTCP-05",
"tests": [
{
"command": [
"node",
"web/worker/test_xyzac_workflow.mjs"
],
"output_sha256": "197bc634f7f9ddf290b1a64d3cbd1f52d257dcc4982e5de3bd16f6358c70702b",
"returncode": 0,
"status": "verified"
}
],
"tick_trace": [
1
],
"workflow": {
"abort": "verified",
"pause": "verified",
"recovery": "verified",
"restart": "verified",
"resume": "verified",
"run": "verified",
"run_from_line": "verified",
"step": "verified"
}
}