# Scope And Baseline

## Upstream Source Baseline

The standalone port currently treats `../linuxcnc/` as the read-only upstream
source provider.

- Upstream repository: `../linuxcnc`
- Upstream branch at baseline: `master`
- Upstream commit: `60597ee0718873d2449058c824262a275e5e4bad`
- Upstream subject: `Merge pull request #4043 from grandixximo/docs-inkscape-rsvg-shim`
- Upstream author: `andypugh`
- Upstream commit date: `2026-05-19T15:26:50+01:00`

The upstream working tree is allowed to contain unrelated local files, but the
vendored-source validation is tied to the commit above. If upstream HEAD
changes, re-run extraction intentionally and update this baseline in the same
change.

## Local Build Assumptions

- C++ compiler: `g++ (Debian 14.2.0-19) 14.2.0`
- C compiler: `gcc (Debian 14.2.0-19) 14.2.0`
- Python: `Python 3.13.5`
- Node.js: `v20.19.2`
- Emscripten: `emcc 3.1.69`

## Current Fixture Baseline

The native standalone validation currently uses the fixture set under
`tests/fixtures/`.

G-code fixture coverage includes:

- linear traverse and feed
- arc semantics
- modal incremental and absolute distance modes
- length unit switching
- plane selection
- position parameters
- canned cycles
- coordinate offsets
- G53 machine-coordinate motion
- feed and motion control modes
- cutter compensation motion
- probe semantics
- spindle-synchronized threading and rigid tap
- NURBS G5 and G6
- spindle orient
- tool semantics and tool table setup
- local, INI-backed named parameters and numbered parameters
- O-word subroutines
- program-end modal reset
- canonical runtime edge calls

Negative fixture coverage includes:

- zero-feed `G1`
- arc radius mismatch
- zero-radius arc
- cutter compensation plane-change rejection
- G53 incremental-mode rejection
- read-only named parameter writes
- read-only numbered parameter writes
- missing tool
- missing tool length offset

The native baseline compares those negative fixtures with upstream
`rs274 -g` for expected error text and absent canonical-event constraints.

Machine baseline is still limited to standalone interpreter, trajectory
planner, LinuxCNC identity/trivial kinematics, LinuxCNC `5axiskins` XYZBCW
bridge-mill probing, LinuxCNC TRT `xyzac`/`xyzbc` probing, and vendored
LinuxCNC five-axis sample machine assets for `M428`, `M429`, and `M430`
switchkins remaps, including LinuxCNC `interp_remap.cc` descriptor parsing for
TRT NGC remaps. Full standalone execution of those remaps still needs LinuxCNC
O-word remap dispatch and HAL synchronization boundaries connected.
