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¶
doc/project/40-proposals/045-sensorium-local-enaction-stratum.mddoc/project/40-proposals/055-bounded-deferred-operation-contract.md
Project Lineage¶
Requirements¶
Stories¶
doc/project/30-stories/story-005-whisper-rumor-intake.mddoc/project/30-stories/story-006-voluntary-swarm-exchange.mddoc/project/30-stories/story-009-bielik-blog-arca.md
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