The fidelity score calculates the exact proportion of source facts accurately preserved by dividing the count of survived claims by the total sum of survived, lost, and distorted claims:

\[\text{Fidelity Score} = \left( \frac{|\text{survived}|}{|\text{survived}| + |\text{lost}| + |\text{distortions}|} \right) \times 100\]

When no claims are detected, it defaults to 100.0%, and individual URL scores are averaged across the run to produce the aggregate fidelity score.

flowchart LR
    subgraph Input["Extracted Claims"]
        S["Survived (S)"]
        L["Lost (L)"]
        D["Distortions (D)"]
    end

    subgraph Calculation["Scoring Formula"]
        Formula["Score = (S / (S + L + D)) * 100"]
    end

    subgraph Output["Fidelity Metrics"]
        URLScore["Per-URL Fidelity Score"]
        AggScore["Aggregate Run Score (Mean)"]
    end

    S --> Formula
    L --> Formula
    D --> Formula
    Formula --> URLScore
    URLScore --> AggScore