diff --git a/wasm-port/docs/compatibility-validation.md b/wasm-port/docs/compatibility-validation.md index b61ff04..e24ef72 100644 --- a/wasm-port/docs/compatibility-validation.md +++ b/wasm-port/docs/compatibility-validation.md @@ -111,10 +111,11 @@ 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 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. +subroutine fixtures, plus threading/rigid tap, NURBS dispatch boundaries, 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 hidden NURBS control-point detail, 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 bf0b2c5..bd23aab 100644 --- a/wasm-port/docs/drift-report.md +++ b/wasm-port/docs/drift-report.md @@ -69,9 +69,10 @@ 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 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. + it also covers threading/rigid tap, NURBS dispatch boundaries, and comparable + canonical runtime edge calls. Adapter-heavy fixtures and upstream `rs274` + output gaps such as `WAIT` or hidden NURBS control-point detail 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 53b1b28..86f6e0d 100644 --- a/wasm-port/docs/porting-steps-standalone.md +++ b/wasm-port/docs/porting-steps-standalone.md @@ -507,10 +507,11 @@ 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, 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 + subroutine fixture coverage, threading/rigid tap coverage, NURBS dispatch + boundary 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` and hidden NURBS + control-point detail 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 diff --git a/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh b/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh index 335a4e5..bc80cfd 100755 --- a/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh +++ b/wasm-port/tools/verify_native_linuxcnc_fixture_baseline.sh @@ -19,6 +19,8 @@ FIXTURES=( plane_selection modal_incremental numbered_params + nurbs_g5_semantics + nurbs_g6_semantics oword_subroutine percent_file_finish position_params @@ -75,6 +77,16 @@ normalize_standalone_events() { next } + if (line ~ /^NURBS_G5_FEED /) { + print "NURBS_G5_FEED" + next + } + + if (line ~ /^NURBS_G6_FEED /) { + print "NURBS_G6_FEED" + next + } + if (line == "MIST_ON" || line == "MIST_OFF" || line == "FLOOD_ON" || line == "FLOOD_OFF" || line == "ENABLE_FEED_OVERRIDE" || line == "DISABLE_FEED_OVERRIDE" || line == "DISABLE_ADAPTIVE_FEED" || line == "ENABLE_ADAPTIVE_FEED" || @@ -366,6 +378,11 @@ normalize_upstream_rs274_output() { next } + if (line ~ /^NURBS_G5_FEED\(/) { + print "NURBS_G5_FEED" + next + } + if (line ~ /^COMMENT\("/) { value = args_of(line) sub(/^"/, "", value) @@ -585,6 +602,11 @@ normalize_upstream_rs274_output() { next } } + + /^N\.\.\.\.\. saicanon NURBS_G6_FEED_/ && seen_reset { + print "NURBS_G6_FEED" + next + } ' }