> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zebratruth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Interpreting Compliance Reports

> Step-by-step guide

# Interpreting Compliance Reports

How to read and act on ZebraTruth compliance results.

## Score & Decision

| Score Range | Decision          | What It Means                      | Action                                                   |
| ----------- | ----------------- | ---------------------------------- | -------------------------------------------------------- |
| 80-100      | `PUBLISH`         | Content is compliant               | Safe to publish as-is                                    |
| 60-79       | `HOLD`            | Issues found, none critical        | Review and fix flagged items before publishing           |
| 0-59        | `HOLD` or `BLOCK` | Significant or critical violations | Must fix. If `BLOCK`, at least one critical issue exists |

### Decision Logic

* `BLOCK` if any check has `status: "block"` OR any check has `severity: "critical"`
* `HOLD` if score \< 60 OR any check has `severity: "high"`
* `PUBLISH` otherwise

### Scoring Formula

Starting from 100, each non-pass check deducts:

* critical: -25 points
* high: -15 points
* medium: -8 points
* low: -3 points
* info: 0 points

Score is clamped to \[0, 100].

## Checks Array

Each check represents a finding from one agent:

```json theme={null}
{
  "agentId": "advertising-law",
  "checkName": "unsubstantiated-claim",
  "status": "flag",
  "severity": "high",
  "message": "Human-readable description of the issue",
  "recommendation": "Specific action to fix it",
  "citation": "Legal reference (e.g., '16 CFR Part 255')"
}
```

### Check Status Values

* `pass` — No issue found
* `flag` — Issue found, review recommended
* `block` — Critical issue, must fix
* `escalate` — Needs human review (ambiguous)

## Agent Summaries

The `agentSummaries` field provides a high-level view per agent:

```json theme={null}
{
  "advertising-law": {
    "status": "flag",
    "checkCount": 5,
    "passCount": 3,
    "flagCount": 2,
    "blockCount": 0,
    "summary": "2 advertising claim issues found"
  }
}
```

## Version Info

```json theme={null}
{
  "engineVersion": "1.3.2",
  "rulesVersion": "2026-04-01",
  "agentVersions": { "advertising-law": "1.1.0", ... },
  "stackVersion": "2026.04-a7f3"
}
```

Use this to explain why results may change over time. `rulesVersion` bumps when
the compiled law set changes; `agentVersions` bumps when an individual agent's
logic changes; `stackVersion` is an opaque identifier for the underlying
model/prompt pipeline — it bumps whenever that pipeline changes. Treat
`stackVersion` as a black-box string and compare only for equality.

## Cost Breakdown

```json theme={null}
{
  "totalCredits": 47,
  "agents": [
    { "agent": "jurisdiction", "stage": "A", "credits": 2, "cached": true },
    { "agent": "jurisdiction", "stage": "B", "credits": 3 },
    ...
  ]
}
```

`cached: true` means the research stage used a cached result (0 provider cost, but logged for analytics).
