Wire types for the mail4agent mailbox: addresses, messages, requests and named refusals.
This crate is the wire contract only -- serde and nothing else. It knows
about participants, addresses and messages; it knows nothing about tasks,
schedulers, runs, grants, workspaces, nodes, or any particular system that
happens to run agents (see mail4agent/CLAUDE.md).
Ported from gate4agent-harness-protocol's mail surface
(docs/gate4agent/research/mailbox-code-inventory-2026-09-16.md section
1.1): the discipline is kept -- bounded, validated on both encode and
decode, versioned by convention, legacy-tolerant on read -- while every
name that leaked a harness/task-kernel concept (HarnessRecordRef,
HarnessMailAddressV1::Session/Task, task_id) is replaced by a
general shape a standalone mailbox can own outright.
The rule that defines this service: a sender is never a field the
caller fills in. See [SendRequest].