5.9 KiB
Mission Core experimental vocabulary v0alpha2
- Status: experimental, local to Mission Core and its Plugin SDK
- Contract API:
missioncore.nodedc/plugin-sdk/v0alpha2 - Scope: laboratory device integration; not yet a NODE.DC platform ontology
This vocabulary fixes the meaning of the executable Plugin SDK contracts while their domain model is still being discovered. It is intentionally not loaded by Ontology Core. A term is promoted into the platform ontology only after its meaning is stable outside one device plugin, its owner and lifecycle are known, and migration from experimental captures is defined.
Identity and lifecycle
| Term | Meaning |
|---|---|
DeviceModelRef |
A plugin-owned device model definition, not physical hardware. |
DeviceInstanceRef |
A particular physical or logically enrolled device. Its ID may be stable or explicitly provisional. |
TransportAlias |
An address observed in one scope, such as a BLE UUID assigned by one host or an IP address. It is not a stable identity. |
DeviceSessionContext |
One bounded period in which one plugin adapter on one execution node communicates with one device instance. |
ExecutionBinding |
The logical node and concrete agent process that owns a session. |
Acquisition |
One bounded production of sensor data. It may span multiple canonical channels. |
Operation |
One requested, auditable action with its own ID, deadline and terminal result. |
Enrollment, connectivity, and acquisition are independent state machines. A device can be enrolled while offline; it can be connected while acquisition is idle; and a failed acquisition does not erase device identity.
Operations
An acknowledgement records receipt or admission of a request. It never proves that the requested physical action completed. Completion and failure are separate terminal events. Calibration, acquisition start, and acquisition stop therefore require an operation ID, explicit timeout, device/profile-specific acknowledgement evidence, progress when available, and exactly one terminal outcome.
Secret material is not a contract value. Operations carry only
SecretReference objects; raw passwords, tokens, and credentials must not
enter parameters, events, logs, browser storage, manifests, fixtures, or
evidence metadata.
Data and evidence
| Term | Meaning |
|---|---|
RawTransportRecord |
Immutable bytes and transport context observed before vendor decoding. |
CanonicalStreamEnvelope |
Vendor-neutral data produced by a decoder, with device/session/acquisition lineage. |
EvidenceHandle |
Content-addressed reference to immutable stored bytes. |
EvidenceRecord |
Metadata, retention, redaction state and derivation lineage for one handle. |
CompatibilityAssessment |
A point-in-time, evidence-backed decision about a device and compatibility profile. |
Decoding creates derived evidence or a canonical stream; it never overwrites the raw observation. A viewer is a consumer of canonical data and does not own device protocol, transport, identity, or command state.
Mandatory non-conflation rules
DeviceModelRefis notDeviceInstanceRef.DeviceInstanceRefis notDeviceSessionContext.- A host-local BLE UUID, IP address, SSID, MQTT client ID, or USB path is a
TransportAlias, not a stabledevice_id. - Enrollment state is not connectivity state; connectivity state is not acquisition state.
- An operation acknowledgement is not operation completion.
- A command published to a transport is not a successful physical action.
- K1 internal sensor calibration is not sensor-to-vehicle extrinsic calibration and is not geodetic calibration.
- Raw evidence is not a decoded frame; a decoded frame is not viewer state.
- Device time is not host time unless an explicit clock relationship has been measured and recorded.
- A camera preview is not assumed to be an independent raw camera stream.
- Compatibility with one firmware/profile is not compatibility with a model family or a future firmware.
- A plugin UI contribution is not ownership of Mission Core navigation, scene layout, persistence, or global application state.
Deferred compatibility work
The following meanings are intentionally unresolved in v0alpha2. They must be defined and covered by migration tests before the portable contracts replace the transitional live path:
- Canonical clock representation must distinguish UTC instants from native host/device monotonic ticks or nanoseconds and record the measured mapping between them. An aware datetime alone is not a monotonic timestamp.
ReferencedPayloadmust define whetherbyte_lengthdescribes the complete referenced object or the selected segment, and howoffsetandsegment_lengthparticipate in a frame's exact layout length.- The coarse SDK
AcquisitionStatevalues require an explicit mapping to the richer transitional states such asprepared,awaiting_external_start,acquiring,awaiting_external_stop,finalizing, andcompleted. - Generic manifest validation currently proves profile-link integrity, model coverage, path confinement, and profile identity. Evidence flags and device-specific semantics are validated by each plugin's fail-closed loader; they are not yet a generic compatibility-profile schema.
Change and promotion policy
- Additive experimental changes remain in v0alpha2 only when an older document retains exactly the same meaning and remains valid.
- Breaking shape or semantic changes create a new versioned contract module.
- Deprecated fields and enum values remain readable until an explicit migration exists; they are never silently renamed or reused.
- Raw captures retain their original contract/profile versions and hashes.
- Promotion to Ontology Core requires at least one additional device family or a second platform service using the same meaning, an agreed owner, lifecycle, compatibility policy, and migration tests.