NODEDC_MISSION_CORE/docs/adr/0002-mission-core-monorepo.md

2.6 KiB

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:

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.