Whisper Trace v1¶
Source schema: doc/schemas/whisper-trace.v1.schema.json
Content-body contract for a bounded Whisper provenance statement about creating, dispatching, receiving, or holding an artifact. A trace is a signed assertion by the enclosing envelope author, not by itself proof of delivery, possession, or truth. The default disclosure is digest-only; inline bytes require an explicit consent reference and remain subject to stricter host policy and byte limits.
Governing Basis¶
doc/project/40-proposals/013-whisper-social-signal-exchange.mddoc/project/40-proposals/035-agora-topic-addressed-record-relay.mddoc/project/40-proposals/042-inter-node-artifact-channel.mddoc/project/40-proposals/081-horizontal-protocol-primitives.mddoc/project/60-solutions/011-whisper/011-whisper.md
Project Lineage¶
Requirements¶
doc/project/50-requirements/requirements-006-node-networking-mvp.mddoc/project/50-requirements/requirements-010-middleware-executor.mddoc/project/50-requirements/requirements-011-dator-arca-contracts.mddoc/project/50-requirements/requirements-014-resource-opinions.md
Stories¶
doc/project/30-stories/story-001-swarm-node-onboarding.mddoc/project/30-stories/story-004-pod-client-onboarding.mddoc/project/30-stories/story-005-whisper-rumor-intake.mddoc/project/30-stories/story-006-buyer-node-components.mddoc/project/30-stories/story-006-voluntary-swarm-exchange.mddoc/project/30-stories/story-007-settlement-capable-node.mddoc/project/30-stories/story-008-cool-site-comment.md
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: whisper-trace.v1 |
|
trace/kind |
yes |
enum: artifact-created, artifact-dispatched, artifact-received, artifact-held |
The author's bounded assertion. artifact-dispatched means handed to an outbound transport, not delivered to the recipient. artifact-received and artifact-held remain claims unless strengthened by an independently verifiable evidence reference. |
trace/occurred-at |
yes |
string | Author-asserted event time. The enclosing signed record timestamp remains the publication time. |
artifact |
yes |
ref: #/$defs/artifact |
|
disclosure/mode |
yes |
enum: digest-only, digest-and-content |
Disclosure shape. digest-only minimizes transferred data but is not anonymous: a digest of predictable content may remain guessable and linkable. digest-and-content requires exact sender-host consent resolution and transient integrity validation. |
disclosure/scope |
yes |
enum: private-correlation, federation-scoped, cross-federation, public |
Maximum disclosure surface for this trace. Public Agora deployments reject private-correlation; direct-only traces travel through AD/INAC. |
consent/ref |
no |
ref: #/$defs/ref |
Opaque reference to the sender-side authorization or consent fact that permitted disclosure of inline content. Presence is not proof of valid consent; before publication the authoring host must resolve an active decision bound to the exact artifact digest, disclosure scope, represented subject or authority, and validity window. |
causal/context |
no |
ref: causal-context.v1.schema.json |
Optional canonical causal context for the operation that produced this trace. Transport request ids and local sequence numbers do not belong here. |
operation/ref |
no |
ref: #/$defs/ref |
|
delivery/ref |
no |
ref: #/$defs/ref |
|
evidence/refs |
no |
array | Optional refs to receipts, attestations, or other independently verifiable facts. Their presence may strengthen the assertion but does not change this artifact into a receipt. |
context/facets |
no |
array | |
routing/profile |
yes |
enum: direct, relayed, onion-relayed |
|
routing/failure-mode |
yes |
enum: soft-fail, hard-fail |
|
forwarding/max-hops |
yes |
integer | |
extensions |
no |
object | Explicit extension namespace. Extensions may add advisory metadata but must not redefine trace kind, artifact identity, consent, disclosure, or routing semantics. |
Definitions¶
| Definition | Shape | Description |
|---|---|---|
artifact |
object | |
ref |
string |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"disclosure/mode": {
"const": "digest-and-content"
}
},
"required": [
"disclosure/mode"
]
}
Then:
{
"required": [
"consent/ref"
],
"properties": {
"artifact": {
"required": [
"bytes/base64"
],
"properties": {
"size/bytes": {
"maximum": 32768
}
}
}
}
}
Rule 2¶
When:
{
"properties": {
"routing/profile": {
"const": "onion-relayed"
}
},
"required": [
"routing/profile"
]
}
Then:
{
"properties": {
"forwarding/max-hops": {
"minimum": 1
}
}
}
Rule 3¶
When:
{
"properties": {
"routing/profile": {
"const": "direct"
}
},
"required": [
"routing/profile"
]
}
Then:
{
"properties": {
"forwarding/max-hops": {
"const": 0
}
}
}
Rule 4¶
When:
{
"properties": {
"routing/failure-mode": {
"const": "hard-fail"
}
},
"required": [
"routing/failure-mode"
]
}
Then:
{
"properties": {
"routing/profile": {
"enum": [
"relayed",
"onion-relayed"
]
}
}
}
Field Semantics¶
schema¶
- Required:
yes - Shape: const:
whisper-trace.v1
trace/kind¶
- Required:
yes - Shape: enum:
artifact-created,artifact-dispatched,artifact-received,artifact-held
The author's bounded assertion. artifact-dispatched means handed to an outbound transport, not delivered to the recipient. artifact-received and artifact-held remain claims unless strengthened by an independently verifiable evidence reference.
trace/occurred-at¶
- Required:
yes - Shape: string
Author-asserted event time. The enclosing signed record timestamp remains the publication time.
artifact¶
- Required:
yes - Shape: ref:
#/$defs/artifact
disclosure/mode¶
- Required:
yes - Shape: enum:
digest-only,digest-and-content
Disclosure shape. digest-only minimizes transferred data but is not anonymous: a digest of predictable content may remain guessable and linkable. digest-and-content requires exact sender-host consent resolution and transient integrity validation.
disclosure/scope¶
- Required:
yes - Shape: enum:
private-correlation,federation-scoped,cross-federation,public
Maximum disclosure surface for this trace. Public Agora deployments reject private-correlation; direct-only traces travel through AD/INAC.
consent/ref¶
- Required:
no - Shape: ref:
#/$defs/ref
Opaque reference to the sender-side authorization or consent fact that permitted disclosure of inline content. Presence is not proof of valid consent; before publication the authoring host must resolve an active decision bound to the exact artifact digest, disclosure scope, represented subject or authority, and validity window.
causal/context¶
- Required:
no - Shape: ref:
causal-context.v1.schema.json
Optional canonical causal context for the operation that produced this trace. Transport request ids and local sequence numbers do not belong here.
operation/ref¶
- Required:
no - Shape: ref:
#/$defs/ref
delivery/ref¶
- Required:
no - Shape: ref:
#/$defs/ref
evidence/refs¶
- Required:
no - Shape: array
Optional refs to receipts, attestations, or other independently verifiable facts. Their presence may strengthen the assertion but does not change this artifact into a receipt.
context/facets¶
- Required:
no - Shape: array
routing/profile¶
- Required:
yes - Shape: enum:
direct,relayed,onion-relayed
routing/failure-mode¶
- Required:
yes - Shape: enum:
soft-fail,hard-fail
forwarding/max-hops¶
- Required:
yes - Shape: integer
extensions¶
- Required:
no - Shape: object
Explicit extension namespace. Extensions may add advisory metadata but must not redefine trace kind, artifact identity, consent, disclosure, or routing semantics.
Definition Semantics¶
$defs.artifact¶
- Shape: object
$defs.ref¶
- Shape: string