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

# Viewing Results

> Interpret latest and historical Data Validation outcomes, including status badges and trend context.

<Info>
  This page covers **Data Validation** check detail and history views. For dashboard-based
  validation widget results, see [Validation Widgets in
  Dashboards](/analytics/dashboards/validation-widgets).
</Info>

## What you see on the page

There are two high-level result views used for quick status checks:

* **Project page Data Validation widget**: compact check cards in the project page for
  quick scanning.
* **Checks page cards**: check cards with score, status, trend hint, and scoped model
  count.

## Practical review flow

These high-level views are a KPI heads-up layer for rules defined by your team. Use them to
spot drift quickly, then drill into a specific check for detailed analysis.

When you open a check result page, you typically see:

* a top-level check score and status (aggregate across all models in scope)
* a per-rule list showing pass/warn/fail outcomes
* expandable rule rows to inspect logic flow (`WHERE` → `CHECK`) and counts at each step
* model cards for each model included in the check scope
* latest run details (time, model/version context)
* historical trend for previous runs
* an object-level detail table for investigation, including passing and failing objects

Selecting **View result** on a model card opens that model’s detailed result, where you can
inspect the rule-by-rule breakdown, the light 3D viewer, and the data table. Use the table
and viewer together: selecting failing (or passing) rows focuses the matching objects in the
viewer for triage.

Threshold authoring: [Checks — Thresholds and
status](/analytics/data-validation/checks#thresholds-and-status).

## Result states

| Status    | Meaning                                                                                |
| --------- | -------------------------------------------------------------------------------------- |
| `PASS`    | Pass-rate ≥ configured pass threshold.                                                 |
| `WARN`    | Between warn/pass band when configured.                                                |
| `FAIL`    | Below thresholds.                                                                      |
| `PENDING` | Evaluation still running, or no completed rollup exists yet for that rule/run context. |

The top section is the **aggregate result** for the check across all models in scope. Only
**`error`** severity rules drive the overall score; **`info`** rules still appear in the
breakdown.

## If a result looks unexpected

<Steps>
  <Step title="Open latest check result">
    Start with current check score and top failing rules.
  </Step>

  <Step title="Drill into failing rules">
    Expand a rule to inspect its logic flow (`WHERE` and `CHECK`) and step-by-step counts.
    Rule-level viewing also populates the object table with pass/fail rows so you can inspect
    individual objects directly.
  </Step>

  <Step title="Compare with history">
    Confirm whether failures are regressions, recurring debt, or resolved trends.
  </Step>

  <Step title="Share and coordinate">
    If external coordination tooling is used, include BCF export in handoff.
  </Step>
</Steps>

Before you retune rules, confirm:

1. The result used the model and version you expected.
2. Predicates or thresholds have not changed since the baseline snapshot (create a new check
   if you need different behaviour).
3. Failures cluster by model or timeframe (data drift) versus looking like sporadic noise.

## Model and version context

Plans cap how many models attach. Every row references explicit version ids plus trigger and
timestamp—carry that context when debating trends.

## Coordination handoff

BCF export from a validation result packages failing objects into topics with viewpoints so
coordinators can triage outside Speckle. Use it when your issue workflow expects BCF; it does
not replace fixing property data in the authoring tool.

## FAQ

<AccordionGroup>
  <Accordion title="Why does a rule show PENDING?">
    `PENDING` appears when evaluation is still running in the background, or when no completed
    evaluation exists yet for that rule/run context.
  </Accordion>

  <Accordion title="Can warning thresholds be customized?">
    Yes. Warning and pass thresholds can be configured globally and per rule in the authoring flow.
    See [Thresholds and status](/analytics/data-validation/checks#thresholds-and-status).
  </Accordion>

  <Accordion title="Should I use latest only or history only?">
    Use both. Latest helps with immediate action; history helps with governance and trend
    confidence.
  </Accordion>
</AccordionGroup>
