ThePirateRay/docs/research/rayforge-lightburn-mopa-import-spike.md

52 lines
2.6 KiB
Markdown

# Rayforge synthetic LightBurn MOPA import spike
- Date: 2026-10-18
- Rayforge commit: `c28918c87f8273dd1d244f5a057addc192807fa5`
- Fixture: synthetic public `.lbrn2`; no machine identifiers
- Scope: importer boundary only, with no discovery or transport
## Result
The pinned Rayforge importer successfully parsed a synthetic two-millimetre
square and preserved its layer name, geometry, 50 percent power, 250 mm/s
speed and one pass. LightBurn's observed `frequency` and
`overrideFrequency` elements also survive in the source asset's raw metadata.
However, the importer does not map frequency into the workflow layer settings.
It maps only power, speed and passes from this fixture. The inspected Rayforge
LightBurn project fixtures and importer contain no evidence-backed mapping for
a MOPA pulse-width field. A later private LightBurn device-library export
establishes the field name `QPulseWidth` and its nanosecond UI contract, but it
does not establish how that value is serialized in a `.lbrn2` project.
Consequently, the imported job is explicitly classified as unsafe for JCZ
encoding rather than being completed with a guessed mapping.
Two runs produced identical output with SHA-256
`9ebce7b5b3388abfeed024e25f8f46001260bf814da19808bfc83fb6554fc26e`.
The golden result is `tests/fixtures/rayforge-lightburn-mopa-import.json`.
## Evidence classification
- **Observed:** Rayforge's own LightBurn test fixtures contain `frequency` and
`overrideFrequency` elements.
- **Observed:** generic parsing retains these elements in source metadata.
- **Observed:** `_build_step_config` does not map frequency or pulse width.
- **Observed after this spike:** a LightBurn `2.1.03` device-library export
uses `QPulseWidth`; official LightBurn documentation defines Q-pulse width
in nanoseconds. See the
[device-export analysis](lightburn-device-exports-2026-10-19.md).
- **Unknown:** the exact `QPulseWidth` representation and omission/default
behavior in a known-working galvo `.lbrn2` project.
- **Not inferred:** no pulse-width tag, unit, default or machine limit was
invented for the public fixture.
## Decision impact
Rayforge's existing LightBurn importer is useful for ordinary vector geometry
and common process settings, but it does not yet satisfy M1's MOPA parameter
survival requirement. The narrowest likely extension is an importer mapping
for frequency plus `QPulseWidth`, followed by an explicit unit conversion and
validation gate. A private known-working LightBurn project is still needed to
establish project serialization before implementing that mapping.
No USB enumeration, controller command, motion or emission was attempted.