OpenPay (1 crate, 2487 LOC, 33 tests)
op-fraud-graph Graph-based fraud detection. EntityKind (card/email/
device/IP/address/phone/BIN+last4/account) with
canonicalization + hashed EntityKey + billing↔shipping
mismatch detection. Adjacency-list FraudGraph with
idempotent upsert + edge-merge. Double-hashing Bloom
filter (capacity+FPR-sized). Union-find connected
components. PageRank with dangling-sink handling.
Louvain community detection. Shared-instrument hub
rings. Sliding ring-buffer velocity counters. Synthetic
identity heuristics (freshness + heavy-use + mail-drop).
Structuring / smurfing / mule-chain DFS. EntityRisk +
TransactionRisk + RiskBand combiner.
Smart Byte (1 crate, ~1844 LOC, 44 tests)
smart-byte-ilp Interledger Protocol v4. OER codec (length-determinant,
var-octet-string, BE u32/u64). Prepare/Fulfill/Reject
packet roundtrip with all 19 IL-RFC-27 reject codes.
SHA-256 Condition + Fulfillment with constant-time
verify. ILP address validator (7 schemes, 1-128 char
segments, 1023-byte cap, segment-aligned prefix match).
STREAM (15 frame types). BTP. SPSP payment-pointer
resolver. Open Payments API. Longest-prefix routing
Connector with fixed-point quote conversion + balance +
rate-limit checks.
EOC (1 crate, 1921 LOC, 36 tests)
eoc-quantize Quantization primitives. int8 (symmetric/asymmetric
with zero-inclusion fix), int4 (GPTQ + AWQ group quant),
int2 (BitNet), fp8 (E4M3/E5M2), nf4 (QLoRA). GGUF v3
header parse. safetensors read sketch. Calibration
datasets + per-channel scales. KV-cache quant. Energy
tradeoff curves (joules-per-token across schemes).
Co-Authored-By: Claude Opus 4.7 <[email protected]>
42 lines
1.2 KiB
Rust
42 lines
1.2 KiB
Rust
//! Error type shared across the quantization crate.
|
|
|
|
use thiserror::Error;
|
|
|
|
/// Errors returned by quantization primitives and format readers.
|
|
#[derive(Debug, Error)]
|
|
pub enum QuantError {
|
|
/// Input slice was empty when a value was required.
|
|
#[error("input slice was empty")]
|
|
EmptyInput,
|
|
|
|
/// Input length is not divisible by the requested group size.
|
|
#[error("input length {len} is not divisible by group size {group}")]
|
|
BadGroupSize {
|
|
/// Length of the input slice.
|
|
len: usize,
|
|
/// Group size requested.
|
|
group: usize,
|
|
},
|
|
|
|
/// Slice was shorter than required for parsing.
|
|
#[error("buffer too short: needed {needed} bytes, got {got}")]
|
|
Truncated {
|
|
/// Required byte count.
|
|
needed: usize,
|
|
/// Actual byte count.
|
|
got: usize,
|
|
},
|
|
|
|
/// Magic / version mismatch when reading a file format.
|
|
#[error("invalid format: {0}")]
|
|
InvalidFormat(&'static str),
|
|
|
|
/// Value out of representable range for the target dtype.
|
|
#[error("value {value} out of range for {dtype}")]
|
|
OutOfRange {
|
|
/// Offending value.
|
|
value: f64,
|
|
/// Target dtype name.
|
|
dtype: &'static str,
|
|
},
|
|
}
|