Audit Command - Entrenar - Training & Optimization Library
Description: A comprehensive guide to building neural network training systems with autograd, optimizers, LoRA/QLoRA, and quantization using EXTREME TDD methodology

# Audit Command

The `entrenar audit` command performs bias detection, fairness analysis, privacy checks, and security audits on models and datasets.

## Usage

    entrenar audit <INPUT> [OPTIONS]

## Arguments

Argument | Description
--- | ---
`<INPUT>` | Path to model or data file to audit

## Options

Option | Description
--- | ---
`--type <TYPE>` | Audit type: bias, fairness, privacy, security (default: bias)
`--protected-attr <ATTR>` | Protected attribute column for bias analysis
`--threshold <T>` | Pass/fail threshold (default: 0.8)
`--format <FORMAT>` | Output format: text, json, yaml (default: text)

## Audit Types

### Bias Audit (default)

Detect demographic bias using statistical parity metrics:

    entrenar audit predictions.parquet --type bias --threshold 0.8

Output:

    Auditing: predictions.parquet
      Audit type: bias
      Threshold: 0.8
    Bias Audit Results:
      Demographic parity ratio: 0.923
      Equalized odds: 0.970
      Threshold: 0.800
      Status: PASS

#### Metrics Calculated

Metric | Formula | Interpretation
--- | --- | ---
Demographic Parity Ratio | min(P(Y=1|A=0), P(Y=1|A=1)) / max(...) | 1.0 = perfect parity
Equalized Odds | 1 - |TPR_A - TPR_B| | 1.0 = equal true positive rates

### Fairness Audit

Check model calibration and fairness across groups:

    entrenar audit model.safetensors --type fairness

Output:

    Fairness Audit Results:
      Calibration error: 0.050
      Status: PASS

### Privacy Audit

Scan for PII patterns in data:

    entrenar audit data.parquet --type privacy

Output:

    Privacy Audit Results:
      PII scan: Complete
      Email patterns: 0 found
      Phone patterns: 0 found
      SSN patterns: 0 found
      Status: PASS

### Security Audit

Check for security vulnerabilities in model files:

    entrenar audit model.safetensors --type security

Output:

    Security Audit Results:
      Pickle deserialization: Safe (SafeTensors)
      Code execution vectors: None
      Status: PASS

## JSON Output

Get machine-readable results for CI/CD integration:

    entrenar audit predictions.parquet --type bias --format json

Output:

    {
      "audit_type": "bias",
      "demographic_parity_ratio": 0.923,
      "equalized_odds": 0.970,
      "threshold": 0.8,
      "pass": true
    }

## Threshold Configuration

The `--threshold` option sets the minimum acceptable value:

Audit Type | Threshold Meaning
--- | ---
bias | Minimum demographic parity ratio
fairness | Maximum acceptable calibration error = 1 - threshold
privacy | N/A (binary pass/fail)
security | N/A (binary pass/fail)

    # Strict bias threshold (>90% parity required)
    entrenar audit data.parquet --type bias --threshold 0.9

    # Relaxed threshold for development
    entrenar audit data.parquet --type bias --threshold 0.7

## CI/CD Integration

Use audit commands in CI pipelines with exit codes:

    # GitHub Actions example
    - name: Bias Audit
      run: |
        entrenar audit predictions.parquet --type bias --threshold 0.8
        if [ $? -ne 0 ]; then
          echo "Bias audit failed!"
          exit 1
        fi

    # Shell script
    entrenar audit model.safetensors --type security || {
        echo "Security audit failed!"
        exit 1
    }

## Examples

### Complete Audit Pipeline

    # 1. Security audit on model
    entrenar audit model.safetensors --type security

    # 2. Privacy audit on training data
    entrenar audit data/train.parquet --type privacy

    # 3. Bias audit on predictions
    entrenar audit predictions.parquet \
      --type bias \
      --protected-attr gender \
      --threshold 0.8

    # 4. Fairness audit
    entrenar audit predictions.parquet --type fairness

### Audit with Protected Attribute

    entrenar audit predictions.parquet \
      --type bias \
      --protected-attr race \
      --threshold 0.85 \
      --format json > audit_results.json

## Programmatic Usage

    #![allow(unused)]
    fn main() {
    // Demographic parity calculation
    let group_a_positive_rate = 0.72;
    let group_b_positive_rate = 0.78;

    let demographic_parity = (group_a_positive_rate / group_b_positive_rate)
        .min(group_b_positive_rate / group_a_positive_rate);

    // Equalized odds calculation
    let group_a_tpr = 0.85;
    let group_b_tpr = 0.82;
    let equalized_odds = 1.0 - (group_a_tpr - group_b_tpr).abs();

    let pass = demographic_parity >= threshold;
    }

## See Also

- CLI Overview - General CLI reference
- Monitor Command - Drift detection
- Quality Gates - Jidoka quality gates