# shawaiz-project/data-failure-risk-equation architecture

> Architecture diagram of the GitHub repository shawaiz-project/data-failure-risk-equation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shawaiz-project/data-failure-risk-equation
- Repository: https://github.com/shawaiz-project/data-failure-risk-equation

## Overview

dfre scores data and AI degradation by computing normalized signals and combining them into a bounded risk result, then classifying that result into an action band. Users can run this through the Python API, a composable batch pipeline, the CLI, or optional integrations. Calibration, explanations, sensitivity analysis, monitoring, alert routing, trend detection, and HTML reporting extend the scoring workflow. The graph reflects README-documented capabilities where their implementation was not sampled; those subsystem links are omitted when call ownership is uncertain.

Main entry points: [`src/dfre/api/builder.py`](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/builder.py) (Pipeline builder), [`src/dfre/cli.py`](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/cli.py) (CLI), [`src/dfre/integrations/pandas_ext.py`](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/pandas_ext.py) (Pandas accessor), [`src/dfre/api/one_liner.py`](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/one_liner.py) (Python API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI<br/>[cli.py]"]
  node_api["Python API<br/>[one_liner.py]"]
  node_facade["DFRE facade<br/>[facade.py]"]
  node_builder["Pipeline builder<br/>[builder.py]"]
end

subgraph group_signals["Signal computation"]
  node_signals["Batch signals<br/>[base.py]"]
  node_missingness["Missingness<br/>[missingness.py]"]
  node_invalidity["Invalidity<br/>[invalidity.py]"]
  node_drift["Drift<br/>[drift.py]"]
  node_uncertainty["Uncertainty<br/>[uncertainty.py]"]
  node_freshness["Freshness<br/>[freshness.py]"]
  node_volume["Volume<br/>[volume.py]"]
  node_schema["Schema<br/>[schema.py]"]
  node_outliers["Outliers<br/>[outliers.py]"]
end

subgraph group_scoring["Risk analysis"]
  node_equation["Risk equation<br/>[equation.py]"]
  node_explain["Explainability<br/>[explain.py]"]
  node_sensitivity["Sensitivity analysis<br/>[sensitivity.py]"]
end

subgraph group_policy_calibration["Policy and calibration"]
  node_policy["Risk bands<br/>[bands.py]"]
  node_escalation["Escalation<br/>[escalation.py]"]
  node_parameters["Parameter calibration<br/>[parameters.py]"]
  node_thresholds["Threshold calibration<br/>[thresholds.py]"]
end

subgraph group_monitoring["Monitoring"]
  node_snapshot["Signal snapshots<br/>[snapshot.py]"]
  node_history[("History store<br/>[history.py]")]
  node_trends["Trend detection<br/>[trends.py]"]
  node_alerts["Alert routing<br/>[alerts.py]"]
end

subgraph group_integrations["Reports and integrations"]
  node_report["HTML reports<br/>[html.py]"]
  node_fastapi["FastAPI service<br/>[fastapi_ext.py]"]
  node_pandas["Pandas accessor<br/>[pandas_ext.py]"]
  node_prometheus["Prometheus extension<br/>[prometheus_ext.py]"]
  node_airflow["Airflow extension<br/>[airflow_ext.py]"]
  node_sklearn["Scikit-learn extension<br/>[sklearn_ext.py]"]
end

node_user(("User / caller"))
node_service_user(("HTTP client"))
node_alert_sink(("Alert sink"))

node_user -->|"calls"| node_api
node_user -->|"configures"| node_builder
node_user -->|"invokes"| node_cli
node_builder -->|"computes"| node_missingness
node_builder -->|"computes"| node_invalidity
node_builder -->|"computes"| node_drift
node_builder -->|"computes"| node_uncertainty
node_builder -->|"computes"| node_freshness
node_builder -->|"computes"| node_volume
node_builder -->|"computes"| node_schema
node_builder -->|"computes"| node_outliers
node_builder -->|"scores signals"| node_equation
node_api -->|"scores signals"| node_equation
node_api -->|"classifies risk"| node_policy
node_facade -->|"exposes"| node_api
node_cli -->|"uses"| node_facade
node_cli -->|"calibrates"| node_parameters
node_cli -->|"calibrates"| node_thresholds
node_cli -->|"reads history"| node_history
node_cli -->|"analyzes trends"| node_trends
node_cli -->|"creates service"| node_fastapi
node_cli -->|"generates report"| node_report
node_equation -->|"decomposes risk"| node_explain
node_equation -->|"analyzes risk"| node_sensitivity
node_escalation -->|"classifies with"| node_policy
node_parameters -->|"scores history"| node_equation
node_thresholds -->|"sets thresholds"| node_policy
node_snapshot -->|"appends snapshots"| node_history
node_history -->|"provides risks"| node_trends
node_snapshot -->|"provides snapshot"| node_alerts
node_alerts -.->|"dispatches alerts"| node_alert_sink
node_service_user -->|"requests scoring"| node_fastapi
node_fastapi -->|"scores request"| node_api
node_pandas -->|"computes"| node_missingness
node_pandas -->|"computes"| node_invalidity
node_pandas -->|"computes"| node_drift
node_pandas -->|"computes"| node_uncertainty
node_pandas -->|"computes"| node_schema
node_pandas -->|"computes"| node_outliers
node_pandas -->|"scores signals"| node_api
node_prometheus -.->|"exports metrics"| node_alert_sink
node_airflow -.->|"integrates pipeline"| node_builder
node_sklearn -.->|"supports calibration"| node_parameters

click node_cli "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/cli.py"
click node_api "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/one_liner.py"
click node_facade "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/facade.py"
click node_builder "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/builder.py"
click node_signals "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/base.py"
click node_missingness "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/missingness.py"
click node_invalidity "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/invalidity.py"
click node_drift "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/drift.py"
click node_uncertainty "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/uncertainty.py"
click node_freshness "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/freshness.py"
click node_volume "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/volume.py"
click node_schema "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/schema.py"
click node_outliers "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/outliers.py"
click node_equation "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/equation.py"
click node_explain "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/explain.py"
click node_sensitivity "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/sensitivity.py"
click node_policy "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/policy/bands.py"
click node_escalation "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/policy/escalation.py"
click node_parameters "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/calibration/parameters.py"
click node_thresholds "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/calibration/thresholds.py"
click node_snapshot "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/snapshot.py"
click node_history "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/history.py"
click node_trends "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/trends.py"
click node_alerts "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/alerts.py"
click node_report "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/report/html.py"
click node_fastapi "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/fastapi_ext.py"
click node_pandas "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/pandas_ext.py"
click node_prometheus "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/prometheus_ext.py"
click node_airflow "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/airflow_ext.py"
click node_sklearn "https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/sklearn_ext.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_api,node_facade,node_builder,node_user,node_service_user toneBlue
class node_signals,node_missingness,node_invalidity,node_drift,node_uncertainty,node_freshness,node_volume,node_schema,node_outliers toneAmber
class node_equation,node_explain,node_sensitivity toneMint
class node_policy,node_escalation,node_parameters,node_thresholds toneRose
class node_snapshot,node_history,node_trends,node_alerts,node_alert_sink toneIndigo
class node_report,node_fastapi,node_pandas,node_prometheus,node_airflow,node_sklearn toneTeal
```

## Components

### User interfaces

- [CLI](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/cli.py): `src/dfre/cli.py`
- [Python API](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/one_liner.py): `src/dfre/api/one_liner.py`
- [DFRE facade](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/facade.py): `src/dfre/api/facade.py`
- [Pipeline builder](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/api/builder.py): `src/dfre/api/builder.py`

### Signal computation

- [Batch signals](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/base.py): `src/dfre/signals/base.py`
- [Missingness](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/missingness.py): `src/dfre/signals/missingness.py`
- [Invalidity](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/invalidity.py): `src/dfre/signals/invalidity.py`
- [Drift](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/drift.py): `src/dfre/signals/drift.py`
- [Uncertainty](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/uncertainty.py): `src/dfre/signals/uncertainty.py`
- [Freshness](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/freshness.py): `src/dfre/signals/freshness.py`
- [Volume](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/volume.py): `src/dfre/signals/volume.py`
- [Schema](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/schema.py): `src/dfre/signals/schema.py`
- [Outliers](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/signals/outliers.py): `src/dfre/signals/outliers.py`

### Risk analysis

- [Risk equation](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/equation.py): `src/dfre/core/equation.py`
- [Explainability](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/explain.py): `src/dfre/core/explain.py`
- [Sensitivity analysis](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/core/sensitivity.py): `src/dfre/core/sensitivity.py`

### Policy and calibration

- [Risk bands](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/policy/bands.py): `src/dfre/policy/bands.py`
- [Escalation](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/policy/escalation.py): `src/dfre/policy/escalation.py`
- [Parameter calibration](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/calibration/parameters.py): `src/dfre/calibration/parameters.py`
- [Threshold calibration](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/calibration/thresholds.py): `src/dfre/calibration/thresholds.py`

### Monitoring

- [Signal snapshots](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/snapshot.py): `src/dfre/monitoring/snapshot.py`
- [History store](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/history.py): `src/dfre/monitoring/history.py`
- [Trend detection](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/trends.py): `src/dfre/monitoring/trends.py`
- [Alert routing](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/monitoring/alerts.py): `src/dfre/monitoring/alerts.py`

### Reports and integrations

- [HTML reports](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/report/html.py): `src/dfre/report/html.py`
- [FastAPI service](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/fastapi_ext.py): `src/dfre/integrations/fastapi_ext.py`
- [Pandas accessor](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/pandas_ext.py): `src/dfre/integrations/pandas_ext.py`
- [Prometheus extension](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/prometheus_ext.py): `src/dfre/integrations/prometheus_ext.py`
- [Airflow extension](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/airflow_ext.py): `src/dfre/integrations/airflow_ext.py`
- [Scikit-learn extension](https://github.com/shawaiz-project/data-failure-risk-equation/blob/main/src/dfre/integrations/sklearn_ext.py): `src/dfre/integrations/sklearn_ext.py`

### Other components

- **User / caller**
- **HTTP client**
- **Alert sink**

## Connections

- User / caller → Python API: calls
- User / caller → Pipeline builder: configures
- User / caller → CLI: invokes
- Pipeline builder → Missingness: computes
- Pipeline builder → Invalidity: computes
- Pipeline builder → Drift: computes
- Pipeline builder → Uncertainty: computes
- Pipeline builder → Freshness: computes
- Pipeline builder → Volume: computes
- Pipeline builder → Schema: computes
- Pipeline builder → Outliers: computes
- Pipeline builder → Risk equation: scores signals
- Python API → Risk equation: scores signals
- Python API → Risk bands: classifies risk
- DFRE facade → Python API: exposes
- CLI → DFRE facade: uses
- CLI → Parameter calibration: calibrates
- CLI → Threshold calibration: calibrates
- CLI → History store: reads history
- CLI → Trend detection: analyzes trends
- CLI → FastAPI service: creates service
- CLI → HTML reports: generates report
- Risk equation → Explainability: decomposes risk
- Risk equation → Sensitivity analysis: analyzes risk
- Escalation → Risk bands: classifies with
- Parameter calibration → Risk equation: scores history
- Threshold calibration → Risk bands: sets thresholds
- Signal snapshots → History store: appends snapshots
- History store → Trend detection: provides risks
- Signal snapshots → Alert routing: provides snapshot
- Alert routing → Alert sink: dispatches alerts
- HTTP client → FastAPI service: requests scoring
- FastAPI service → Python API: scores request
- Pandas accessor → Missingness: computes
- Pandas accessor → Invalidity: computes
- Pandas accessor → Drift: computes
- Pandas accessor → Uncertainty: computes
- Pandas accessor → Schema: computes
- Pandas accessor → Outliers: computes
- Pandas accessor → Python API: scores signals
- Prometheus extension → Alert sink: exports metrics
- Airflow extension → Pipeline builder: integrates pipeline
- Scikit-learn extension → Parameter calibration: supports calibration
