VIRGO

Channel adapters

Source
docs/design/CHANNEL-ADAPTERS.md
Pinned at
d62e85485903a5537ee2b73c14201597e29bdaa5
sha256
50de97c84b911c0389a50ba81acec5ec3214f21f80fbd0ad0cdff8938360b2d7

This page is the specification itself, rendered from the pinned source above. Its text is reproduced exactly; only its presentation is added.

Hub channel adapters

Status: implementation contract decided by Henry on 2026-08-04

Personas use the transport-neutral human_* capability surface. The hub owns channel credentials and implements that surface through adapters; Teams is adapter number one, not a special persona runtime dependency.

Every adapter declares support for send, reply, ack, reaction, card, file, typing, and status. send, reply, ack, and status are the required delivery baseline. Missing optional behavior is never silently dropped:

Missing capabilityResult
reaction or fileloud refusal
cardloud refusal unless the caller supplied an explicit text fallback
typingreported no-op degradation

A persona/lane binding records the exact persona_address, channel_type, adapter_id, and the adapter lane. Switching Teams to Telegram, Slack, or email replaces that binding; the persona stamp's tool names and runtime do not change. Binding and adapter channel types must match before any operation is admitted. The hub also compares that address to the calling persona's stamped path identity on every operation; a syntactically valid binding for another scope or project is still refused.