diff --git a/wasm-port/docs/compatibility-validation.md b/wasm-port/docs/compatibility-validation.md index dfce094..b61ff04 100644 --- a/wasm-port/docs/compatibility-validation.md +++ b/wasm-port/docs/compatibility-validation.md @@ -111,10 +111,10 @@ The current fixture expectations validate standalone behavior against both the vendored LinuxCNC source path and an upstream `rs274` side-by-side baseline for parser/conversion, offsets, feed-control, comment/logging, numbered-parameter, spindle-orient, file-open reset, file-finish, tool-reload, and O-word -subroutine fixtures, plus the comparable canonical runtime edge calls. -Fixtures that depend on standalone-only runtime adapters, HAL/INI/tool table -setup, upstream `rs274` output gaps such as `WAIT`, or richer machine session -state still need dedicated native LinuxCNC baselines. +subroutine fixtures, plus threading/rigid tap and the comparable canonical +runtime edge calls. Fixtures that depend on standalone-only runtime adapters, +HAL/INI/tool table setup, upstream `rs274` output gaps such as `WAIT`, or +richer machine session state still need dedicated native LinuxCNC baselines. The kinematics probes currently cover LinuxCNC identity/trivial kinematics, the switchable `5axiskins` XYZBCW bridge-mill model, and the TRT `xyzac`/`xyzbc` diff --git a/wasm-port/docs/drift-report.md b/wasm-port/docs/drift-report.md index 65aad41..bf0b2c5 100644 --- a/wasm-port/docs/drift-report.md +++ b/wasm-port/docs/drift-report.md @@ -69,9 +69,9 @@ semantic rewrites: path. The upstream `rs274` side-by-side baseline now covers simple motion, offsets, feed-control, comment/logging, numbered-parameter, spindle-orient, file-open reset, file-finish, tool-reload, and O-word subroutine fixtures; - it also covers comparable canonical runtime edge calls. Adapter-heavy - fixtures and upstream `rs274` output gaps such as `WAIT` still need dedicated - native LinuxCNC baselines. + it also covers threading/rigid tap and comparable canonical runtime edge + calls. Adapter-heavy fixtures and upstream `rs274` output gaps such as + `WAIT` still need dedicated native LinuxCNC baselines. ## Current Drift Conclusion diff --git a/wasm-port/docs/porting-steps-standalone.md b/wasm-port/docs/porting-steps-standalone.md index 4ca6593..53b1b28 100644 --- a/wasm-port/docs/porting-steps-standalone.md +++ b/wasm-port/docs/porting-steps-standalone.md @@ -507,12 +507,12 @@ Current verified progress: native LinuxCNC canonical output for simple motion, offsets, feed-control, comment/logging, numbered-parameter, spindle-orient, file-finish, and tool-reload fixtures. It now also includes file-open reset and O-word - subroutine fixture coverage, plus comparable canonical runtime edge calls. - Native output is filtered to the event classes each standalone fixture - explicitly expects, while upstream `rs274` output gaps such as `WAIT` remain - covered by the standalone harness rather than being treated as side-by-side - evidence. The comparison does not introduce a project-authored CNC semantics - oracle. + subroutine fixture coverage, threading/rigid tap coverage, plus comparable + canonical runtime edge calls. Native output is filtered to the event classes + each standalone fixture explicitly expects, while upstream `rs274` output + gaps such as `WAIT` remain covered by the standalone harness rather than + being treated as side-by-side evidence. The comparison does not introduce a + project-authored CNC semantics oracle. - `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and `tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative `G1` zero-feed case. The source basis is LinuxCNC diff --git a/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh b/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh index 4fd8894..335a4e5 100755 --- a/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh +++ b/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh @@ -23,6 +23,7 @@ FIXTURES=( percent_file_finish position_params spindle_orient + threading_sync tool_reload ) @@ -224,6 +225,33 @@ normalize_standalone_events() { next } + if (line ~ /^START_SPEED_FEED_SYNCH /) { + split(line, fields, /[[:space:]]+/) + for (i in fields) { + split(fields[i], pair, "=") + values[pair[1]] = pair[2] + } + print "START_SPEED_FEED_SYNCH|" norm(values["feed_per_revolution"]) "|" values["velocity_mode"] + delete values + next + } + + if (line == "STOP_SPEED_FEED_SYNCH") { + print line + next + } + + if (line ~ /^RIGID_TAP /) { + split(line, fields, /[[:space:]]+/) + for (i in fields) { + split(fields[i], pair, "=") + values[pair[1]] = pair[2] + } + print "RIGID_TAP|" norm(values["x"]) "|" norm(values["y"]) "|" norm(values["z"]) + delete values + next + } + # Upstream rs274 does not emit saicanon WAIT for the M66 case. if (line ~ /^WAIT /) { next @@ -476,6 +504,25 @@ normalize_upstream_rs274_output() { next } + if (line ~ /^START_SPEED_FEED_SYNC\(/) { + args = args_of(line) + split(args, values, ",") + print "START_SPEED_FEED_SYNCH|" norm(values[1]) "|" trim(values[2]) + next + } + + if (line == "STOP_SPEED_FEED_SYNCH()") { + print "STOP_SPEED_FEED_SYNCH" + next + } + + if (line ~ /^RIGID_TAP\(/) { + args = args_of(line) + split(args, values, ",") + print "RIGID_TAP|" norm(values[1]) "|" norm(values[2]) "|" norm(values[3]) + next + } + if (line ~ /^SET_FEED_MODE\(/) { args = args_of(line) split(args, values, ",")