NODEDC_MISSION_CORE/docs/07_MISSION_CORE_MONOREPO.md

2.3 KiB

NODEDC MISSION CORE monorepo

This document maps the renamed repository to the target Mission Core architecture without claiming that unfinished package boundaries already exist.

Current layout

Path Current responsibility Target responsibility
apps/control-station/ React shell, device workflow, spatial scene Vendor-neutral operator application
src/k1link/web/ Local FastAPI control plane and K1 session orchestration Generic host APIs plus plugin supervisor
src/k1link/viewer/ Replay runtime and Rerun adapter Canonical scene sink and presentation adapter
src/k1link/ble/ K1 BLE discovery and reviewed provisioning plugins/xgrids-k1
src/k1link/mqtt/ Raw-first K1 MQTT capture plugins/xgrids-k1 behind EvidenceStore
src/k1link/protocol/ Firmware-scoped K1 codecs plugins/xgrids-k1
packages/plugin-sdk/ Contract placeholder Versioned manifests, capabilities, lifecycle, schemas
plugins/xgrids-k1/ Extraction boundary and documentation Independently versioned device plugin

Extraction order

  1. Define canonical PointCloud, Pose, DeviceStatus, RawEnvelope, and metrics contracts in the Plugin SDK.
  2. Make Rerun consume canonical frames rather than K1 MQTT topics.
  3. Extract codecs and replay parity fixtures.
  4. Extract raw capture with fault isolation between evidence and preview.
  5. Extract BLE/Wi-Fi provisioning and MQTT into a least-privilege edge worker.
  6. Replace K1-specific host routes and state with plugin/device-session APIs.
  7. Drive the connection wizard from plugin capabilities and schemas.
  8. Re-run native replay and the physical BLE → Wi-Fi → MQTT → scene acceptance.

Invariants

  • Raw evidence is durable before preview work.
  • Mission Core starts when the XGRIDS manifest is absent. A formal disabled/quarantine state for an installed plugin is a future supervisor feature.
  • The plugin cannot add global navigation or arbitrary CSS.
  • Vendor writes and commands must ultimately require declared capabilities and operator gates. In v1alpha1 permissions, mutating, and secretFields are validated metadata only; concrete adapters still enforce request safety.
  • The visualization engine can be replaced without changing device plugins.
  • Real captures and credentials remain outside Git.