open-standards/eoc/eoc-rs/crates/eoc-distributed/src/error.rs
Transaction Science 6ea90afbed ingest wave A4: 3 crates · smart-byte-atproto + op-openbanking + eoc-distributed
Smart Byte (1 crate, 2127 LOC, 35 tests)
  smart-byte-atproto    ATProto (Bluesky federation) adapter.
                        PLC + did:web resolution; XRPC client; CARv1 encode/decode
                        with CIDv1 (dag-cbor + raw, SHA-256); sketch MST with
                        order-independent BLAKE3 root; Repo + UnsignedCommit /
                        SignedCommit (Ed25519 over CBOR); firehose transport
                        trait + in-memory impl; AT URI ↔ smart-byte AID bridge
                        with SAID commitment.

OpenPay (1 crate, 2397 LOC, 44 tests)
  op-openbanking        UK OBIE R/W v3.1.10/3.1.11, Berlin Group NextGenPSD2
                        XS2A v1.3.13, STET PSD2 v1.7, Australia CDR Banking v1.31,
                        FDX v5/v6, SGFinDex shapes. AISP / PISP / PIIS / VRP
                        traits. FAPI 1.0 Advanced (PS256/ES256, mTLS, RFC 8705
                        certificate binding, JWK registration). Operators wire
                        their own JWS signer + HTTP transport — keeps the crate
                        KMS-agnostic.

EOC (1 crate, 2179 LOC, 32 tests)
  eoc-distributed       Distributed-inference scheduling. Worker trait with
                        Capability + Accelerator (CPU/GPU/TPU/NPU/Mixed) +
                        Load.busyness()/projected_micro_joules()/projected_g_co2e().
                        RoundRobin / LeastBusy / LatencyWeighted / JouleWeighted
                        (default) / CarbonWeighted routers. Work-stealing
                        scheduler. vLLM-style continuous batching with KV-block
                        budget. Ray-Serve-style auto-scaler with cooldown.
                        KV-cache-aware sticky-session routing.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-24 12:22:09 -04:00

47 lines
1.4 KiB
Rust

//! Typed errors for `eoc-distributed`.
use thiserror::Error;
/// Result alias used throughout this crate.
pub type Result<T> = std::result::Result<T, DistributedError>;
/// All failures surfaced by distributed scheduling, routing, and cluster
/// coordination.
#[derive(Debug, Error)]
pub enum DistributedError {
/// The cluster has no live workers that can satisfy the request.
#[error("no workers available")]
NoWorkers,
/// The requested worker id is not in the cluster.
#[error("unknown worker: {0}")]
UnknownWorker(String),
/// The requested capability is not advertised by any live worker.
#[error("no worker satisfies capability: {0}")]
UnsatisfiedCapability(String),
/// The scheduler queue is full and cannot accept new work.
#[error("queue full (cap={0})")]
QueueFull(usize),
/// Heartbeat budget exceeded — the worker is presumed dead.
#[error("heartbeat timeout for worker {0}")]
HeartbeatTimeout(String),
/// Replica controller refused a scale operation (cap hit / cooldown).
#[error("scale rejected: {0}")]
ScaleRejected(String),
/// Batch scheduler refused to admit a request.
#[error("batch admission rejected: {0}")]
BatchRejected(String),
/// Topology builder rejected the configuration.
#[error("invalid topology: {0}")]
InvalidTopology(String),
/// Catch-all.
#[error("{0}")]
Other(String),
}