ThePirateRay/docs/status/phase-0.md

105 lines
5.4 KiB
Markdown

# Phase 0 status
Last updated: 2026-10-21
## Completed
- Both repositories use `main` and have pushed, reviewable histories.
- PrivateStash uses Git LFS and preserves `raw/**` without line-ending or text
normalization.
- The existing installer-stick source was read without modifying Google Drive.
- Private evidence snapshot `b6edf29` contains 307 files totaling 79,386,307
bytes; 135 new LFS objects were uploaded in that import.
- Private manifest commit `50e589c` contains 307 SHA-256 entries, 307 matching
Drive-file provenance entries, and 29 folder provenance entries.
- Public configuration analysis is linked to nine sanitized evidence entries.
- A private 340-token deny-list checks known Drive and machine identifiers
without storing those identifiers publicly.
- A fresh clone of both remotes passed `git fsck`; the private clone additionally
passed `git lfs fsck` and reproduced the expected file and byte counts.
- The public test suite and leak guard pass against the fresh private deny-list.
- Passive Windows enumeration of the connected controller confirmed device
description `USBLMCV4`, USB VID/PID `9588:9899`, vendor-specific class, and
USB revision descriptor `0005`. No compatible function driver is installed
on the development computer; no endpoint was opened.
- Four LightBurn exports are preserved privately with SHA-256 manifests and
Git LFS. Their public evidence records contain no private source locators.
- All three bundle manifests identify LightBurn `2.1.03`.
- The JPT export confirms a `JCZFiber`/`LibUSB` device profile, 110 x 110 mm
work area, enabled Q-pulse-width control, `QPulseWidth` cut-list fields and
a require-frame-before-start setting.
- The Eduard export confirms a Ruida/Serial profile with a 1500 x 1000 mm work
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.
## Pending external acquisition
These items remain pending from the actual control machine:
- closed-application preferences-folder archive;
- Device Settings screenshots;
- known-working `.lbrn2` examples;
- 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`.
Collect them directly into a dated directory under PrivateStash by following
the [LightBurn checklist](../collection/lightburn.md). Do not use Google Drive
as an intermediate project workspace and do not generate Support Data.
Phase 0 remains open until the safety- and interoperability-relevant remainder
is hashed, committed, pushed, and represented by sanitized public evidence.
The work that does not depend on this acquisition can proceed in parallel.
The [product and research roadmap](../roadmap.md) defines the offline application
core, configuration analysis, protocol research, gated hardware experiments,
and workshop release as separate milestones.
## Offline M1 status
The Rayforge/MeerK40t reuse track has now produced public, transport-free
evidence for:
- deterministic MeerK40t BalorMK mock MOPA encoding, hatch planning and mock
spooling;
- an external Rayforge no-device addon with profile import, fixed-size list
buffering, safe state ordering, cancellation and explicit recovery;
- semantic and 12-byte-record agreement between a Rayforge `Ops` stream and
the pinned BalorMK mock values;
- fail-closed profile and encoder negative cases;
- Rayforge workflow-model serialization and preview behavior for power,
frequency and pulse width;
- independent layer visibility/output state and ordered serialization;
- material-recipe matching plus a fail-closed PirateRay provenance and exact
machine/source/lens/correction compatibility gate;
- one consolidated no-device acceptance report that reruns the complete
public test suite and leak guard, then hashes the regression evidence;
- a non-executing Windows artifact verifier that checks portable paths,
archive safety, sizes, hashes, the pinned Rayforge revision and every
packaged addon source while retaining the manual GUI gate;
- a versioned manual desktop-acceptance template and validator that cannot
pass missing steps, connected hardware, changed evidence or stop conditions;
- a deterministic acceptance-kit generator that copies only four allowlisted
public synthetic inputs, hashes them and refuses to overwrite an existing
run directory;
- pinned Rayforge and MeerK40t license/source contracts with drift tests, plus
checkpoint schema 2 requiring the Rayforge MIT notice in the portable ZIP
and beside the installer manifest.
The remaining M1 gates are deliberately explicit:
- a private known-working `.lbrn2` project is still required before mapping
project-level `QPulseWidth` into workflow settings;
- packaged Windows/GTK interaction is blocked until a reviewed Rayforge
runtime with PyGObject and MSYS2/UCRT64 is available; the repository build
entry point fetches pinned source but never installs that runtime;
- graphical workflow, import, lens correction and controller protocol
behavior remain unproven at the physical boundary;
- ADR 0002 remains **Proposed** until those gaps are resolved or rejected by
evidence.
No item in this section authorizes USB access, controller commands or laser
output.