# GNX Earsling BLE / Cloud Adapter Contract

## Principle

The adapter must not expose raw physiological measurement values as Earsling output.

The adapter transports:

- metric
- status
- severity
- message
- uiColor
- hapticPattern
- graphDirective
- evidencePacketId
- policyVersion
- timestamp

## BLE characteristic guidance

A BLE characteristic should carry a compact JSON or CBOR form of `EarslingAdapterPayload`.

Required safety behavior:

- `ORANGE_OUT_OF_RANGE` is not a transport failure.
- `GRAY_CONTEXT_INVALID` is not a transport failure.
- A non-value response is a normal safety response.
- The receiving app must not infer or display a hidden measurement value.
- Haptic behavior must be single-soft-pulse or none, unless a separate licensed native policy permits otherwise.

## Cloud API guidance

Cloud API consumers should persist:

- evidencePacketId
- policyVersion
- decision/status
- replay verification result
- timestamp

Cloud API consumers should not persist raw health measurements under the Earsling engine contract.
