1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Core data model for osproxy.
//!
//! This crate is the shared vocabulary every other crate speaks. It has **no
//! I/O dependencies** (no async runtime, no sockets, no wire serialization) so
//! the surface an SPI implementer compiles against stays tiny and fast, see
//! `docs/01-architecture.md` §2.
//!
//! It contains three things:
//!
//! - [`ids`], strongly-typed identifier newtypes (no bare `String`/`u64`
//! identifiers cross API boundaries, `docs/08` §7).
//! - [`endpoint`], the [`endpoint::EndpointKind`] classification of OpenSearch
//! requests (`docs/02` §5).
//! - [`error`], the request-path [`error::ErrorContext`] taxonomy that makes
//! every failure typed, contextual, and LLM-diagnosable (`docs/02` §4).
//! - [`time`], the [`time::Clock`] seam that keeps time deterministic and
//! testable (`docs/12`).
//! - [`target`], the [`target::Target`] a routing decision resolves to
//! (`docs/02`).
//! - [`trace`], the [`trace::TraceContext`] W3C propagation primitive that
//! carries distributed-trace identity to downstream calls (`docs/05` §2).
//! - [`json`], a dependency-free byte-level JSON scanner that reads partition
//! keys and id components straight from a body without materializing a tree
//! (ADR-014), shared by the SPI extraction utilities and the transform layer.
//!
//! The module tree is intentionally flat and small; each concept lives in its
//! own file (`docs/08` §2).
pub use CursorSigner;
pub use EndpointKind;
pub use ;
pub use ;
pub use JsonError;
pub use Target;
pub use ;
pub use TraceContext;