diff --git a/README.md b/README.md index 6ca5bf8..fa32c4b 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ 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). -Two operator-verified projects now establish project-level `frequency` and +Three operator-verified projects now establish project-level `frequency` and `QPulseWidth` serialization; see the [verified-project analysis](docs/research/lightburn-verified-projects-2026-10-24.md). Missing pulse width still requires explicit resolution before executable import. diff --git a/docs/CODEX_HANDOFF.md b/docs/CODEX_HANDOFF.md index 70370a6..59b88ef 100644 --- a/docs/CODEX_HANDOFF.md +++ b/docs/CODEX_HANDOFF.md @@ -54,11 +54,12 @@ python scripts/check_public_repo.py . The closed-application local settings directory is now preserved and hashed in PrivateStash; see `docs/research/lightburn-local-settings-2026-10-24.md`. The operator confirmed a 110 mm installed lens. General local project candidates -remain excluded as unverified. The operator subsequently selected two specific +remain excluded as unverified. The operator subsequently selected three specific successful projects; their verified private copies establish project-level `frequency` and `QPulseWidth` serialization. See -`docs/research/lightburn-verified-projects-2026-10-24.md`. One layer omits -`QPulseWidth`; its effective default remains unresolved. +`docs/research/lightburn-verified-projects-2026-10-24.md`. One Scan setting and +two `CutSetting_Img` image settings omit `QPulseWidth`; its effective default +remains unresolved. Both image settings record `ditherMode="3dslice"`. 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-verified-projects-2026-10-24.md b/docs/research/lightburn-verified-projects-2026-10-24.md index 96b0ecf..1ee2b0d 100644 --- a/docs/research/lightburn-verified-projects-2026-10-24.md +++ b/docs/research/lightburn-verified-projects-2026-10-24.md @@ -1,16 +1,16 @@ # Operator-verified LightBurn projects - Date: 2026-10-24 -- Provenance: two files explicitly selected by the operator as successfully tested +- Provenance: three files explicitly selected by the operator as successfully tested - Scope: byte-preserving acquisition and offline XML analysis; no hardware access -The two explicitly supplied files supersede the earlier exclusion only for +The three explicitly supplied files supersede the earlier exclusion only for these selected originals. Other unverified local projects remain excluded. Raw geometry, names, paths and complete settings remain in PrivateStash. -Both copied files were verified against their originals with SHA-256. +All copied files were verified against their originals with SHA-256. See [public manifest](../../evidence/public-lightburn-verified-projects.jsonl). -Both roots are `LightBurnProject`, with `AppVersion="2.1.03"` and +All roots are `LightBurnProject`, with `AppVersion="2.1.03"` and `FormatVersion="1"`. Process settings occur as direct children of `CutSetting`, with numeric strings in a `Value` attribute. @@ -23,7 +23,18 @@ Both roots are `LightBurnProject`, with `AppVersion="2.1.03"` and | `sha256-0807d2a2d1613e1aff90` | Cut | 80000 | 180 | | `sha256-0807d2a2d1613e1aff90` | Scan | 1000000 | 10 | -All four Scan settings also have `crossHatch Value="1"`. These are stored +The third verified project, `sha256-4d63253294dcf0239d17`, contains three +`CutSetting` elements in order: Cut (80000, 180), Scan (1000000, 10), and +Cut (80000, 180), expressed as raw (frequency, pulse width) pairs. + +Reinspection of all three projects also identifies `CutSetting_Img` in both +the second and third projects. Each has `type="Image"`, raw `frequency=200000`, +`ditherMode="3dslice"`, and no `QPulseWidth` child. The third project includes +Bitmap, Ellipse and Path shapes. These image settings require a separate parser +path from ordinary `CutSetting`; observing the stored mode does not establish +Rayforge support for equivalent image processing. + +All five Scan settings also have `crossHatch Value="1"`. These are stored layer settings, not independent proof of which settings emitted on a machine. Successful operation is the operator's statement; it was not replayed here. diff --git a/evidence/public-lightburn-verified-projects.jsonl b/evidence/public-lightburn-verified-projects.jsonl index 7c3966b..df92877 100644 --- a/evidence/public-lightburn-verified-projects.jsonl +++ b/evidence/public-lightburn-verified-projects.jsonl @@ -1,2 +1,3 @@ {"analysis_refs": ["docs/research/lightburn-verified-projects-2026-10-24.md"], "artifact_id": "sha256-1e1ec8441cc23ee997a6", "classification": "private-sensitive", "media_type": "application/octet-stream", "observed_at_utc": "2026-10-24T10:44:44.053873Z", "origin": "operator-confirmed successful JPT LightBurn projects", "sha256": "1e1ec8441cc23ee997a61d70592d1e8fa3035d3541729abf5a89f73c7f3aa528", "size_bytes": 202189} {"analysis_refs": ["docs/research/lightburn-verified-projects-2026-10-24.md"], "artifact_id": "sha256-0807d2a2d1613e1aff90", "classification": "private-sensitive", "media_type": "application/octet-stream", "observed_at_utc": "2026-10-24T10:44:44.053873Z", "origin": "operator-confirmed successful JPT LightBurn projects", "sha256": "0807d2a2d1613e1aff90294fe515d7a26aa2df9ba214b77fd1990ba315bea9d1", "size_bytes": 1198348} +{"analysis_refs": ["docs/research/lightburn-verified-projects-2026-10-24.md"], "artifact_id": "sha256-4d63253294dcf0239d17", "classification": "private-sensitive", "media_type": "application/octet-stream", "observed_at_utc": "2026-10-24T10:46:34.924738Z", "origin": "operator-confirmed successful JPT LightBurn projects", "sha256": "4d63253294dcf0239d17242d762147361a01ef37ba291375744b49db79714b81", "size_bytes": 966908} diff --git a/tests/test_public_evidence.py b/tests/test_public_evidence.py index 8c2c722..b67bbd0 100644 --- a/tests/test_public_evidence.py +++ b/tests/test_public_evidence.py @@ -52,7 +52,7 @@ class PublicEvidenceTests(unittest.TestCase): "public-installer-configs.jsonl": 9, "public-lightburn-exports.jsonl": 4, "public-lightburn-local-settings.jsonl": 1, - "public-lightburn-verified-projects.jsonl": 2, + "public-lightburn-verified-projects.jsonl": 3, } actual = { path.name: len(path.read_text(encoding="utf-8").splitlines())