Skip to content

Latest commit

 

History

History
135 lines (112 loc) · 10.7 KB

PROJECT_STATUS.md

File metadata and controls

135 lines (112 loc) · 10.7 KB

Deneb Project Status

Last reconciled: 2026-07-22

This is the only human-maintained dashboard for current project state. For navigation and documentation rules, see README.md. Detailed test history belongs in evidence/, and future sequencing belongs in PLATFORM_MODERNIZATION_ROADMAP.md.

Current source and target boundary

  • SOURCE claims refer to the repository tree containing this document.
  • Printer package observed on 2026-07-10: 1a4a4afe-dirty.
  • The 2026-07-10 automation results prove only the named installed package, not later source changes. The 2026-06-28 hands-on run remains the newest UI workflow evidence.

Status vocabulary

Status Meaning
SOURCE Implementation or packaging exists; no runtime claim.
HOST Host tests or static/package audits passed; no hardware claim.
TARGET The named workflow passed on the printer on a recorded package/date.
FAILED Target evidence demonstrated incorrect or unsafe behavior.
BLOCKED Work cannot proceed safely until a stated prerequisite is resolved.
PLANNED Accepted future work with no completion claim.

Objectives at a glance

Objective Current state What prevents completion
Native touchscreen SOURCE + partial TARGET Material workflow, leveling Cancel, update UX, diagnostics, and Pause behavior are not release-ready.
Native print service SOURCE + HOST + partial TARGET; experimental Completion and abort have bounded proof. Latest hands-on Pause failed; the source mitigation is not deployed or target-proven. Long active-soak memory behavior remains open.
Remove stock coordinator SOURCE + partial TARGET; substantially implemented All 7 scoped workstreams have native implementation or an explicit retirement decision: 3 are complete and 4 are partial. The installer disables the stock coordinator by default, and clean reboot plus selected workflows ran with no live Python. Remaining gates are material load/unload, leveling Cancel, safe Pause/Resume, diagnostics, and broader recovery proof.
Fully remove Python from the firmware NOT COMPLETE The read-only base image still contains Python; bootstrap patching, rollback, and AVR programming/recovery still depend on it.
First-class Web UI MVP + partial TARGET Control recovery, storage/upload UX, security, diagnostics/update UX, accessibility, and connection cleanup remain incomplete. Four SSE clients currently starve REST and leak descriptors until reboot.
Current distro and dependencies PLANNED No reproducible printer-specific current OpenWrt image, device-tree/kernel port, safe test boot, or rollback lane exists yet.
Fully Deneb-owned firmware image EARLY / PLANNED Display/touch, MCU control and recovery, storage, factory data, update, and recovery must be owned and proven on a clean image build.
Modern Marlin controller firmware SOURCE AUDIT; PORT NOT STARTED The command/protocol and slicer boundary is inventoried. Modern Marlin has conflicting command meanings and lacks the Connect board, hardware, safety, and serial-protocol port; no recoverable test build exists.

Done and currently supported

These claims are intentionally narrow:

  • Deneb update archives have static gates rejecting Python source/runtime artifacts in the package.
  • Native implementations exist for the touchscreen, print service, Digital Factory connector, Web/API path, and every scoped coordinator-replacement workstream; three coordinator workstreams are closed and four retain bounded target-proof or UX/safety gates.
  • A clean 2026-07-10 reboot reached idle with one API process, an empty queue, zero heater targets, and no Python executable process.
  • Bounded homing, completion, active abort, low-temperature heat, and cluster upload/start/abort passed on installed package 1a4a4afe-dirty without limit, endstop, thermal, or controller alerts.
  • All five installed native fixture/static self-test suites passed.
  • Cura 5.13 discovery and representative local lifecycle paths have older dated target evidence; broader failure handling remains open.
  • WiFi and Ethernet USB configuration, the native UI, and the lightweight vanilla Web frontend are implemented.

These successes do not make the complete firmware, UI, or print service stable.

In progress

Priority Work Current position Exit condition
1 Prove the reproducible WSL build lane Dependency versions and hashes are pinned, setup is scripted, and the release wrapper is deterministic; a fresh-environment end-to-end MIPS package build is not yet recorded Fresh environment builds and audits a current MIPS package reproducibly
2 Make Pause/Resume safe and bounded 2026-06-28 Pause allowed motion to continue; installed policy also commands Z205, outside the authorized test envelope; current source mitigation has HOST proof only Current package passes hands-on Pause/Resume/Stop with bounded motion and zero new alerts
3 Finish no-coordinator target acceptance Replacement coverage exists across all 7 scoped workstreams: 3 complete, 4 partial. Stock coordinator disablement, clean idle, rejected upload, LAN/API completion, and LAN/API abort have no-Python target proof; material, leveling Cancel, safe Pause/Resume, diagnostics, and recovery gaps remain Full workflow matrix passes with strict no-Python runtime inventory
4 Fix Web/API concurrency and lifecycle ownership Three SSE clients plus polling passed; four SSE clients starved REST and retained seven descriptors; service restart can create two API processes Multiple clients, reconnects, service restarts, uploads, and long polling return to baseline without starvation or leaked descriptors
5 Explain print-service soak memory behavior Short repeated jobs pass; longer runs showed a resident/private-memory staircase Multi-hour representative run plateaus or the growth source is fixed
6 Freeze Marlin and slicer compatibility contracts Source audit found 19 Connect-added M-code numbers, modified standard commands, collisions, and custom transport; no build/profile/target proof exists Versioned command/response fixtures, safe traces, profiles, generated jobs, and preflight validation cover every dependency

Known defects and safety blocks

Severity Defect Current evidence / required response
Safety blocker Pause can change software state while motion continues Failed 2026-06-28 hands-on run; do not promote until a current build passes physical proof
Safety blocker Installed Pause policy commands Z205 Outside the authorized 0..190 mm automation envelope; revise policy before automated retest
Release blocker Material load/change does not prove a complete load/unload workflow Fix state, heat presentation, extrusion sequencing, and hands-on completion
Release blocker Leveling Cancel did not rehome/reset the wizard Implement deterministic cancel cleanup and target-test it
Release blocker Four SSE clients can starve REST and retain descriptors/sockets Isolate capacity, close abandoned proxy/API sockets, and add regression coverage
Release blocker API init ownership can create duplicate processes Establish one service owner and test restart/fallback behavior
Incorrect state Manual heat reports the printer as printing Separate heater activity from job activity in shared status classification
Missing target function Diagnostics export source/formatter exists but is not installed on the tested target Package, install, and target-test bounded redacted export/download behavior
Incorrect identity Printer API reports missing/invalid firmware, machine, and PCB identity Populate identity from authoritative device/config sources
Test tooling defect Runtime inventory can false-positive on shell command text containing python Classify by /proc/<pid>/exe and structured argv instead of substring alone
Source/behavior mismatch Frame-light source now sends the Connect-required lowercase M142 w... form, but native startup/prime paths still emit removed G10 Remove or translate the remaining G10 path, host-test it, then verify physical behavior under the safety contract
UX blocker Update screen overflowed, appeared stuck, and lacked a dedicated updating state Redesign and prove update/reboot/rollback presentation

No unattended physical test may exceed the documented safety contract: home before motion, stop on any limit/endstop alert, keep commanded X/Y/Z within the approved test envelope, and obey heater caps.

Planned sequence after current blockers

  1. Build and deploy current source through the documented WSL environment.
  2. Close Pause/Stop, material, leveling Cancel, diagnostics, and Web connection cleanup on the legacy image.
  3. Replace the Python AVR/mainboard programming and recovery utility with a native, recoverable implementation.
  4. Retain lighttpd as the HTTP front end, expand its generic HTTP protections, and evaluate FastCGI/SCGI transport offload only if it improves connection cleanup, uploads, SSE, recovery, and total resource use.
  5. Build a reproducible current OpenWrt image and prove non-destructive boot and recovery on spare hardware.
  6. Produce a Deneb-owned image without UltiMaker application files while preserving required factory data and controller recovery.
  7. Port Connect controller support and host protocol behavior onto maintained Marlin, with a known-good hex and bootloader recovery available first.

Detailed phase gates are in PLATFORM_MODERNIZATION_ROADMAP.md.

Evidence pointers

Evidence files prove only their recorded version, date, and workflow. They do not override this dashboard's current classification without reconciliation.