1.5 KiB
1.5 KiB
Risk Engine Spec (Layer 6 MVP)
Date: 2026-03-23
Status: implemented in canonical_layer/risk.py
1. Purpose
Transform anomaly signals into explainable risk patterns and a global risk score.
2. Inputs
feature_runs(latest successful run context)anomaly_signalsfor selected feature run- optional explicit
source_feature_run_id
3. Outputs
risk_runs
Execution journal for each risk-scoring run:
- status, timestamps
- source feature run
- patterns written
- global score
- details/error
risk_patterns
Explainable risk patterns:
pattern_keyseverityscope,scope_idscore,confidencedetails(breakdown + evidence examples)is_active
Always includes:
global_risk_summary
4. Domain mapping
Anomaly signal → risk domain:
stale_refresh,missing_refresh_baseline,no_canonical_data→operational_freshnesshigh_link_degree→suspicious_link_hubentity_count_drift→structural_driftempty_display_share_high→data_quality- unknown →
miscellaneous
5. Scoring model (MVP)
- Convert each anomaly to normalized signal score.
- Aggregate per domain into domain risk pattern.
- Compute global weighted score over domains.
- Map score to severity via thresholds:
RISK_MEDIUM_THRESHOLDRISK_HIGH_THRESHOLD
6. Runtime interfaces
API:
POST /risk/runGET /risk/statsGET /risk/runsGET /risk/patterns
CLI:
python scripts/run_risk.pypowershell scripts/run_risk.ps1