arcly-http-core 0.6.1

Foundation crate for arcly-http: zero-lock DI engine, HTTP boundary, unified request pipeline, auth, resilience, observability, and OpenAPI. Use the `arcly-http` facade instead of depending on this directly.
Documentation
//! 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.
#[derive(Clone, Debug)]
pub struct InboundMessage {
    pub topic: String,
    pub payload: serde_json::Value,
    /// Consumers dedupe on this under at-least-once delivery.
    pub idempotency_key: String,
    pub tenant: Option<String>,
    /// W3C trace context stamped by the producer (outbox), if any.
    pub traceparent: Option<String>,
}

/// 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 = Box<dyn std::error::Error + Send + Sync>;