Whisper Signal v1¶
Source schema: doc/schemas/whisper-signal.v1.schema.json
Machine-readable schema for bounded rumor-style social-signal exchange.
Governing Basis¶
doc/project/20-memos/orbiplex-whisper.mddoc/project/20-memos/orbiplex-anon.mddoc/project/30-stories/story-005.mddoc/project/40-proposals/013-whisper-social-signal-exchange.mddoc/project/40-proposals/015-nym-certificates-and-renewal-baseline.md
Project Lineage¶
Requirements¶
Stories¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
Schema version. |
signal/id |
yes |
string | Stable identifier of the published rumor-style signal. |
created-at |
yes |
string | Publication timestamp of the outgoing signal. |
sender/node-id |
yes |
string | Infrastructure node that emitted or hosted the outgoing signal. This remains the routing and transport-facing identity even when authored participation is expressed through a pseudonymous nym. |
sender/federation-id |
no |
string | Federation scope of the sender when relevant to routing or threshold policy. |
rumor/nym |
yes |
string | Pseudonymous author identity of the outgoing signal. This remains application-layer identity material and MUST NOT leak into the transport handshake. |
auth/nym-certificate |
yes |
ref: nym-certificate.v1.schema.json |
Attached council-issued certificate proving bounded validity of the outgoing rumor nym. Its nym/id should match rumor/nym. |
auth/nym-signature |
yes |
ref: #/$defs/signature |
Signature over the outgoing whisper-signal body made with the private key corresponding to rumor/nym. |
epistemic/class |
yes |
enum: rumor, weak-signal |
Explicit epistemic class that prevents the artifact from being treated as evidence. |
signal/text |
yes |
string | Sanitized text accepted by the local user before publication. |
topic/class |
yes |
string | Normalized issue class used for bounded correlation. |
context/facets |
yes |
array | Normalized, low-resolution facets that help correlation without forcing raw disclosure. |
confidence |
yes |
number | Local confidence in the quality and relevance of the prepared signal. |
disclosure/scope |
yes |
enum: private-correlation, federation-scoped, cross-federation, public-aggregate-only |
Maximum disclosure posture allowed for this signal. |
source/class |
no |
enum: direct-user, pod-user, operator-observed, derived-local, monus-derived, monus-sensorium-derived |
High-level origin class of the signal. monus-derived is used when a local Monus-like wellbeing module prepared the draft before Whisper publication. monus-sensorium-derived is used when Monus relied materially on Sensorium-originated local signals. |
source/signal-kinds |
no |
array | Optional high-level local signal classes that materially informed a derived or sensorium-assisted rumor draft. |
risk/grade |
yes |
enum: low, moderate, high, critical |
Risk grade used to constrain later routing and disclosure. |
routing/profile |
yes |
enum: direct, relayed, onion-relayed |
Requested outbound transport posture. |
routing/failure-mode |
yes |
enum: soft-fail, hard-fail |
Whether the sender allows downgrade if the requested transport posture cannot be satisfied. |
relay/acceptable-classes |
no |
array | Optional relay classes acceptable for outbound privacy realization. |
forwarding/max-hops |
yes |
integer | Maximum number of relay hops allowed for the signal. |
forwarding/budget |
no |
integer | Maximum number of bounded forwards allowed under local policy. |
policy_annotations |
no |
object | Optional implementation- or federation-local annotations that do not change the core semantics. |
Definitions¶
| Definition | Shape | Description |
|---|---|---|
signature |
object |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"routing/profile": {
"const": "direct"
}
},
"required": [
"routing/profile"
]
}
Then:
{
"properties": {
"forwarding/max-hops": {
"const": 0
}
}
}
Rule 2¶
When:
{
"properties": {
"routing/failure-mode": {
"const": "hard-fail"
}
},
"required": [
"routing/failure-mode"
]
}
Then:
{
"properties": {
"routing/profile": {
"enum": [
"relayed",
"onion-relayed"
]
}
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
Schema version.
signal/id¶
- Required:
yes - Shape: string
Stable identifier of the published rumor-style signal.
created-at¶
- Required:
yes - Shape: string
Publication timestamp of the outgoing signal.
sender/node-id¶
- Required:
yes - Shape: string
Infrastructure node that emitted or hosted the outgoing signal. This remains the routing and transport-facing identity even when authored participation is expressed through a pseudonymous nym.
sender/federation-id¶
- Required:
no - Shape: string
Federation scope of the sender when relevant to routing or threshold policy.
rumor/nym¶
- Required:
yes - Shape: string
Pseudonymous author identity of the outgoing signal. This remains application-layer identity material and MUST NOT leak into the transport handshake.
auth/nym-certificate¶
- Required:
yes - Shape: ref:
nym-certificate.v1.schema.json
Attached council-issued certificate proving bounded validity of the outgoing rumor nym. Its nym/id should match rumor/nym.
auth/nym-signature¶
- Required:
yes - Shape: ref:
#/$defs/signature
Signature over the outgoing whisper-signal body made with the private key corresponding to rumor/nym.
epistemic/class¶
- Required:
yes - Shape: enum:
rumor,weak-signal
Explicit epistemic class that prevents the artifact from being treated as evidence.
signal/text¶
- Required:
yes - Shape: string
Sanitized text accepted by the local user before publication.
topic/class¶
- Required:
yes - Shape: string
Normalized issue class used for bounded correlation.
context/facets¶
- Required:
yes - Shape: array
Normalized, low-resolution facets that help correlation without forcing raw disclosure.
confidence¶
- Required:
yes - Shape: number
Local confidence in the quality and relevance of the prepared signal.
disclosure/scope¶
- Required:
yes - Shape: enum:
private-correlation,federation-scoped,cross-federation,public-aggregate-only
Maximum disclosure posture allowed for this signal.
source/class¶
- Required:
no - Shape: enum:
direct-user,pod-user,operator-observed,derived-local,monus-derived,monus-sensorium-derived
High-level origin class of the signal. monus-derived is used when a local Monus-like wellbeing module prepared the draft before Whisper publication. monus-sensorium-derived is used when Monus relied materially on Sensorium-originated local signals.
source/signal-kinds¶
- Required:
no - Shape: array
Optional high-level local signal classes that materially informed a derived or sensorium-assisted rumor draft.
risk/grade¶
- Required:
yes - Shape: enum:
low,moderate,high,critical
Risk grade used to constrain later routing and disclosure.
routing/profile¶
- Required:
yes - Shape: enum:
direct,relayed,onion-relayed
Requested outbound transport posture.
routing/failure-mode¶
- Required:
yes - Shape: enum:
soft-fail,hard-fail
Whether the sender allows downgrade if the requested transport posture cannot be satisfied.
relay/acceptable-classes¶
- Required:
no - Shape: array
Optional relay classes acceptable for outbound privacy realization.
forwarding/max-hops¶
- Required:
yes - Shape: integer
Maximum number of relay hops allowed for the signal.
forwarding/budget¶
- Required:
no - Shape: integer
Maximum number of bounded forwards allowed under local policy.
policy_annotations¶
- Required:
no - Shape: object
Optional implementation- or federation-local annotations that do not change the core semantics.
Definition Semantics¶
$defs.signature¶
- Shape: object