diff --git a/README.md b/README.md index fa32c4b..aec52fb 100644 --- a/README.md +++ b/README.md @@ -36,12 +36,13 @@ Phase 0 has established a reproducible evidence and research baseline: - the public tests, provenance checks, leak guard, and clean-clone validation pass. -Phase 0 remains open while we collect known-working LightBurn projects, device -screenshots, machine photos, and operator notes directly from the actual control -computer. The bundle, exported preferences and closed-application local settings -are preserved and analyzed. The operator confirmed a 110 mm lens; local test -projects are unverified and must not be used as working-project evidence. See -the [local settings acquisition](docs/research/lightburn-local-settings-2026-10-24.md). +Phase 0 remains open while we collect the remaining device screenshots, machine +photos and operator notes directly from the actual control computer. The bundle, +exported preferences, closed-application local settings and three explicitly +operator-verified projects are preserved and analyzed. The operator confirmed a +110 mm lens; other local test projects remain unverified. See the +[local settings acquisition](docs/research/lightburn-local-settings-2026-10-24.md) +and [control-machine observation](docs/research/lightburn-control-machine-observation-2026-10-24.md). Three operator-verified projects now establish project-level `frequency` and `QPulseWidth` serialization; see the @@ -85,8 +86,8 @@ real-project gates in The initial offline architecture spikes have passed. The next work remains hardware-free: -1. collect known-working `.lbrn2` projects and the remaining screenshots, - photos, preferences folder and operator notes; +1. collect the remaining Device Settings screenshots, exterior labels and + startup/interlock notes; 2. obtain or produce a reviewed Windows Rayforge build artifact without installing a toolchain through this repository; 3. run and record the packaged no-device desktop interaction checklist; @@ -122,6 +123,7 @@ project workspace or development destination. - [Upstream contract and license audit](docs/research/upstream-contract-and-license-audit.md) - [Live USB enumeration](docs/research/live-usb-enumeration-2026-10-17.md) - [LightBurn device-export analysis](docs/research/lightburn-device-exports-2026-10-19.md) +- [LightBurn control-machine observation](docs/research/lightburn-control-machine-observation-2026-10-24.md) - [Sanitized machine profile](docs/research/machine-profile.yaml) - [110/300 configuration comparison](docs/research/config-comparison.md) - [Data handling policy](docs/data-handling.md) diff --git a/docs/CODEX_HANDOFF.md b/docs/CODEX_HANDOFF.md index aa4d444..f1548ae 100644 --- a/docs/CODEX_HANDOFF.md +++ b/docs/CODEX_HANDOFF.md @@ -61,6 +61,14 @@ successful projects; their verified private copies establish project-level two `CutSetting_Img` image settings omit `QPulseWidth`; its effective default remains unresolved. Both image settings record `ditherMode="3dslice"`. +The running control-machine application was also inspected while the laser was +physically disconnected. LightBurn Pro 2.1.03 showed the JPT profile as +`Disconnected`, the 110 mm material library, and explicit `Frequency (kHz)` / +`Q-Pulse (ns)` UI labels. The live preferences and newest native backup are +hashed in PrivateStash. The screenshot channel timed out, so the complete +Device Settings tab set and exterior hardware photographs remain open; see +`docs/research/lightburn-control-machine-observation-2026-10-24.md`. + M1 is not complete. Do not describe the repository as a finished desktop application until both gates below have real evidence: diff --git a/docs/research/lightburn-control-machine-observation-2026-10-24.md b/docs/research/lightburn-control-machine-observation-2026-10-24.md new file mode 100644 index 0000000..e58ab43 --- /dev/null +++ b/docs/research/lightburn-control-machine-observation-2026-10-24.md @@ -0,0 +1,50 @@ +# LightBurn control-machine observation + +- Date: 2026-10-24 +- Application: LightBurn Pro 2.1.03 +- Hardware state: laser physically disconnected by the operator +- Scope: passive UI and local-preference inspection only + +## Confirmed in the running application + +The window title identified LightBurn Pro `2.1.03` with the operator-verified +`Gradients DepthMap` project open. The active device was `100 JPT E2 MOPA`, the +connection status read `Disconnected`, the port selector read `(Auto)`, and the +loaded material library was `Mopa-100W-110mm`. + +The Cuts / Layers panel labels the MOPA controls as `Frequency (kHz)` and +`Q-Pulse (ns)`. This independently establishes the UI display units needed by +the offline importer contract; it does not establish the serialized-file unit +or authorize conversion without the documented normalization rule. + +The visible selected-layer controls showed speed `1800 mm/s`, one pass, power +`17%`, frequency `1000 kHz`, and Q-pulse width `10 ns`. The project layer list +also showed an Image layer at `1800 / 59` and two additional layers at +`12 / 59`. These values are observations of the open project, not recommended +recipes. + +## Preference cross-check and preserved files + +The live preferences still contain four device records. The named JPT profile +is `JCZFiber` over `LibUSB`, has a 110 x 110 mm work area, enables Q-pulse-width +control, and requires framing before start. The profile stores a raw frequency +range of 1 to 4000 and has home-on-startup disabled. + +The active preferences file and LightBurn's newest native `.lbprefs` backup +were copied into PrivateStash with before/source-after/copy SHA-256 equality +checks. Their two sanitized public records are in +[`public-lightburn-control-machine-observation.jsonl`](../../evidence/public-lightburn-control-machine-observation.jsonl). +Exact local paths, raw preferences and machine-specific fields remain private. + +## Collection limits + +The automation screenshot channel repeatedly returned `window capture timed +out`; accessibility-only inspection remained available. Geometry-dependent +controls therefore could not be safely invoked to capture every Device +Settings tab. No substitute Support Data bundle was generated. + +No Start or Frame control was used, no USB endpoint or controller was opened, +and no machine setting was intentionally changed. The operator's 110 mm lens +statement remains operator-confirmed rather than photographically verified. +Exterior hardware labels and the complete Device Settings screenshot set remain +open evidence items. diff --git a/docs/status/phase-0.md b/docs/status/phase-0.md index c30a658..9ffaf36 100644 --- a/docs/status/phase-0.md +++ b/docs/status/phase-0.md @@ -1,6 +1,6 @@ # Phase 0 status -Last updated: 2026-10-21 +Last updated: 2026-10-24 ## Completed @@ -32,19 +32,23 @@ Last updated: 2026-10-21 area. A separate 500 x 300 mm Ruida profile remains physically unassigned. - No vendor executable, plugin, DLL, or driver was run. No USB capture, framing, machine command, or laser output was performed. +- The actual control machine was inspected with the laser physically + disconnected. LightBurn Pro 2.1.03 showed the `100 JPT E2 MOPA` device, + `Disconnected` status, the `Mopa-100W-110mm` library and explicit kHz/ns MOPA + UI units. The live preferences and newest native backup were preserved and + hashed; see the [control-machine observation](../research/lightburn-control-machine-observation-2026-10-24.md). ## Pending external acquisition These items remain pending from the actual control machine: -- closed-application preferences-folder archive; -- Device Settings screenshots; -- known-working `.lbrn2` examples; +- Device Settings screenshots (the automation screenshot channel timed out); - safe exterior hardware/label photographs and startup/interlock notes; - stock-driver identity and version from the actual LightBurn control computer. -An About screenshot is useful corroboration, but the imported bundle manifests -already establish version `2.1.03`. +An About screenshot is useful corroboration, but the window title and imported +bundle manifests already establish version `2.1.03`. The closed-application +preferences archive and three operator-verified `.lbrn2` examples are complete. Collect them directly into a dated directory under PrivateStash by following the [LightBurn checklist](../collection/lightburn.md). Do not use Google Drive diff --git a/evidence/public-lightburn-control-machine-observation.jsonl b/evidence/public-lightburn-control-machine-observation.jsonl new file mode 100644 index 0000000..9e0dac4 --- /dev/null +++ b/evidence/public-lightburn-control-machine-observation.jsonl @@ -0,0 +1,2 @@ +{"analysis_refs": ["docs/research/lightburn-control-machine-observation-2026-10-24.md"], "artifact_id": "sha256-773fea756949638083f2", "classification": "private-sensitive", "media_type": "application/octet-stream", "observed_at_utc": "2026-10-24T11:09:47.2517433Z", "origin": "live LightBurn control-machine preferences", "sha256": "773fea756949638083f2146b4e4ff2c7f532704474495a098e7087cf13ad033b", "size_bytes": 98884} +{"analysis_refs": ["docs/research/lightburn-control-machine-observation-2026-10-24.md"], "artifact_id": "sha256-cf81c4901e358b1868dd", "classification": "private-sensitive", "media_type": "application/octet-stream", "observed_at_utc": "2026-10-24T11:09:47.2517433Z", "origin": "latest native LightBurn preferences backup", "sha256": "cf81c4901e358b1868ddb77069de14382d75ad48063b9ccf56cccfd6404e4973", "size_bytes": 97356} diff --git a/tests/test_public_evidence.py b/tests/test_public_evidence.py index b67bbd0..96750e7 100644 --- a/tests/test_public_evidence.py +++ b/tests/test_public_evidence.py @@ -50,6 +50,7 @@ class PublicEvidenceTests(unittest.TestCase): def test_expected_manifest_entry_counts(self) -> None: expected = { "public-installer-configs.jsonl": 9, + "public-lightburn-control-machine-observation.jsonl": 2, "public-lightburn-exports.jsonl": 4, "public-lightburn-local-settings.jsonl": 1, "public-lightburn-verified-projects.jsonl": 3,