按建议继续完成后续工作

结论:upstream rs274 side-by-side 基线已扩展到 threading/rigid tap canonical 调用;完整 native 验证已通过。
This commit is contained in:
2026-06-07 22:56:05 +08:00
parent 7566d733e2
commit 55fcaf0267
4 changed files with 60 additions and 13 deletions

View File

@@ -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 vendored LinuxCNC source path and an upstream `rs274` side-by-side baseline for
parser/conversion, offsets, feed-control, comment/logging, numbered-parameter, parser/conversion, offsets, feed-control, comment/logging, numbered-parameter,
spindle-orient, file-open reset, file-finish, tool-reload, and O-word spindle-orient, file-open reset, file-finish, tool-reload, and O-word
subroutine fixtures, plus the comparable canonical runtime edge calls. subroutine fixtures, plus threading/rigid tap and the comparable canonical
Fixtures that depend on standalone-only runtime adapters, HAL/INI/tool table runtime edge calls. Fixtures that depend on standalone-only runtime adapters,
setup, upstream `rs274` output gaps such as `WAIT`, or richer machine session HAL/INI/tool table setup, upstream `rs274` output gaps such as `WAIT`, or
state still need dedicated native LinuxCNC baselines. richer machine session state still need dedicated native LinuxCNC baselines.
The kinematics probes currently cover LinuxCNC identity/trivial kinematics, The kinematics probes currently cover LinuxCNC identity/trivial kinematics,
the switchable `5axiskins` XYZBCW bridge-mill model, and the TRT `xyzac`/`xyzbc` the switchable `5axiskins` XYZBCW bridge-mill model, and the TRT `xyzac`/`xyzbc`

View File

@@ -69,9 +69,9 @@ semantic rewrites:
path. The upstream `rs274` side-by-side baseline now covers simple motion, path. The upstream `rs274` side-by-side baseline now covers simple motion,
offsets, feed-control, comment/logging, numbered-parameter, spindle-orient, offsets, feed-control, comment/logging, numbered-parameter, spindle-orient,
file-open reset, file-finish, tool-reload, and O-word subroutine fixtures; file-open reset, file-finish, tool-reload, and O-word subroutine fixtures;
it also covers comparable canonical runtime edge calls. Adapter-heavy it also covers threading/rigid tap and comparable canonical runtime edge
fixtures and upstream `rs274` output gaps such as `WAIT` still need dedicated calls. Adapter-heavy fixtures and upstream `rs274` output gaps such as
native LinuxCNC baselines. `WAIT` still need dedicated native LinuxCNC baselines.
## Current Drift Conclusion ## Current Drift Conclusion

View File

@@ -507,12 +507,12 @@ Current verified progress:
native LinuxCNC canonical output for simple motion, offsets, feed-control, native LinuxCNC canonical output for simple motion, offsets, feed-control,
comment/logging, numbered-parameter, spindle-orient, file-finish, and comment/logging, numbered-parameter, spindle-orient, file-finish, and
tool-reload fixtures. It now also includes file-open reset and O-word tool-reload fixtures. It now also includes file-open reset and O-word
subroutine fixture coverage, plus comparable canonical runtime edge calls. subroutine fixture coverage, threading/rigid tap coverage, plus comparable
Native output is filtered to the event classes each standalone fixture canonical runtime edge calls. Native output is filtered to the event classes
explicitly expects, while upstream `rs274` output gaps such as `WAIT` remain each standalone fixture explicitly expects, while upstream `rs274` output
covered by the standalone harness rather than being treated as side-by-side gaps such as `WAIT` remain covered by the standalone harness rather than
evidence. The comparison does not introduce a project-authored CNC semantics being treated as side-by-side evidence. The comparison does not introduce a
oracle. project-authored CNC semantics oracle.
- `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and - `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and
`tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative `tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative
`G1` zero-feed case. The source basis is LinuxCNC `G1` zero-feed case. The source basis is LinuxCNC

View File

@@ -23,6 +23,7 @@ FIXTURES=(
percent_file_finish percent_file_finish
position_params position_params
spindle_orient spindle_orient
threading_sync
tool_reload tool_reload
) )
@@ -224,6 +225,33 @@ normalize_standalone_events() {
next 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. # Upstream rs274 does not emit saicanon WAIT for the M66 case.
if (line ~ /^WAIT /) { if (line ~ /^WAIT /) {
next next
@@ -476,6 +504,25 @@ normalize_upstream_rs274_output() {
next 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\(/) { if (line ~ /^SET_FEED_MODE\(/) {
args = args_of(line) args = args_of(line)
split(args, values, ",") split(args, values, ",")