reliar-outbox 0.9.0

Storage-agnostic transactional outbox: OutboxStore/Publisher contracts, retry policy, settings and dispatcher (no storage or transport dependency).
Documentation
//! [`ClaimToken`]: the per-row fencing value of one [`crate::OutboxStore::acquire`] claim (ADR
//! 0046, Amendment A).

reliar_core::uuid_id!(
    /// The token of one claim of one row: [`crate::OutboxStore::acquire`] stamps a fresh one on
    /// every row it claims, and every outcome write for that row must quote it back
    /// (ADR 0046 Amendment A).
    ///
    /// **Assigned by the database**, so it is never minted here — there is no `new()` and no
    /// `Default`. Opaque: two tokens are only ever compared for equality, never for order, and
    /// two rows of one `acquire` call carry **different** tokens (Amendment A.1) — UUIDv7 is used
    /// only so a log line sorts readably, never as a correctness signal.
    ///
    /// ```
    /// use reliar_outbox::ClaimToken;
    /// use reliar_core::uuid::Uuid;
    ///
    /// let raw = Uuid::now_v7();
    /// let token = ClaimToken::from_uuid(raw);
    /// assert_eq!(token.as_uuid(), raw);
    /// ```
    ///
    /// `no_mint` means there is no `new()` — pins the database-assigned invariant:
    ///
    /// ```compile_fail
    /// use reliar_outbox::ClaimToken;
    ///
    /// let _ = ClaimToken::new();
    /// ```
    ///
    /// … and no `Default`, for the same reason:
    ///
    /// ```compile_fail
    /// use reliar_outbox::ClaimToken;
    ///
    /// let _ = ClaimToken::default();
    /// ```
    ClaimToken in reliar_outbox,
    no_mint
);