//! Transport-agnostic envelope + error types shared across the request
//! pipeline and the messaging subsystem.
//!
//! These live in `core` (not the `messaging` crate) because `pipeline`
//! continues a producer's trace from an [`InboundMessage`] and the audit
//! pipeline reports a boxed [`BoxError`] — both core concerns that must not
//! pull in the optional `arcly-http-messaging` crate. The messaging crate
//! re-exports them, so `arcly_http::messaging::InboundMessage` keeps resolving.
/// One inbound message, transport-agnostic.
/// Boxed error for infrastructure trait contracts (transports, sinks,
/// publishers). `String` and `&str` convert via `.into()`, so simple
/// implementations stay simple while real ones keep their source chain.
pub type BoxError = ;