Skip to content

Sensorium-device-discovery-candidate.v1

Source schema: doc/schemas/sensorium-device-discovery-candidate.v1.schema.json

Ephemeral caller-private candidate. Label and selector are untrusted UTF-8 (256 encoded bytes enforced by host). Never put candidate or selector material or their digests into durable metadata, logs, receipts, outcomes or publications. Identity names a verification method, source and time/scope; selector kinds are not a trust ladder. Candidate validity is at most 120 seconds and cannot exceed identity validity. Restart/revoke invalidation remains host-owned.

Governing Basis

Project Lineage

Requirements

Stories

Fields

Field Required Shape Description
schema yes const: sensorium-device-discovery-candidate.v1
schema/v yes const: 1
candidate/ref yes string
operation/id yes string
caller/ref yes string
profile/ref yes ref: sensorium-device-discovery.request.v1.schema.json#/$defs/profile
transport/kind yes enum: ble, usb-serial, mdns
transport/scope yes ref: sensorium-device-discovery.request.v1.schema.json#/$defs/scope
label yes string
selector yes object
identity yes object
expires/at-unix-ms yes integer
classification yes object

Conditional Rules

Rule 1

When:

{
  "properties": {
    "selector": {
      "properties": {
        "kind": {
          "const": "advertised-name"
        }
      },
      "required": [
        "kind"
      ]
    }
  },
  "required": [
    "selector"
  ]
}

Then:

{
  "properties": {
    "identity": {
      "properties": {
        "method": {
          "const": "advertisement"
        },
        "source": {
          "const": "provider"
        }
      }
    },
    "transport/kind": {
      "const": "ble"
    }
  }
}

Rule 2

When:

{
  "properties": {
    "selector": {
      "properties": {
        "kind": {
          "const": "transport-address"
        }
      },
      "required": [
        "kind"
      ]
    }
  },
  "required": [
    "selector"
  ]
}

Then:

{
  "properties": {
    "identity": {
      "properties": {
        "method": {
          "const": "transport-observation"
        },
        "source": {
          "const": "provider"
        }
      }
    }
  }
}

Rule 3

When:

{
  "properties": {
    "selector": {
      "properties": {
        "kind": {
          "const": "verified-serial"
        }
      },
      "required": [
        "kind"
      ]
    }
  },
  "required": [
    "selector"
  ]
}

Then:

{
  "properties": {
    "identity": {
      "properties": {
        "method": {
          "const": "operator-verification"
        },
        "source": {
          "const": "operator"
        }
      }
    }
  }
}

Field Semantics

schema

  • Required: yes
  • Shape: const: sensorium-device-discovery-candidate.v1

schema/v

  • Required: yes
  • Shape: const: 1

candidate/ref

  • Required: yes
  • Shape: string

operation/id

  • Required: yes
  • Shape: string

caller/ref

  • Required: yes
  • Shape: string

profile/ref

  • Required: yes
  • Shape: ref: sensorium-device-discovery.request.v1.schema.json#/$defs/profile

transport/kind

  • Required: yes
  • Shape: enum: ble, usb-serial, mdns

transport/scope

  • Required: yes
  • Shape: ref: sensorium-device-discovery.request.v1.schema.json#/$defs/scope

label

  • Required: yes
  • Shape: string

selector

  • Required: yes
  • Shape: object

identity

  • Required: yes
  • Shape: object

expires/at-unix-ms

  • Required: yes
  • Shape: integer

classification

  • Required: yes
  • Shape: object