Skip to main content

quant_governor/
lib.rs

1//! # quant-governor
2//!
3//! Governance policy routing for governed compression.
4//!
5//! This crate provides policy-driven routing for codec selection based on
6//! content type, size, and accuracy requirements.
7//!
8//! ## Core Concepts
9//!
10//! - **GovernancePolicy**: Declares codec profiles and admissibility classes
11//! - **CodecDecision**: Output of policy evaluation with selected codec and metadata
12//! - **ExactFallbackReceipt**: Tracks fallback from compressed back to raw
13//! - **DegradationReceipt**: Tracks quality degradation from higher to lower fidelity
14//!
15//! ## Codec Profiles
16//!
17//! | Profile | Description | Use Case |
18//! |---------|-------------|----------|
19//! | `raw`   | Uncompressed | Critical accuracy |
20//! | `q8`    | 8-bit quantization | Balanced |
21//! | `q4`    | 4-bit quantization | Storage constrained |
22//! | `turbo` | Turbo-quant accelerated | Low latency |
23//! | `fib`   | Fibonacci-weighted | Precision sensitive |
24//!
25//! ## Usage
26//!
27//! ```rust
28//! use quant_governor::{GovernancePolicy, CodecDecision, GovernanceRequest, evaluate};
29//!
30//! let policy = GovernancePolicy::default();
31//! let request = GovernanceRequest::default();
32//! let decision = evaluate(request, &policy);
33//! ```
34
35#![forbid(unsafe_code)]
36#![deny(missing_docs)]
37#![deny(rustdoc::broken_intra_doc_links)]
38
39pub mod decision;
40pub mod degradation;
41pub mod error;
42pub mod policy;
43pub mod receipt;
44
45pub use decision::{CodecDecision, CodecProfile};
46pub use degradation::DegradationReceipt;
47pub use error::GovernorError;
48pub use policy::{AdmissibilityClass, ContentType, GovernancePolicy, GovernanceRequest};
49pub use receipt::ExactFallbackReceipt;
50
51/// Policy-driven codec evaluation.
52///
53/// Given a governance request and policy, produces a codec decision
54/// with selected profile and metadata.
55pub fn evaluate(
56    request: GovernanceRequest,
57    policy: &GovernancePolicy,
58) -> Result<CodecDecision, GovernorError> {
59    policy.evaluate(request)
60}
61
62#[cfg(test)]
63mod tests {
64    use super::*;
65
66    #[test]
67    fn default_policy_selects_raw_for_critical() {
68        let policy = GovernancePolicy::default();
69        let request = GovernanceRequest::default();
70
71        let result = evaluate(request.clone(), &policy);
72        assert!(result.is_ok());
73
74        let decision = result.unwrap();
75        assert_eq!(decision.codec, CodecProfile::Raw);
76    }
77
78    #[test]
79    fn small_text_bypasses_compression() {
80        let policy = GovernancePolicy::default();
81        let request = GovernanceRequest {
82            content_type: ContentType::Text,
83            size_bytes: 100,
84            ..Default::default()
85        };
86
87        let result = evaluate(request, &policy);
88        assert!(result.is_ok());
89        // Small text may bypass or use raw
90    }
91}