frame-conv 0.2.0

Conversation patterns — request-response, subscription, pub/sub, and workflow over liminal
Documentation
//! Declared bus-attachment configuration. Every field is mandatory and
//! caller-supplied — no `Default` implementation exists, so no policy value
//! is ever assumed (the F-1a R4 discipline; the substrate's own
//! no-hidden-default stance for pool sizing).

use std::time::Duration;

/// Caller-declared configuration for attaching to the conversation bus.
///
/// The endpoint is an opaque bus locator; nothing in this type names a
/// transport (F-3a constraint 1 — the embedded transport arrives later
/// behind the same handle). The remaining values drive the substrate seam
/// verbatim and are documented against what actually governs at published
/// liminal 0.3.0.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct BusAttachment {
    /// Opaque bus endpoint locator (e.g. `"127.0.0.1:9410"`), passed to the
    /// substrate verbatim.
    pub endpoint: String,
    /// Maximum concurrent transport sessions the substrate seam may hold
    /// for this handle (the seam's pool sizing).
    pub session_capacity: usize,
    /// Per-operation transport window in milliseconds, passed to the seam's
    /// pool configuration. NOTE: at published liminal 0.3.0 the participant
    /// receive path rides a hardcoded 5-second IO quantum that this value
    /// does NOT govern (upstream ASK-2, F-0c-FINDINGS assertion 8); the
    /// value is declared here so the seam carries the caller's intent the
    /// day the upstream quantum becomes settable.
    pub operation_window_millis: u64,
    /// Inbound frame buffer entries for the seam's pool configuration.
    pub inbound_buffer: usize,
    /// This crate's own loud bound on waiting for an operation's correlated
    /// terminal answer (enrollment, admission, ack, re-attach). An
    /// unanswered admission would otherwise strand the single write-ahead
    /// slot until a transport fate (finding G2) — frame-conv never spins
    /// unbounded on a slot; it surfaces a typed answer-timeout instead.
    pub answer_window: Duration,
}