{ "boundaries": [ "AXIS desktop window is WEB-EQUIV, not a GTK/Tk window copy", "Worker remains authoritative for task/motion/IO/tool/alarm state", "REAL-EXCLUDED hardware safety and host processes remain explicit", "full GUI family acceptance continues in FE-M4-GUI-04+" ], "checks": { "frontend_regression": { "command": [ "npm", "run", "build" ], "returncode": 0, "status": "verified", "stderr_sha256": "351b524197fb492920789369e7f1a271420c757633fbb553b280a181ac4c31a4", "stderr_tail": "[plugin builtin:vite-reporter] \n(!) Some chunks are larger than 500 kB after minification. Consider:\n- Using dynamic import() to code-split the application\n- Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting\n- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.\n", "stdout_sha256": "09608785fcaa5b6fd684327bf10f528c7ceec2a3c9f2fa7b60f77a22ecc5554d", "stdout_tail": "\n> linuxcnc-web-wasm-react@0.1.0 build\n> tsc --noEmit && vite build\n\nvite v8.2.2 building client environment for production...\ntransforming...\n✓ 57 modules transformed.\nrendering chunks...\ncomputing gzip size...\ndist/index.html 0.45 kB │ gzip: 0.29 kB\ndist/assets/linuxcnc-sim-core-CUHPXMcz.wasm 172.95 kB │ gzip: 72.16 kB\ndist/assets/sim-worker-entry-CWz_hwEG.js 196.19 kB\ndist/assets/index-CBYbZzYS.css 16.91 kB │ gzip: 4.36 kB\ndist/assets/index-Zh6oL3cR.js 1,027.64 kB │ gzip: 251.40 kB\n\n✓ built in 370ms\n" }, "source_axis_icons": { "assets": 20, "paths": [ "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_axis_p.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_axis_x.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_axis_y.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_axis_z.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_axis_z2.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_blockdelete.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_clear.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_estop.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_open.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_optpause.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_pause.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_power.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_reload.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_rotate.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_run.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_step.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_stop.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_verify.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_zoomin.gif", "linuxcnc/configs/sim/qtvcp_screens/qtaxis_lathe/qtaxis/images/tool_zoomout.gif" ], "status": "verified" }, "source_mapping": { "files": 10, "status": "verified" }, "three_viewer": { "status": "verified" }, "worker_commands": { "commands": 16, "status": "verified" }, "worker_regression": { "command": [ "node", "web/worker/test_minimal_xyz_vertical_s8_04.mjs" ], "returncode": 0, "status": "verified", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stderr_tail": "", "stdout_sha256": "116150a1d54bf879ebd83cfeafc83f253dd3c40736889de045089a7287e78631", "stdout_tail": "{\"schema\":\"minimal-xyz-vertical-s8-04-sample.v1\",\"status\":\"verified\",\"case\":\"linuxcnc/configs/sim/axis/minimal_xyz.ini\",\"startup_state\":\"TASK_READY\",\"jog\":{\"tick\":10,\"x\":0.020000000000000004},\"override\":{\"feed\":0.5,\"spindle\":1.2},\"program\":{\"status\":\"completed\",\"line\":5,\"mdi\":\"verified\"},\"recovery\":{\"status\":\"recovered\",\"parity\":{\"equal\":true,\"difference\":null,\"expected_hash\":\"fnv1a64:b28f69a38b7079a5\",\"actual_hash\":\"fnv1a64:b28f69a38b7079a5\"}},\"estop\":{\"blocked_code\":\"sim_io_estop\",\"recovered\":\"READY\"},\"endpoint_hash\":\"fnv1a64:b28f69a38b7079a5\",\"checkpoint_hash\":\"fnv1a64:4fcbfaed8c9ee75e\"}\n" } }, "context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "implementation_status": "verified", "report_sha256": "f753e5e6570ddc1ec26dd03f45a61a575eea757de1e24920e4df3716b5242c3e", "schema": "axis-web-workflow-fe-m4-report.v1", "source_files": [ { "bytes": 157381, "path": "linuxcnc/src/emc/usr_intf/axis/scripts/axis.py", "sha256": "328c038a1e8fefd952e53c8e398e3fa98b04602351c44318edd1b044e8f63ffa", "status": "present" }, { "bytes": 23953, "path": "linuxcnc/src/emc/usr_intf/gremlin/gremlin.py", "sha256": "7559a52300de92ed156fe22267c8fbca975338321cf3afada141360a244756a3", "status": "present" }, { "bytes": 45446, "path": "linuxcnc/src/emc/usr_intf/gremlin/qt5_graphics.py", "sha256": "3a0907e4287ebbff56a08656a30f2ae1486d8cac7d4d6e4c7e4e34ffd6567525", "status": "present" }, { "bytes": 76641, "path": "linuxcnc/lib/python/rs274/glcanon.py", "sha256": "0dfb20f1fdc05289894f3aa638357d98e1063fbd53329c723c777399ec7b33b7", "status": "present" }, { "bytes": 14844, "path": "web/react/src/App.tsx", "sha256": "e1ad4c11660428886ffcae7bb48a0af692381102e68230a6277d680bfb104969", "status": "present" }, { "bytes": 4573, "path": "web/react/src/store.ts", "sha256": "b7b40921d5726d7e25ba440d4939ec82baf85a2dd5ace8da50c75569631797ad", "status": "present" }, { "bytes": 3115, "path": "web/react/src/worker-client.ts", "sha256": "87ad659e8b28b6486c9f3137d53c0766187a741eb7dbf50c833e40d6857f5f7c", "status": "present" }, { "bytes": 2628, "path": "web/react/src/gui-domain.ts", "sha256": "aa31acabe0144fac1f9952f4c97b70181fbe85528ef7956b669e287b965a6329", "status": "present" }, { "bytes": 2708, "path": "web/react/src/ThreeMachineView.tsx", "sha256": "1041e5a034c673c3459daf00d236d00f2655c87f8355ec293c2f6626f7a35991", "status": "present" }, { "bytes": 57994, "path": "web/worker/sim-session.mjs", "sha256": "47c0918797b6a60ed72dce6014fb3f365f620e31be34d8d66f5311971dbe16fd", "status": "present" } ], "status": "verified", "task_id": "FE-M4-GUI-03", "workflow": [ "case_load", "program_load", "program_run", "pause_resume_step", "abort_restart", "mdi", "jog_home", "feed_spindle_override", "spindle_coolant", "tool_prepare_change", "probe", "estop_recover", "dro", "threejs_pose" ] }