{
  "schema_version": 1,
  "profile_id": "xgrids.lixelkity-k1.fw-3.0.2.local-network.v2",
  "profile_status": "experimental-evidence-backed",
  "scope": {
    "vendor": "XGRIDS",
    "model": "LixelKity K1",
    "platform_type": "A4",
    "firmware": {
      "match": "exact",
      "version": "3.0.2"
    },
    "topology": "local-network-matrix",
    "claim_limit": "One owner-controlled K1 on exact firmware 3.0.2. Bridge/Mission Core is physically accepted. Quick Connect AP activation and association are accepted only on one prepared macOS host with a preinstalled firmware provider; clean-host bootstrap is not implemented. Direct Connect reuses the physically accepted 99-byte BLE Wi-Fi frame but still requires its own Mission Core physical acceptance. This is not a vendor API or a cross-firmware compatibility claim.",
    "connection_modes": [
      {
        "id": "bridge",
        "topology": "direct-lan",
        "direction": "k1-joins-existing-network",
        "device_network_action": "single-reviewed-ble-provisioning-write",
        "host_network_action": "none",
        "target_address_policy": "ble-status-non-ap-private-ipv4",
        "acceptance": "mission-core-physical-accepted"
      },
      {
        "id": "direct-connect",
        "topology": "controller-hotspot",
        "direction": "k1-joins-controller-network",
        "device_network_action": "single-reviewed-ble-provisioning-write",
        "host_network_action": "operator-prepared-hotspot",
        "target_address_policy": "ble-status-non-ap-private-ipv4",
        "acceptance": "implementation-ready-physical-acceptance-pending"
      },
      {
        "id": "quick-connect",
        "topology": "device-ap",
        "direction": "controller-joins-k1-network",
        "device_network_action": "single-reviewed-ble-ap-activation-write",
        "host_network_action": "exact-firmware-provider-and-single-corewlan-association",
        "target_address_policy": "reviewed-fixed-k1-ap-private-ipv4",
        "acceptance": "prepared-macos-host-physical-accepted"
      }
    ]
  },
  "evidence_vocabulary": {
    "observed": "The channel, transport, or physical behavior was directly seen on the owner-controlled K1.",
    "decoded": "A bounded decoder produces the stated semantic payload from observed bytes; transport framing alone is not a semantic decode.",
    "replay_verified": "A captured payload of this semantic channel has passed the repository replay-to-view path.",
    "physical_verified": "The result was correlated with a controlled physical K1 state or operator action.",
    "write_enabled": "This profile authorizes software to emit the state-changing vendor request. False never grants runtime write authority."
  },
  "safety": {
    "default_mode": "read-only",
    "vendor_writes_enabled": false,
    "unknown_firmware_policy": "reject-profile",
    "request_topic_subscription_enabled": false,
    "notes": [
      "Loading this descriptive profile does not authorize a BLE or MQTT write.",
      "The reviewed Wi-Fi provisioning procedure remains a separate explicit operator action and is not activated by loading this profile.",
      "Observed LixelGO modeling requests remain write-disabled in this descriptive profile; the separately installed acceptance transport requires a live DeviceInfo match and one operator-present action permit.",
      "Unknown firmware, transport, topics, fields, and action responses fail closed."
    ]
  },
  "evidence_sources": [
    {
      "id": "wifi-provisioning-profile",
      "kind": "reviewed-profile",
      "path": "docs/04_K1_WIFI_PROVISIONING_PROFILE.md",
      "scope": "Observed firmware, GATT UUIDs, 99-byte provisioning frame, status read and physical LAN association."
    },
    {
      "id": "mqtt-stream-profile",
      "kind": "reviewed-profile",
      "path": "docs/05_K1_MQTT_STREAM_PROFILE.md",
      "scope": "Local MQTT transport, report topics, bounded point/pose codecs and static modeling-request mapping."
    },
    {
      "id": "lab-001",
      "kind": "redacted-physical-lab-report",
      "path": "docs/lab/001_K1_LIVE_MQTT_20260715.redacted.md",
      "scope": "Physical BLE-to-Wi-Fi result, MQTT message counts, point/pose decode totals and negative camera observation."
    },
    {
      "id": "live-viewer-profile",
      "kind": "implemented-path-description",
      "path": "docs/06_K1_LIVE_VIEWER.md",
      "scope": "Raw-first live/replay path for point cloud and pose."
    },
    {
      "id": "lab-002",
      "kind": "redacted-physical-protocol-report",
      "path": "docs/lab/002_LIXELGO_IPHONE_LOCAL_PROTOCOL_20260716.redacted.md",
      "scope": "Owner-operated LixelGO start/stop mapping, local-only bounded traffic result and left/right RTSP/H.264 camera-preview discovery."
    },
    {
      "id": "lab-004",
      "kind": "redacted-physical-and-firmware-analysis-report",
      "path": "docs/lab/004_K1_FW302_AP_CREDENTIAL_PROVIDER_20260720.redacted.md",
      "scope": "Official K1 3.0.2 firmware credential source, SSID construction, secure provider import, prepared-host physical association and the decision to keep Quick Connect laboratory-only."
    }
  ],
  "transports": [
    {
      "id": "ble.wifi-bootstrap.fw3.v1",
      "role": "bootstrap-and-status",
      "protocol": "BLE GATT",
      "service_uuid": "00007f00-0000-1000-8000-00805f9b34fb",
      "characteristics": {
        "wifi_request": "00007f01-0000-1000-8000-00805f9b34fb",
        "wifi_status": "00007f02-0000-1000-8000-00805f9b34fb"
      },
      "reviewed_profile_id": "xgrids-k1-fw3-wifi-v1",
      "request_frame_bytes": 99,
      "status_semantics": {
        "ap_baseline_ipv4": "192.168.56.1",
        "lan_acceptance": "A non-AP private IPv4 must be observed and independently confirmed on the intended LAN."
      },
      "evidence": {
        "observed": true,
        "decoded": true,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "wifi-provisioning-profile",
        "lab-001",
        "lab-004"
      ]
    },
    {
      "id": "mqtt.local-ipv4.fw3.v1",
      "role": "report-data-plane",
      "protocol": "MQTT 3.1.1",
      "network": {
        "transport": "TCP",
        "port": 1883,
        "tls": false,
        "authentication": "none-observed",
        "addressing": "confirmed-device-private-ipv4-only"
      },
      "subscription_allowlist": [
        "lixel/application/report/#",
        "RealtimePointcloud",
        "RealtimePath",
        "DeviceStatus"
      ],
      "evidence": {
        "observed": true,
        "decoded": false,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "mqtt-stream-profile",
        "lab-001",
        "live-viewer-profile",
        "lab-002"
      ]
    },
    {
      "id": "rtsp.camera-preview.fw3.v1",
      "role": "camera-preview-data-plane",
      "protocol": "RTSP 1.0 with interleaved RTP over TCP",
      "network": {
        "transport": "TCP",
        "port": 8554,
        "tls": false,
        "authentication": "none-observed",
        "addressing": "confirmed-device-private-ipv4-only"
      },
      "media": {
        "codec": "H.264",
        "rtp_payload_type": 96,
        "clock_hz": 90000,
        "framing": "RTP/AVP/TCP interleaved channels 0-1"
      },
      "evidence": {
        "observed": true,
        "decoded": false,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "lab-002"
      ]
    }
  ],
  "channels": [
    {
      "id": "spatial.point-cloud.live",
      "kind": "point-cloud",
      "direction": "device-report",
      "topic": "lixel/application/report/lio_pcl",
      "wire_format": "protobuf MqttCompressMsg containing raw-LZ4 LioPclReport",
      "semantic_payload": "metric XYZ, complete uint32 rgbi and verified low-byte intensity",
      "bounds": {
        "max_mqtt_payload_bytes": 2097152,
        "max_compressed_bytes": 1048576,
        "max_decoded_bytes": 8388608,
        "max_expansion_ratio": 64,
        "max_points_per_frame": 250000
      },
      "unverified_fields": [
        "upper 24 bits of rgbi as RGB",
        "sensor timestamp epoch",
        "sensor-to-vehicle extrinsics"
      ],
      "evidence": {
        "observed": true,
        "decoded": true,
        "replay_verified": true,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "mqtt-stream-profile",
        "lab-001",
        "live-viewer-profile"
      ]
    },
    {
      "id": "spatial.pose.live",
      "kind": "pose",
      "direction": "device-report",
      "topic": "lixel/application/report/lio_pose",
      "wire_format": "protobuf LioPoseReport",
      "semantic_payload": "position XYZ, quaternion XYZW, distance and pose accuracy",
      "unverified_fields": [
        "sensor timestamp epoch",
        "coordinate-frame convention",
        "sensor-to-vehicle extrinsics"
      ],
      "evidence": {
        "observed": true,
        "decoded": true,
        "replay_verified": true,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "mqtt-stream-profile",
        "lab-001",
        "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": "protobuf DeviceStatusReport acquisition lifecycle subset",
      "semantic_payload": "bounded modeling-state base-offset mapping, init-ready flag, project presence and redacted identity fields",
      "limitations": [
        "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": true,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "mqtt-stream-profile",
        "lab-001"
      ]
    },
    {
      "id": "device.heartbeat.live",
      "kind": "heartbeat",
      "direction": "device-report",
      "topic": "lixel/application/report/heartbeat",
      "wire_format": "opaque bytes",
      "semantic_payload": null,
      "limitations": [
        "Only channel presence and approximate report cadence are verified.",
        "Payload semantics are not decoded."
      ],
      "evidence": {
        "observed": true,
        "decoded": false,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "mqtt-stream-profile",
        "lab-001"
      ]
    },
    {
      "id": "camera.preview.live",
      "kind": "camera-preview",
      "direction": "device-report",
      "discovery_status": "observed",
      "topic": null,
      "endpoint_templates": [
        "rtsp://{confirmed-device-private-ipv4}:8554/live/chn_left_main",
        "rtsp://{confirmed-device-private-ipv4}:8554/live/chn_right_main"
      ],
      "wire_format": "RTSP 1.0, interleaved RTP/TCP, H.264 PT96 at 90000 Hz",
      "semantic_payload": "compressed live left/right camera preview selected by endpoint",
      "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.",
        "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,
        "decoded": false,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "lab-002"
      ]
    }
  ],
  "acquisition_control": {
    "mode": "operator-manual",
    "write_enabled": false,
    "software_acceptance_transport": {
      "status": "installed-operator-present",
      "default_authority": "disabled",
      "profile_gate": "live-device-info-exact-match",
      "dialogue": "single-socket-canonical-start-to-stop",
      "automatic_retry": false,
      "supported_mount_type": "handheld",
      "supported_gnss_mode": "none"
    },
    "verified_device_control": {
      "gesture": "physical-double-click",
      "state_dependent_result": "start from steady-green standby; stop during active scanning",
      "single_click_result": "not a verified scan-start action",
      "evidence": {
        "observed": true,
        "decoded": false,
        "replay_verified": false,
        "physical_verified": true,
        "write_enabled": false
      },
      "source_ids": [
        "lab-001"
      ]
    },
    "semantic_actions": [
      {
        "id": "acquisition.start",
        "execution": "operator-manual",
        "operator_control": "physical-double-click from steady-green standby",
        "observed_application_control": "owner-operated LixelGO project confirmation",
        "vendor_request_mapping": {
          "evidence_kind": "owner-controlled-wire-observation",
          "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": "private-application-level-runtime-authority"
          },
          "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": [
            "operator-owned Keychain authority provisioning and operator-present physical acceptance",
            "authorization policy for any setting outside the retained request",
            "timeout, rejection and rollback contract"
          ],
          "evidence": {
            "observed": true,
            "decoded": true,
            "replay_verified": false,
            "physical_verified": true,
            "write_enabled": false
          },
          "write_enabled": false
        },
        "evidence": {
          "observed": true,
          "decoded": true,
          "replay_verified": false,
          "physical_verified": true,
          "write_enabled": false
        },
        "source_ids": [
          "mqtt-stream-profile",
          "lab-001",
          "lab-002"
        ]
      },
      {
        "id": "acquisition.stop",
        "execution": "operator-manual",
        "operator_control": "physical-double-click during active scanning",
        "observed_application_control": "owner-operated LixelGO stop confirmation",
        "vendor_request_mapping": {
          "evidence_kind": "owner-controlled-wire-observation",
          "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": "private-application-level-runtime-authority"
          },
          "request_fields": {},
          "success_result_code": 302252033,
          "required_unresolved_context": [
            "operator-owned Keychain authority provisioning and operator-present physical acceptance",
            "save-completion and final-standby state mapping",
            "timeout and rollback contract"
          ],
          "evidence": {
            "observed": true,
            "decoded": true,
            "replay_verified": false,
            "physical_verified": true,
            "write_enabled": false
          },
          "write_enabled": false
        },
        "evidence": {
          "observed": true,
          "decoded": true,
          "replay_verified": false,
          "physical_verified": true,
          "write_enabled": false
        },
        "source_ids": [
          "mqtt-stream-profile",
          "lab-001",
          "lab-002"
        ]
      },
      {
        "id": "calibration.device.start",
        "execution": "unavailable",
        "operator_control": null,
        "vendor_request_mapping": null,
        "observed_behavior": "Static initialization follows acquisition.start; no independent calibration action was observed.",
        "limitations": [
          "No standalone calibration command topic, request schema, acknowledgment or state transition is verified."
        ],
        "evidence": {
          "observed": false,
          "decoded": false,
          "replay_verified": false,
          "physical_verified": false,
          "write_enabled": false
        },
        "source_ids": [
          "lab-002"
        ]
      }
    ]
  }
}
