Files
Sankofa/docs/fairness-audit/ORCHESTRATION_ENGINE.md
defiQUG 9daf1fd378 Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- Add comprehensive database migrations (001-024) for schema evolution
- Enhance API schema with expanded type definitions and resolvers
- Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth
- Implement new services: AI optimization, billing, blockchain, compliance, marketplace
- Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage)
- Update Crossplane provider with enhanced VM management capabilities
- Add comprehensive test suite for API endpoints and services
- Update frontend components with improved GraphQL subscriptions and real-time updates
- Enhance security configurations and headers (CSP, CORS, etc.)
- Update documentation and configuration files
- Add new CI/CD workflows and validation scripts
- Implement design system improvements and UI enhancements
2025-12-12 18:01:35 -08:00

182 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fairness Audit Orchestration Engine
## Overview
The Fairness Audit Orchestration Engine uses a **3-variable model** to size and schedule fairness audit processes. The engine designs from outputs backwards, calculating the total process load and validating feasibility against requested timelines.
## The 3-Variable Model
### Variables
1. **I (Input)**: Input size/effort
- Dataset size
- Number of sensitive attributes
- Date range complexity
- Filter complexity
2. **O (Output)**: Total output effort
- Sum of all selected outputs (reports, dashboards, exports, alerts)
- Each output type has a weight
3. **T (Timeline)**: Runtime allocation
- Execution mode (now, scheduled, continuous)
- SLA/time limit
- Deadline
## Backend Logic
### Formula
```
Total Process Load ≈ O + 2I ≈ 3.2I
```
Where:
- **O** = Sum of all output weights
- **2I** = Two input passes (ingestion + enrichment + fairness evaluation)
- **3.2I** = Target total load (design target: O ≈ 1.2 × I)
### Calculation Flow
1. **Start with Outputs**
- User selects desired outputs
- Engine sums output weights → **O**
2. **Calculate Input Load**
- Engine analyzes input specification
- Calculates input complexity → **I**
3. **Calculate Total Load**
- Total = O + 2I
- Validates against target: ≈ 3.2I
4. **Estimate Time**
- Uses processing rates to estimate runtime
- Validates against timeline constraints
5. **Feasibility Check**
- Compares estimated time vs. requested timeline
- Checks output load vs. recommended (1.2 × I)
- Provides warnings and suggestions
## Output Types and Weights
| Output Type | Weight | Description |
|------------|--------|-------------|
| Fairness Audit PDF | 2.5 | Comprehensive fairness audit report |
| Metrics Export (SPD, TPR, FPR) | 1.0 | Statistical parity difference, rates |
| Flagged Cases CSV | 1.5 | Cases flagged for potential bias |
| Executive Summary Slides | 2.0 | Executive presentation slides |
| Detailed Report (JSON) | 1.2 | Machine-readable detailed analysis |
| Alert Configuration | 0.8 | Automated alert rules |
| Dashboard Export | 1.8 | Interactive dashboard |
| Compliance Report | 2.2 | Regulatory compliance documentation |
## Input Load Calculation
```typescript
Input Load = Base (100)
+ Sensitive Attributes (20 each)
+ Date Range (5 per day)
+ Filters (10 each)
```
Or use pre-calculated `estimatedSize` if available.
## Processing Rates
- **Input Processing**: 15 units/second
- **Output Processing**: 8 units/second
- **Average Rate**: ~11.5 units/second
## User-Facing Messages
### Feasible Configuration
> "This fairness audit will process approximately X input units and generate Y output units, taking approximately Z to complete."
### Feasible with Warnings
> "This audit is feasible but has some considerations: [warnings]. Estimated time: Z."
### Not Feasible
> "This audit configuration may not be feasible within the requested timeline. [warnings]. Estimated time: Z."
## Example Scenarios
### Scenario 1: Small Dataset, Few Outputs
- **Input**: 100 units (small dataset, 2 attributes)
- **Outputs**: Metrics Export (1.0) + Flagged Cases CSV (1.5) = 2.5 units
- **Total Load**: 2.5 + (2 × 100) = 202.5 units
- **Estimated Time**: ~18 seconds
- **Result**: ✅ Feasible
### Scenario 2: Large Dataset, Many Outputs
- **Input**: 500 units (large dataset, 5 attributes, 30-day range)
- **Outputs**: All 8 outputs = 13.0 units
- **Total Load**: 13.0 + (2 × 500) = 1013.0 units
- **Estimated Time**: ~88 seconds
- **Result**: ⚠️ May need timeline adjustment
### Scenario 3: Output-Heavy Request
- **Input**: 200 units
- **Outputs**: All outputs = 13.0 units
- **Target Output**: 200 × 1.2 = 240 units
- **Actual Output**: 13.0 units
- **Result**: ✅ Within target (O < 1.2 × I)
## Implementation
### Backend Engine
- Location: `api/src/services/fairness-orchestration/engine.ts`
- Provides: `orchestrate()`, calculation functions, feasibility checks
### Frontend Component
- Location: `portal/src/components/fairness/FairnessOrchestrationWizard.tsx`
- 3-column layout: Output | Input | Timeline
- Real-time orchestration calculation
- Visual feedback on feasibility
### Client Library
- Location: `portal/src/lib/fairness-orchestration.ts`
- Shared types and calculation functions
- Can be used client-side or called via API
## API Endpoints (To Be Implemented)
```
POST /api/fairness/orchestrate
Body: OrchestrationRequest
Response: OrchestrationResult
GET /api/fairness/outputs
Response: OutputType[]
POST /api/fairness/run
Body: OrchestrationRequest
Response: Job ID and status
```
## Configuration
### Adjustable Constants
```typescript
INPUT_PASS_MULTIPLIER = 2.0 // 2 × I for input passes
TOTAL_LOAD_MULTIPLIER = 3.2 // Target: O + 2I ≈ 3.2I
OUTPUT_TARGET_MULTIPLIER = 1.2 // Design target: O ≈ 1.2 × I
INPUT_PROCESSING_RATE = 15 // units/second
OUTPUT_PROCESSING_RATE = 8 // units/second
```
### Tuning Recommendations
- **High-volume scenarios**: Increase processing rates
- **Complex outputs**: Adjust output weights
- **Strict SLAs**: Add buffer time (20% recommended)
## Related Documentation
- [Orchestration Engine Design](./ORCHESTRATION_DESIGN.md)
- [Output Weight Guidelines](./OUTPUT_WEIGHTS.md)
- [User Guide](../fairness-audit/USER_GUIDE.md)