Signal Contract · Protocol
Listen to your agents. The fleet you cannot watch is the one you can hear.
One portable event carries machine state. A shared clock gives it time. Governed renderers make it perceptible.
Canonical schema JSONDirect answer
What is the Signal Contract?
Signal Contract is the flat, renderer-facing event object that separates what happened from how a human perceives it. One valid event can become sound, motion, a trace row, a structured log, or a future device cue without changing its meaning.
Architecture
One event. One shared clock. Many renderers.
- 01 · ProducerA domain adapter emits one renderer-facing event.
- 02 · ContractSignal Contract carries semantic state without choosing a renderer.
- 03 · ClockOne shared run keeps sound, motion, traces, and receipts aligned.
- 04 · RendererEach surface expresses the same truth without changing the event.
Canonical example
The event stays small and inspectable.
Producers may add public-safe context in metadata. The required core remains portable.
{
"schema_version": "1.0",
"id": "sig_demo_005",
"occurred_at": "2026-04-19T18:32:18.442Z",
"producer": "vibenet-demo",
"entity": "agent.serpradio.route_intelligence",
"event": "handoff.requested",
"channel": "handoff",
"valence": 0.42,
"energy": 0.66,
"tension": 0.73,
"intensity": 0.72,
"hue": 44,
"pulse": 0.78,
"confidence": 0.94,
"ttl_ms": 15000,
"metadata": {
"reason": "source_confidence_below_threshold",
"route": "JFK-LHR"
}
}Field specification
Canonical v1 fields
| Field | Type | Requirement | Meaning | Example |
|---|---|---|---|---|
schema_version | string | required | Published version of the flat public event object. | 1.0 |
id | string | required | Stable event identifier for dedupe, replay, and audit references. | sig_demo_005 |
occurred_at | RFC 3339 timestamp | required | When the awareness event occurred, not when the renderer received it. | 2026-04-19T18:32:18.442Z |
producer | string | required | System or adapter that emitted the event. | vibenet-demo |
entity | string | required | Stable subject identifier for the thing whose state changed. | agent.serpradio.route_intelligence |
event | string | required | Meaningful awareness event name. Snake case is recommended. | handoff.requested |
channel | enum | required | Public semantic channel for how the state should be interpreted. | handoff |
valence | number 0-1 | required | Normalized affective polarity for the current state. | 0.42 |
energy | number 0-1 | required | Normalized activity level of the state change. | 0.66 |
tension | number 0-1 | required | Normalized instability or unresolved uncertainty. | 0.73 |
intensity | number 0-1 | required | Renderer-facing emphasis. Higher values should feel harder to ignore. | 0.72 |
hue | number 0-360 | required | Flat renderer-facing hue hint for browser, lighting, or AR renderers. | 44 |
pulse | number 0-1 | required | Flat renderer-facing pulse hint for motion, cadence, or temporal emphasis. | 0.78 |
confidence | number 0-1 | optional | Optional producer confidence in the emitted awareness event. | 0.94 |
ttl_ms | integer | optional | How long a renderer should keep expressing the event before it expires. | 15000 |
metadata | object | optional | Context payload for links, IDs, route names, renderer-safe details, and optional publishable/indexable convention fields. | {"publishable":false,"indexable":true,"fallback_reason":"primary_source_stale"} |
Semantic channels
Public posture, not private taxonomy.
nominalExpected operating state. Nothing requires attention. Use when the system is steady and no intervention is needed.
advisoryWork is happening. Attention is optional. Use for planning, tool calls, synthesis, and healthy in-flight state shifts.
warningSomething deserves a second look. Use when confidence drops, retries stack up, or trust changes materially.
criticalIntervention required. Use when a human or policy boundary must intervene immediately.
recoveryThe system is resolving back toward nominal. Use when an earlier warning has been contained or when the run lands cleanly.
opportunityAn actionable window has appeared. Use when the system detects a state worth acting on soon but not urgently.
handoffAttention is passing between agents, humans, or devices. Use when responsibility moves and the receiver needs situational context.
Implementation notes