# 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 plugin is absent or disabled. - The plugin cannot add global navigation or arbitrary CSS. - Vendor writes and commands require declared capabilities and operator gates. - The visualization engine can be replaced without changing device plugins. - Real captures and credentials remain outside Git.