60 lines
2.6 KiB
Markdown
60 lines
2.6 KiB
Markdown
# Rayforge synthetic LightBurn JCZ device-import spike
|
|
|
|
- Date: 2026-10-19
|
|
- Rayforge commit: `c28918c87f8273dd1d244f5a057addc192807fa5`
|
|
- Fixture: synthetic public `.lbdev`; no machine identifiers
|
|
- Scope: device-profile importer only, with no discovery or transport
|
|
|
|
## Result
|
|
|
|
Pinned Rayforge parses the synthetic `JCZFiber` profile and preserves its
|
|
display name, 110 x 110 mm work area and generic home-on-start value. It does
|
|
not select a driver because its LightBurn driver map has no `JCZFiber` entry.
|
|
|
|
The imported `DeviceProfile` also has no representation of the observed
|
|
`RequireFrameBeforeStart` setting or the synthetic cut-list `frequency` and
|
|
`QPulseWidth` fields. The import is therefore explicitly classified as unsafe
|
|
for JCZ use rather than receiving guessed defaults.
|
|
|
|
The external addon now supplies the narrow profile seam missing from Rayforge
|
|
core. It recognizes only the explicit public synthetic profile identity,
|
|
requires LightBurn 2.1.03, `JCZFiber`, the observed 110 x 110 mm work area,
|
|
Q-pulse-width enablement, fiber-type code 3, a valid 1-4000 kHz profile range,
|
|
and `RequireFrameBeforeStart: true`. It associates the result only with
|
|
`PirateRayJCZNoDeviceDriver`. Cut-list frequency is normalized from serialized
|
|
Hz to display kHz and `QPulseWidth` remains ns. Encoding stays blocked because
|
|
physical identity, lens/correction match, certified limits and promotion
|
|
review are not verified.
|
|
|
|
The checked result is
|
|
`tests/fixtures/rayforge-lightburn-device-import.json`. Two runs produced the
|
|
same SHA-256 digest,
|
|
`94f0d17837471399334a82c84558985d35da0f1a8eee6a176eb02d57ae3aeb18`.
|
|
|
|
## Evidence boundary
|
|
|
|
The fixture uses field names already recorded by the sanitized LightBurn
|
|
device-export analysis. Its values are synthetic examples inside observed
|
|
ranges, not a copy of a private export and not certified machine limits or
|
|
material settings. It deliberately omits private GUIDs, source paths and
|
|
unpublished connection serialization.
|
|
|
|
This spike characterizes the current importer and proves the smallest mapping
|
|
at the external-addon boundary. It does not change Rayforge core or silently
|
|
map `JCZFiber` to a G-code or Ruida driver.
|
|
|
|
## Reproduce
|
|
|
|
Run against the pinned Rayforge checkout:
|
|
|
|
```powershell
|
|
python scripts/spike_rayforge_lightburn_device_import.py C:\path\to\rayforge
|
|
```
|
|
|
|
## Next seam
|
|
|
|
Offline controller-list buffering and explicit state ordering are complete.
|
|
The next software gate is packaged Windows GTK interaction. Image-layer
|
|
equivalence and absent `QPulseWidth` remain blocked rather than defaulted.
|
|
|
|
No USB enumeration, controller command, motion, framing or emission occurred.
|