Transcript Segment v1¶
Source schema: doc/schemas/transcript-segment.v1.schema.json
Machine-readable schema for transcript segments that preserve room/message provenance and human-origin semantics.
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
Schema version. |
segment_id |
yes |
string | |
question_id |
yes |
string | |
channel_id |
yes |
string | |
message_id |
yes |
string | |
speaker_ref |
yes |
string | Semantic speaker at the room boundary. |
gateway_node_ref |
yes |
string | Node that injected the message into the room or relay path. |
origin_class |
yes |
enum: node-generated, node-mediated-human, human-live |
|
operator_presence_mode |
yes |
enum: none, mediated, direct-live |
|
human_origin |
yes |
boolean | |
ts |
yes |
string | ISO-8601 UTC timestamp. |
content |
yes |
unspecified | Either plain text or a structured content object. Structured objects should expose a stable textual projection. |
visibility_scope |
yes |
enum: private-to-swarm, federation-local, cross-federation, global |
|
consent_basis |
yes |
enum: not-required, operator-consultation, explicit-consent, federation-policy, public-scope, emergency-exception |
|
provenance_refs |
yes |
array | |
redaction_markers |
no |
array | Describes removals or transformations rather than silently rewriting content history. |
content_hash |
no |
string | |
language |
no |
string | |
reply_to |
no |
string | |
attachments |
no |
array | |
policy_annotations |
no |
object |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"origin_class": {
"const": "node-generated"
}
},
"required": [
"origin_class"
]
}
Then:
{
"properties": {
"human_origin": {
"const": false
},
"operator_presence_mode": {
"const": "none"
}
}
}
Rule 2¶
When:
{
"properties": {
"origin_class": {
"const": "node-mediated-human"
}
},
"required": [
"origin_class"
]
}
Then:
{
"properties": {
"human_origin": {
"const": true
},
"operator_presence_mode": {
"const": "mediated"
}
}
}
Rule 3¶
When:
{
"properties": {
"origin_class": {
"const": "human-live"
}
},
"required": [
"origin_class"
]
}
Then:
{
"properties": {
"human_origin": {
"const": true
},
"operator_presence_mode": {
"const": "direct-live"
}
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
Schema version.
segment_id¶
- Required:
yes - Shape: string
question_id¶
- Required:
yes - Shape: string
channel_id¶
- Required:
yes - Shape: string
message_id¶
- Required:
yes - Shape: string
speaker_ref¶
- Required:
yes - Shape: string
Semantic speaker at the room boundary.
gateway_node_ref¶
- Required:
yes - Shape: string
Node that injected the message into the room or relay path.
origin_class¶
- Required:
yes - Shape: enum:
node-generated,node-mediated-human,human-live
operator_presence_mode¶
- Required:
yes - Shape: enum:
none,mediated,direct-live
human_origin¶
- Required:
yes - Shape: boolean
ts¶
- Required:
yes - Shape: string
ISO-8601 UTC timestamp.
content¶
- Required:
yes - Shape: unspecified
Either plain text or a structured content object. Structured objects should expose a stable textual projection.
visibility_scope¶
- Required:
yes - Shape: enum:
private-to-swarm,federation-local,cross-federation,global
consent_basis¶
- Required:
yes - Shape: enum:
not-required,operator-consultation,explicit-consent,federation-policy,public-scope,emergency-exception
provenance_refs¶
- Required:
yes - Shape: array
redaction_markers¶
- Required:
no - Shape: array
Describes removals or transformations rather than silently rewriting content history.
content_hash¶
- Required:
no - Shape: string
language¶
- Required:
no - Shape: string
reply_to¶
- Required:
no - Shape: string
attachments¶
- Required:
no - Shape: array
policy_annotations¶
- Required:
no - Shape: object