feat(k1): complete primary acquisition lifecycle
This commit is contained in:
@@ -29,15 +29,22 @@ boolean flags:
|
||||
| `physical_verified` | Correlated with a controlled physical state/action |
|
||||
| `write_enabled` | The profile grants emission of a state-changing request |
|
||||
|
||||
`decoded` does not mean that MQTT framing alone was parsed. Status and heartbeat
|
||||
are therefore observed raw channels, not decoded status models. Camera preview
|
||||
transport is observed, but its media decoder/replay flags remain independent.
|
||||
`decoded` does not mean that MQTT framing alone was parsed. Modeling telemetry
|
||||
and the acquisition subset of DeviceStatus have bounded profile-scoped
|
||||
decoders; heartbeat remains an observed raw channel. Camera preview transport
|
||||
is observed, but its media decoder/replay flags remain independent.
|
||||
|
||||
The v1 loader rejects every `write_enabled: true`. Owner-operated LixelGO wire
|
||||
capture verifies the `ModelingRequest` topic and action values, but complete
|
||||
device/session/OpenAPI header construction, settings, save completion, timeout
|
||||
and rollback contracts remain unresolved. Acquisition therefore stays
|
||||
`operator-manual` through the verified physical double-click.
|
||||
capture verifies the `ModelingRequest` topic, action values, field layout,
|
||||
literal `{device_id}:ModelingRequest` session relation, retained start settings
|
||||
and numeric success code. The bounded codec accepts an OpenAPI value only as an
|
||||
explicit secret; its provenance and secure provisioning are unresolved, as are
|
||||
durable save completion, timeout and rollback behavior. Acquisition therefore
|
||||
stays `operator-manual` through the verified physical double-click.
|
||||
The standalone encoder models the recovered wire schema, including enum values
|
||||
outside the retained request. It is not an authorization policy: any future
|
||||
publisher must enforce the exact profile mapping (`2/1/0`, omitted
|
||||
`pre_project_id`) in a separate reviewed gate.
|
||||
|
||||
The existing BLE Wi-Fi provisioning workflow has its own reviewed profile and
|
||||
operator confirmation. Merely loading this compatibility profile neither calls
|
||||
|
||||
@@ -209,20 +209,49 @@
|
||||
"live-viewer-profile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "device.modeling.live",
|
||||
"kind": "acquisition-telemetry",
|
||||
"direction": "device-report",
|
||||
"topic": "lixel/application/report/modeling",
|
||||
"wire_format": "protobuf ModelingReport acquisition telemetry subset",
|
||||
"semantic_payload": "nonnegative MoveDistance metres, MoveSpeed metres per second, int64 ScanTime at two ticks per second, and int32 PgoProgress",
|
||||
"bounds": {
|
||||
"max_mqtt_payload_bytes": 65536,
|
||||
"max_fields": 64,
|
||||
"max_nested_fields": 16
|
||||
},
|
||||
"limitations": [
|
||||
"ScanTime scale is exact-profile evidence and must not be generalized to other firmware.",
|
||||
"Replay-to-view acceptance remains open even though retained physical runs establish units and live decoding."
|
||||
],
|
||||
"evidence": {
|
||||
"observed": true,
|
||||
"decoded": true,
|
||||
"replay_verified": false,
|
||||
"physical_verified": true,
|
||||
"write_enabled": false
|
||||
},
|
||||
"source_ids": [
|
||||
"mqtt-stream-profile",
|
||||
"lab-001",
|
||||
"live-viewer-profile"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "device.status.live",
|
||||
"kind": "device-status",
|
||||
"direction": "device-report",
|
||||
"topic": "lixel/application/report/device_status",
|
||||
"wire_format": "opaque bytes",
|
||||
"semantic_payload": null,
|
||||
"wire_format": "protobuf DeviceStatusReport acquisition lifecycle subset",
|
||||
"semantic_payload": "bounded modeling-state base-offset mapping, init-ready flag, project presence and redacted identity fields",
|
||||
"limitations": [
|
||||
"The report was physically observed, but no bounded semantic device-status decoder is implemented.",
|
||||
"Raw capture is evidence; field names or meanings must not be inferred from payload shape."
|
||||
"Nested system and RTK status payloads are presence-checked but not semantically decoded.",
|
||||
"ScanOver and Ready observations do not prove durable artifact save completion."
|
||||
],
|
||||
"evidence": {
|
||||
"observed": true,
|
||||
"decoded": false,
|
||||
"decoded": true,
|
||||
"replay_verified": false,
|
||||
"physical_verified": true,
|
||||
"write_enabled": false
|
||||
@@ -270,7 +299,7 @@
|
||||
"limitations": [
|
||||
"No full-resolution raw frame, camera calibration or panorama-stitching contract is verified.",
|
||||
"Left/right optical identity is supported by endpoint labels and operator-selected application views, not an independent image-content fixture.",
|
||||
"A bounded Mission Core camera decoder and replay fixture are not yet implemented."
|
||||
"Mission Core implements bounded copy-remux, archival and replay admission, but no newly archived physical K1 camera session has passed shared-timeline playback acceptance."
|
||||
],
|
||||
"evidence": {
|
||||
"observed": true,
|
||||
@@ -313,11 +342,25 @@
|
||||
"transport": "MQTT 3.1.1",
|
||||
"topic": "lixel/application/request/modeling",
|
||||
"qos": 2,
|
||||
"retain": false,
|
||||
"message_type": "ModelingRequest",
|
||||
"action_field_value": 1,
|
||||
"header_contract": {
|
||||
"device_id": "explicit-observed-identity",
|
||||
"session_id": "{device_id}:ModelingRequest",
|
||||
"openapi_key": "explicit-observed-value-with-unresolved-provenance"
|
||||
},
|
||||
"request_fields": {
|
||||
"project_name": "required-operator-value",
|
||||
"record_mode": 2,
|
||||
"scan_mode": 1,
|
||||
"mount_type": 0,
|
||||
"pre_project_id": "omitted-in-retained-request"
|
||||
},
|
||||
"success_result_code": 302252033,
|
||||
"required_unresolved_context": [
|
||||
"complete device/session/OpenAPI header construction",
|
||||
"project/record/scan/mount setting semantics and safe defaults",
|
||||
"OpenAPI credential provenance and secure provisioning",
|
||||
"authorization policy for any setting outside the retained request",
|
||||
"timeout, rejection and rollback contract"
|
||||
],
|
||||
"evidence": {
|
||||
@@ -352,10 +395,18 @@
|
||||
"transport": "MQTT 3.1.1",
|
||||
"topic": "lixel/application/request/modeling",
|
||||
"qos": 2,
|
||||
"retain": false,
|
||||
"message_type": "ModelingRequest",
|
||||
"action_field_value": 2,
|
||||
"header_contract": {
|
||||
"device_id": "explicit-observed-identity",
|
||||
"session_id": "{device_id}:ModelingRequest",
|
||||
"openapi_key": "explicit-observed-value-with-unresolved-provenance"
|
||||
},
|
||||
"request_fields": {},
|
||||
"success_result_code": 302252033,
|
||||
"required_unresolved_context": [
|
||||
"complete device/session/OpenAPI header construction",
|
||||
"OpenAPI credential provenance and secure provisioning",
|
||||
"save-completion and final-standby state mapping",
|
||||
"timeout and rollback contract"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user