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

# Interpret results

> Read raw probabilities, apply policies and handle abstention deliberately.

Try a decision that can defer an uncertain answer:

```bash theme={null}
curl --fail-with-body https://console.sqwish.ai/v1/decide \
  -H "Authorization: Bearer $D1_API_KEY" -H 'Content-Type: application/json' \
  -d '{"model":"sqwish-d1-core","context":"I need help with something on my account.",
    "decisions":[{"id":"route","kind":"single","question":"What help is requested?",
      "outcomes":{"payment":"Charges or refunds.","login":"Signing in or passwords.","other":"Anything else or unclear."},
      "abstain":{"min_probability":0.8}}]}'
```

If `decisions.route.abstained` is true, send the case to your review path. Otherwise use `action`. The threshold is illustrative; select it using the cost of mistakes and the review volume on your own data.

## Raw scores and policy outputs

| Field | How to read it |
| - | - |
| `probabilities` | Normalized scores over the outcomes you supplied |
| `top`, `p_top` | Highest raw outcome and its score |
| `margin` | Gap between the two largest raw probabilities |
| `entropy` | Uncertainty of the raw distribution, using natural logarithms |
| `policy_probabilities` | Present when weights reweight and normalize the raw scores |
| `action` | The policy's selected action, or `abstain` |
| `abstained`, `abstain_reason` | Whether and why the declared policy deferred |
| `p_yes` | Yes probability for a binary decision |
| `expected_level`, `median_level`, `legend` | Ordinal position summary and level descriptions |

`p_top`, margin and entropy still describe the **raw** distribution when a policy changes the action. A high score can be confidently wrong, particularly with missing alternatives or unfamiliar inputs. Normalization is not calibration.

## Weights, costs and abstention

Weights multiply the probabilities and renormalize them. If you also supply costs, `costs[action][outcome]` describes the cost of choosing that action when the true outcome is the named outcome. D1 chooses the lowest expected-cost action under the policy distribution.

`expected_costs` reports each action's expected cost. `expected_cost` reports the chosen cost, including a declared deferral cost when it triggers abstention. Cost-based abstention requires a cost matrix.

`abstain.min_probability` checks the largest **policy** probability. `abstain.cost` defers when the best action costs more than deferring. These values express your application policy, not universal confidence thresholds. The [tool-risk example](/examples/tool-risk) shows a cost-sensitive decision.

## Which model answered?

Read `model`, any exact named `version`, and `fallback`. A fallback can change the model and its error profile. `provenance` describes the serving artifacts when present; it is not an accuracy certificate. `timing_ms` contains server stages, not the full network round trip or a latency guarantee.

For an evaluation, record the complete request, model/version, actual fallback, labels and policy. Measure both raw accuracy and operational outcomes such as wrong actions and review rate. The [example pages](/examples/customer-support) keep historical measurements tied to their source dataset and checkpoint.
