# ADR 0002: NODEDC MISSION CORE monorepo - Status: accepted - Date: 2026-07-16 ## Context The repository began as a focused XGRIDS/LixelKity K1 connector and then gained a vendor-neutral control-station shell, local control plane, replay runtime, and embedded spatial viewer. The K1 vertical is proven on real hardware, but its names and implementation are still coupled to the host. ## Decision The product, repository, and local root are named NODEDC MISSION CORE. The canonical Git path is `SILVER/NODEDC_MISSION_CORE`, and the local checkout is `NODEDC_MISSION_CORE`. Mission Core remains one monorepo while the first plugin contract stabilizes: ```text apps/control-station/ browser operator application packages/plugin-sdk/ shared plugin contracts and host interfaces plugins/xgrids-k1/ XGRIDS/LixelKity K1 device plugin src/k1link/ transitional compatibility implementation docs/ architecture, runbooks, ADRs, and redacted evidence ``` An independent plugin does not require an independent Git repository at this stage. The XGRIDS plugin must have an explicit package/runtime boundary, manifest, capabilities, tests, and no ownership of Mission Core navigation. It can be split into another repository later without changing host contracts. The Rerun integration is a replaceable presentation adapter. It is not the Mission Core data bus, session database, or device protocol. ## Compatibility boundary The rename does not alter these proven interfaces: - Python import namespace and CLI `k1link`; - native `.k1mqtt` framing and `K1MQTT` magic; - provisioning profile `xgrids-k1-fw3-wifi-v1`; - K1 MQTT topics and firmware-scoped protobuf/LZ4 codecs; - wire-level `k1_ip` and metric values (their frontend type/hook names may move behind the plugin boundary; see ADR 0003); - schema v1 `$id`, which remains an immutable legacy identifier. Those names move or change only during the plugin-extraction milestone with explicit migration and regression tests. ## Consequences - Product branding, repository metadata, frontend application path, API title, and Rerun recording identity use Mission Core naming now. - The existing K1 implementation remains operational while contracts are extracted incrementally. - Core must eventually boot without the XGRIDS plugin. - An invalid installed manifest, missing factory, or manifest/runtime drift fails startup before the host accepts traffic. After successful startup, an action failure is isolated to that namespaced plugin request and must not terminate the Mission Core host or raw evidence plane. - A future repository split remains possible after Plugin SDK v1 is stable.