WeaveDocs
Weave Compliance

Ethics

AI ethics checks in Weave Compliance: decision review, harm classification, and operational guardrails.

Purpose

Audit trails, regulatory reports, ethics checks, governance, evidence IDs, and compliance documentation.

This page follows the real source shape for Weave Compliance and explains the workflow a developer is likely to use first.

Developer workflow

Start from the smallest constructor or builder, perform one meaningful operation, inspect the returned state, then add the relevant policy, storage, or network integration. The examples below should be expanded whenever the crate API changes.

Primary types to know

  • AIDecision — libs/weave-compliance/src/ethics.rs
  • AIOperation — libs/weave-compliance/src/compliance.rs
  • ApiDocumentation — libs/weave-compliance/src/docs.rs
  • AuditEvent — libs/weave-compliance/src/audit.rs
  • AuditEventId — libs/weave-compliance/src/audit.rs
  • AuditReport — libs/weave-compliance/src/audit.rs
  • AuditReportCriteria — libs/weave-compliance/src/audit.rs
  • BiasAnalysis — libs/weave-compliance/src/ethics.rs
  • DataAsset — libs/weave-compliance/src/governance.rs
  • DataGovernanceResult — libs/weave-compliance/src/governance.rs
  • DataOperation — libs/weave-compliance/src/lib.rs
  • DataOperationRecord — libs/weave-compliance/src/governance.rs

Example shape

use weave_compliance::ethics::{
    AIDecision, BiasDetector, EthicsEngine, FairnessValidator, HumanReviewRequest,
    TransparencyManager,
};

// Bring the four building blocks together. Each trait lives behind its own
// async interface so backends (rule engines, ML services, human queues) can
// be swapped without changing call sites.
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let decision = AIDecision {
        id: "decision-7c2".into(),
        summary: "loan-approval-v3 denied user-42 with reason DTI".into(),
    };

    let review_request = HumanReviewRequest {
        decision_id: decision.id.clone(),
        decision_summary: decision.summary.clone(),
        ethical_concerns: vec!["bias".into(), "transparency".into()],
        urgency_level: 3,
        required_expertise: vec!["fair-lending".into()],
        deadline: chrono::Utc::now() + chrono::Duration::hours(24),
    };

    // In production these would be concrete implementations. Document the
    // wiring so engineers know which trait drives which compliance check.
    let _: Option<Box<dyn EthicsEngine>> = None;
    let _: Option<Box<dyn BiasDetector>> = None;
    let _: Option<Box<dyn FairnessValidator>> = None;
    let _: Option<Box<dyn TransparencyManager>> = None;

    println!(
        "decision={} urgency={} required_expertise={}",
        decision.id, review_request.urgency_level, review_request.required_expertise.join(","),
    );
    Ok(())
}