SDLX Project Progress
Updated: 2026-07-13
Working Foundations
- LabBridge provides the common Gateway boundary for MQTT/ESPHome nodes, controller devices, operations, artifacts, audit, MCP, and Admin Web.
- SimFleet provides 31 maintainable built-in device profiles, including AMR, AGV, fixed arm, and mobile manipulator contracts. Import, grouping, enable, edit, YAML view, individual delete, and delete-all are implemented.
- Robot simulation exposes carrier/custody state, route/station/service-port checks, fixed station modes, and deterministic failure injection.
- Composer runs on nanobot and owns deterministic skill/module selection, capability binding, package generation, validation, and package review.
- LabFlow has strict workflow YAML, preflight, DAG scheduling, parallel/join, locks, approvals, safe-stop, audit, artifacts, and run export.
- PACE owns immutable loop packages, runtime orchestration, result contracts, process-scoped experiment facts, evidence, incidents, and diagnostics.
- ESPHome node01/node02 firmware layouts, build/flash scripts, MQTT conventions, sensors, relay, and OLED support are present.
Completed In This Iteration
- Added
human-task-controllerand the first operator-assisted device profile,manual_xrd0.upload_phase_analysis. - Added
rde-cell-station0.prepare_rde_cellfor liquid electrochemistry setup. - Added durable Human Task, immutable revision, artifact-role, and timeline storage in LabBridge.
- Added Human Task create/list/detail/claim/upload/submit/review/reject/cancel APIs and a dedicated Admin Web Inbox.
- Bound submissions to operation, sample, schema, artifact role/media type, checksum, revision, and idempotency key.
- Linked accepted submissions to Gateway operation completion and linked run cancellation to Human Task cancellation.
- Added LabFlow
completion.mode=operation_terminal, persistent operation waits, restart reconciliation, and differentiated blocking reasons. - Added restricted
$fromdata binding forrun.parameters.*and completed step results. - Added signed LabFlow run/step provenance to Gateway operation context.
- Added
phase-analyzer0as a deterministic SimFleet decision device and a runnablepowder_heat_characterizePACE package covering weighing, heating, operator-assisted XRD, automatic evaluation, and archival. - PACE now preserves LabFlow
WAITINGas an active state and exposes the blocking reason, operation IDs, and Human Task IDs while polling continues. - Added an end-to-end regression proving the Human Task result and both XRD artifacts flow through LabFlow into the PACE result contract.
- Removed second-person review as a product requirement. One operator can submit and, for
manual_accept, confirm the same immutable revision. - Implemented shared LabBridge map revisions, stations, service ports, device placements, expiring resource leases, and revisioned carrier custody.
- Added Spatial Admin CRUD and coordinate-free MCP station/status views. Agent context receives station IDs and mode/port constraints, not raw motion poses.
- Added semantic Composer bindings by
semantic_id, required output fields, online state, and optional station. Package bindings do not encode a simulated/physical execution branch. - Added the ORR RDE LSV module and PACE demo: operator cell setup followed by
electrochemical-workstation0.run_lsv, with literature evidence and local SOP parameters separated explicitly. - Promoted the nanobot ASCEND Agent from a prompt skeleton to a durable campaign coordinator. It stores campaign/decision records, links Composer, PACE, LabFlow, operation, Human Task, artifact, and incident IDs, requires an explicit approval reference before start, and aggregates blocking states.
- Extracted that coordinator into the independent
ascend/module with a campaign dashboard, decision/reference detail, and persistent notifications. - Added an ASCEND-owned nanobot runtime, chat-first Web UI, isolated tool plugins, Campaign Iterations, automation policy, decision proposals, and constrained automatic next-round handling. Composer and ASCEND no longer import each other.
- Renamed the former HELM module to ASCEND end to end: directory, Python package, CLI, tool entry points, runtime variables, Web identity, documentation, and recovery contracts now use the new product name. Legacy environment names remain read-only deployment fallbacks.
- Aligned ASCEND's model configuration with Composer by copying the same module-local YAML
llmschema and nanobot provider/config/model runtime sources. ASCEND keeps its own key, workspace, sessions, tools, and API process. - Added Composer's formal
POST /api/composer/jobsboundary and changed ASCEND package handoff to API responses instead of reading Composer run directories. - Added
pace-result-bundle/v1. Device controllers own native result processing, LabBridge validates capabilityoutput_schema, and PACE generically returns semantic parameters and object-store artifact URIs to ASCEND. - Added optional trusted-proxy identity and viewer/operator/admin authorization to LabBridge, plus service-token access for internal controllers and schedulers.
- Connected LabFlow steps to robot/station/port/carrier lease bundles, periodic renewal, source-custody checks, successful custody transfer, and unknown-state handling after uncertain failures.
- Added
scripts/test-golden-loop-recovery.shfor rejection/resubmission, cancellation, durable external wait/restart reconciliation, spatial transfer, PACE cancellation forwarding, and ASCEND campaign regression contracts. - Replaced periodic full SimFleet re-registration with one fleet heartbeat that refreshes enabled-device liveness. Live
/api/summarylatency dropped from multi-second/timeout behavior to about 4 ms after the initial registration pass. - Added automatic MCP session reinitialization in LabFlow and PACE after a LabBridge restart, preventing stale
Session not foundpreflight failures. - Fixed SQLite contention that regressed LabFlow's independent parallel waits.
- Changed the Gateway summary contract to report all registered, enabled, disabled, online, and offline counts independently. The current live snapshot is 33 online enabled devices out of 38 registered devices, with 5 disabled.
- Fixed malformed inline YAML descriptions in the AGV, AMR, fixed-arm, and mobile-manipulator profiles. SimFleet now rejects unknown template, profile, capability, and execution fields instead of silently accepting parser damage.
- Added an isolated live-process recovery suite. It starts LabBridge Admin, both MCP transports, MQTT listener, SimFleet and Human Task workers, LabFlow, PACE, and ASCEND; writes durable records; sends
SIGKILL; restarts; and verifies the records through HTTP. A GitHub Actions workflow runs the same suite. - Added the searchable VitePress SDLX documentation site on port 8112 with architecture, delivery, and operations navigation plus a locked CI build.
- Added a live documentation status endpoint that aggregates LabBridge, LabFlow, PACE, ASCEND, and Composer health and current device counts. The public documentation route now serves the English site successfully.
Verification
- Composer: 34 tests passed.
- LabBridge: 135 tests and 16 subtests passed; Admin Web production build passed.
- LabFlow: 66 tests passed.
- PACE: 59 tests passed.
- ASCEND: 7 tests passed; Admin Web production build and live model smoke passed.
- Golden Loop recovery contract command passed across all five modules.
- Live process
SIGKILLand restart recovery passed for the isolated stack. - Documentation dependency audit reported zero vulnerabilities and its production build passed.
- Online ORR RDE package preflight passed with no blocking checks against live LabBridge, LabFlow, and PACE services.
Main Gaps
- Trusted-proxy authentication and role enforcement are implemented, but SDLX does not yet own an OIDC provider, account lifecycle, or organization policy.
- Spatial leases protect a running step, but interrupted physical robot work is not automatically resumed after a LabFlow process restart. Controller idempotency and physical custody reconciliation are required first.
- Spatial Admin manages station records and placement, but it does not yet offer a calibrated floor-map editor or controller-driven calibration workflow.
ascend.sdl.digauto.orgdoes not yet have a TLS/SNI route. The previoushelm.sdl.digauto.orghost currently serves the renamed ASCEND UI as a temporary compatibility endpoint.- ASCEND notifications are persistent and visible in its Web UI; outbound delivery such as email, webhook, or enterprise chat is not implemented.
- ASCEND and Composer model credentials are stored in separate ignored local YAML files. Deployment secret provisioning and rotation are not centralized.
- Physical AMR/AGV/arm controller adapters still need to implement the same tested contracts used by SimFleet.
- Firmware config validation is locally blocked until the ignored
firmware/packages/secrets.yamlis supplied; secrets must not be generated or overwritten automatically.
Recommended Order
- Add physical-controller idempotency and custody reconciliation for safe recovery of interrupted robot transfers.
- Add the
ascend.sdl.digauto.orgTLS reverse-proxy route to port 8110, then retire the previous host after a compatibility window. - Monitor the new recovery and documentation workflows after their first remote GitHub Actions run.
- Integrate the trusted-header boundary with the deployment identity provider.
- Replace selected SimFleet profiles with physical controllers without changing workflow capability contracts.
- Validate and calibrate the first physical mobile-manipulator station modes.