{ "boundaries": [ "startup tool table resolution remains SOURCE_BLOCKED until full Task/configuration startup is available", "motion logger abort remains WORKER_TASK_MOTION_PENDING", "ClassicLadder and realtime hardware paths remain HOST_EXCLUDED", "native/WASM IO and device outputs are byte-identical for static fixtures" ], "context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "counts": { "HOST_EXCLUDED": 1, "PASSED": 3, "SOURCE_BLOCKED": 2, "WORKER_TASK_MOTION_PENDING": 1, "fixture_files": 30, "selected_cases": 7 }, "ctest": { "command": [ "ctest", "--test-dir", "build-native", "-R", "^(sim_io_test|sim_device_io_test)$", "--output-on-failure" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "b238b3ab8e42620369a7cb4b081873cd08dbea19ceb849424c19ee82b439a65c" }, "expected_checkresult_comparison": { "compared_byte_for_byte": false, "fixture_hashes_verified": true, "reason": "source IO/startup/tool expected/checkresult files are retained and hashed; host GUI/configuration oracle is unavailable to the Worker adapter", "status": "SOURCE_BLOCKED" }, "native_wasm": { "sim_device_io": { "golden_diff": { "byte_identical": true, "first_difference": null, "native_stdout_sha256": "0d61cefc36cc59dffac89a052a3b955bfe15fbaf02525d529169a54d3e17e234", "status": "PASSED", "wasm_stdout_sha256": "0d61cefc36cc59dffac89a052a3b955bfe15fbaf02525d529169a54d3e17e234" }, "native": { "command": [ "build-native/sim_device_io_test" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "0d61cefc36cc59dffac89a052a3b955bfe15fbaf02525d529169a54d3e17e234" }, "wasm": { "command": [ "node", "build-wasm/sim_device_io_wasm_test.js" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "0d61cefc36cc59dffac89a052a3b955bfe15fbaf02525d529169a54d3e17e234" } }, "sim_io": { "golden_diff": { "byte_identical": true, "first_difference": null, "native_stdout_sha256": "c8f4ca0cb1e8931b8a75d13b2d537629367aacb181bee261231fdd6f19afbdd0", "status": "PASSED", "wasm_stdout_sha256": "c8f4ca0cb1e8931b8a75d13b2d537629367aacb181bee261231fdd6f19afbdd0" }, "native": { "command": [ "build-native/sim_io_test" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "c8f4ca0cb1e8931b8a75d13b2d537629367aacb181bee261231fdd6f19afbdd0" }, "wasm": { "command": [ "node", "build-wasm/sim_io_wasm_test.js" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "c8f4ca0cb1e8931b8a75d13b2d537629367aacb181bee261231fdd6f19afbdd0" } } }, "report_sha256": "797162801950d212a5cebe0e4ba68f0e2d1dfaf04c390286a42c26ecefe9c3b4", "schema": "linuxcnc-source-io-execution.v1", "scope": [ "IO", "startup tool table", "toolchanger ack", "hard limits", "limit3", "motion abort", "ClassicLadder boundary" ], "status": "verified", "task_id": "S5-06", "worker": { "execution": { "command": [ "node", "web/worker/test_source_io_s5.mjs" ], "returncode": 0, "status": "PASSED", "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stdout_sha256": "21f2950bff929b403137feddce1e4b27e7535e8b58bc7493b4bc4ca43dce359b" }, "fixture_hashes_verified": true, "golden": { "aggregate_hash": "fnv1a64:77ddfb5c858175d5", "boundaries": [ "startup tool table resolution remains SOURCE_BLOCKED until full Task/configuration startup is available", "motion logger abort remains WORKER_TASK_MOTION_PENDING; no GUI or wall-clock result is promoted", "ClassicLadder and realtime hardware paths remain HOST_EXCLUDED" ], "cases": [ { "adapter": "WORKER_SIM_ADAPTER", "fixture": [ { "bytes": 79, "path": "linuxcnc/tests/hard-limits/test.sh", "sha256": "bb5ddfad3ddc8437fe82d28ec0a3c0fe83e85b0fb6e7899c7bad2c419f1afed8" }, { "bytes": 1265, "path": "linuxcnc/tests/hard-limits/hard-limits.ini", "sha256": "891059113a5ca0ccf655d35fd0f658c55cb94041fb884deee9d9aef0d3e494c9" }, { "bytes": 486, "path": "linuxcnc/tests/hard-limits/hard-limits.hal", "sha256": "edd3f749b8cdcabd9a2372de84974ac07c17f089d5b69075660cdda960526851" }, { "bytes": 122, "path": "linuxcnc/tests/hard-limits/checkresult", "sha256": "928f7d32ba9bd32b991ffd9de98a75e824f8523a8cc38f69774065a929e33897" } ], "id": "source-test:linuxcnc/tests/hard-limits/test.sh", "result": { "axis": 0.01, "fault": "limit", "limit": true, "state_hash": "fnv1a64:9425dd05174f8298", "tick": 1 }, "result_hash": "fnv1a64:90ad1618f904ed4d", "status": "PASSED" }, { "adapter": "WORKER_SIM_ADAPTER", "fixture": [ { "bytes": 292, "path": "linuxcnc/tests/limit3/limit-max-velocity/test.hal", "sha256": "d439dee0b8daf92a498077162932acc6e9f16236a3d9acc7f94c8adff07fa101" }, { "bytes": 12472, "path": "linuxcnc/tests/limit3/limit-max-velocity/expected", "sha256": "9afb379fee3ce80cf7f314b083a101aa599644eca67c9fc1896fefd92140bc4d" } ], "id": "source-test:linuxcnc/tests/limit3/limit-max-velocity/test.hal", "result": { "axis": 0.5, "fault": "following_error", "following_error": 0.02, "state_hash": "fnv1a64:ec92f105cb34c6da", "tick": 1 }, "result_hash": "fnv1a64:5a1d18ec78bc0262", "status": "PASSED" }, { "adapter": "WORKER_SIM_ADAPTER", "fixture": [ { "bytes": 92, "path": "linuxcnc/tests/toolchanger/m61/test.sh", "sha256": "11aa8c2af0163b7c9a736507c3ea89bcdae717f30dcd86be61641e2ef1aa77bb" }, { "bytes": 67, "path": "linuxcnc/tests/toolchanger/m61/checkresult", "sha256": "c210d3eea8c126de9ad24c7f528df7ca22fed21c48399d49f4c852116c6ab1aa" }, { "bytes": 1971, "path": "linuxcnc/tests/toolchanger/m61/m61-test.ini", "sha256": "eee36d051ed62d0e3b47980001c1654b25616155a9b9d31547b13f333610e34d" }, { "bytes": 2056, "path": "linuxcnc/tests/toolchanger/m61/mod_core_sim.hal", "sha256": "ea61e3971fcf818ba590c4434672c0ef91cd39ddc3e847825e0057f7aee5f5cf" }, { "bytes": 8356, "path": "linuxcnc/tests/toolchanger/m61/test-ui.py", "sha256": "800b0ef1bd1f7fdeb77af4de22d1cededfc21cb0441c18c879b661acecdc93f7" } ], "id": "source-test:linuxcnc/tests/toolchanger/m61/test.sh", "result": { "command": { "ack_tick": 1, "deadline_tick": 2, "issued_tick": 0, "kind": "TOOL_CHANGE", "operation_id": "tool-change-7", "side_effect_count": 1, "status": "acked" }, "state_hash": "fnv1a64:7ad2320cbbbb8f5f" }, "result_hash": "fnv1a64:a8cd1748e9f419af", "status": "PASSED" }, { "adapter": "SOURCE_BLOCKED", "fixture": [ { "bytes": 2, "path": "linuxcnc/tests/io-startup/nonrandom/no-tool-in-P0/expected-startup-tool-number", "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa" }, { "bytes": 79, "path": "linuxcnc/tests/io-startup/nonrandom/no-tool-in-P0/tool.tbl.original", "sha256": "1db74ae9166fe086158f4b19442a2360785b55202cb48bf7230df7b9da610f8c" }, { "bytes": 1834, "path": "linuxcnc/tests/io-startup/nonrandom/test.ini", "sha256": "76d7285e12c851859615c98dda9df6969fc38b30f4f8186b2ea9f53680e28da3" }, { "bytes": 85, "path": "linuxcnc/tests/io-startup/shared-test.sh", "sha256": "e96aefc914933c4aa51d0c94c642a9698c404f6a9863d05fa4073cb98956e006" }, { "bytes": 67, "path": "linuxcnc/tests/io-startup/checkresult", "sha256": "c210d3eea8c126de9ad24c7f528df7ca22fed21c48399d49f4c852116c6ab1aa" } ], "id": "source-test:linuxcnc/tests/io-startup/nonrandom/no-tool-in-p0/test.sh", "reason": "startup tool table requires full Task/configuration runtime", "result": { "expected_startup_tool": 0, "reason": "startup tool table requires full Task/configuration runtime" }, "result_hash": "fnv1a64:7c207a1152e52b38", "status": "SOURCE_BLOCKED" }, { "adapter": "SOURCE_BLOCKED", "fixture": [ { "bytes": 2, "path": "linuxcnc/tests/io-startup/nonrandom/tool-in-P0/expected-startup-tool-number", "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa" }, { "bytes": 79, "path": "linuxcnc/tests/io-startup/nonrandom/tool-in-P0/tool.tbl.original", "sha256": "509dee0e1ce678f6aa08c6612fae0f537959885f0858f0d94faa32d388c887c1" }, { "bytes": 1834, "path": "linuxcnc/tests/io-startup/nonrandom/test.ini", "sha256": "76d7285e12c851859615c98dda9df6969fc38b30f4f8186b2ea9f53680e28da3" }, { "bytes": 85, "path": "linuxcnc/tests/io-startup/shared-test.sh", "sha256": "e96aefc914933c4aa51d0c94c642a9698c404f6a9863d05fa4073cb98956e006" }, { "bytes": 67, "path": "linuxcnc/tests/io-startup/checkresult", "sha256": "c210d3eea8c126de9ad24c7f528df7ca22fed21c48399d49f4c852116c6ab1aa" } ], "id": "source-test:linuxcnc/tests/io-startup/nonrandom/tool-in-p0/test.sh", "reason": "startup tool table requires full Task/configuration runtime", "result": { "expected_startup_tool": 0, "reason": "startup tool table requires full Task/configuration runtime" }, "result_hash": "fnv1a64:7c207a1152e52b38", "status": "SOURCE_BLOCKED" }, { "adapter": "WORKER_TASK_MOTION_PENDING", "fixture": [ { "bytes": 183, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/test.sh", "sha256": "46f57af48221b1c3f17e3b9e68d6cdd1c55052a0d37b3aa4ef4afc197f22f913" }, { "bytes": 2212, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/test.ini", "sha256": "4c38be12b4fed74481506483e6f30f87a8afc1a9e2d508fc3584fe196602ca0d" }, { "bytes": 650, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/test-ui.py", "sha256": "99790f9e239500ce02e8e45cacf8cd5566e419d0b4dd0484a6c8204720ed59eb" }, { "bytes": 263, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/nc_files/init.ngc", "sha256": "80b41785f68766cb8e9ad0b5ff47bf3b51172888acf5601d40c28fc45395365a" }, { "bytes": 76, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/checkresult", "sha256": "177380330f4a079d4e5e5198b43be508ccf9f335f5e3fe114dccb6c2dfc45fe6" }, { "bytes": 4182, "path": "linuxcnc/tests/motion-logger/startup-gcode-abort/expected.motion-logger.in", "sha256": "08a8034dc963f5a94a6da49e9a8b638255f82d3b66da0aadd5e26c63cd9b74a9" } ], "id": "source-test:linuxcnc/tests/motion-logger/startup-gcode-abort/test.sh", "reason": "motion logger and startup abort endpoint require Task/motion adapter", "result": { "session_tick": 0, "task_hash": "fnv1a64:d293ad8f8d4bdf13", "task_program_status": "aborted" }, "result_hash": "fnv1a64:5b4bf8fb347cf008", "status": "WORKER_TASK_MOTION_PENDING" }, { "adapter": "HOST_EXCLUDED", "fixture": [ { "bytes": 259, "path": "linuxcnc/tests/classicladder/estop/test.sh", "sha256": "c84df79ae64ca9d8c5e5604699d47303874e76c4b0a484379ae7249bf83e754c" }, { "bytes": 645, "path": "linuxcnc/tests/classicladder/estop/classicladder-estop.ini", "sha256": "7c6c95f5d6d70e0508e05b8cf5754fda32f55fee7ed16bbff2760b77373c4cd0" }, { "bytes": 1683, "path": "linuxcnc/tests/classicladder/estop/classicladder-estop.hal", "sha256": "aec927b5809f5dd1425ed783ec5ef687070636186217a475fdcb919760b63f23" }, { "bytes": 4448, "path": "linuxcnc/tests/classicladder/estop/classicladder-estop.clp", "sha256": "e5ab35ca25d65868b976e9e6ddc9af241160c158f5084c938d9501ace9c2f157" }, { "bytes": 1558, "path": "linuxcnc/tests/classicladder/estop/classicladder-estop-ui.py", "sha256": "c998e3ddf86894c9603e633023ffc85d742784b963e18a4c4f57f21a80a513d6" }, { "bytes": 121, "path": "linuxcnc/tests/classicladder/estop/checkresult", "sha256": "583883dc785e6aab0f1313cfc20ed86e9c362082b5c47514264abbbbf973c80e" } ], "id": "source-test:linuxcnc/tests/classicladder/estop/test.sh", "reason": "ClassicLadder GUI/runtime is host excluded", "result": { "reason": "ClassicLadder GUI/runtime is host excluded" }, "result_hash": "fnv1a64:6d24438783646acd", "status": "HOST_EXCLUDED" } ], "context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "counts": { "HOST_EXCLUDED": 1, "PASSED": 3, "SOURCE_BLOCKED": 2, "WORKER_TASK_MOTION_PENDING": 1 }, "fixture_file_count": 30, "schema": "linuxcnc-source-io-adapter.v1" } } }