# Which failures does Provely fix, and how much is measured?

> What two lines of Provely fix by default, and the measured grid of every failure mode on 15 paths. Coverage is not complete.

Canonical: https://provely.sh/defensive-coding  
Last updated: 2026-10-18  

**Provely adds one check to each model answer and tool call, and it makes the fix itself. The grid below shows what is measured and what is not.**

## What does Provely do by default?

Add two lines. Provely finds your framework and loads its plugin. You write no guard code.

agent.ts

```typescript
import { Provely } from '@provely/sdk';

new Provely();
```

agent.py

```python
from provely import Provely

Provely()
```

Rules are optional. With the two lines and no rules file, Provely builds the checks for each agent at run time (just in time), from the tools it finds. Read [rules](/rules) to audit, share or make an exception.

- **Repair in place** (`repair_in_place`): A lossless syntax fix, for example single quotes or a code fence around the JSON. The tool gets the arguments that the model meant.
- **Return the exact error** (`return_error_to_model`): The model gets one exact sentence about what is wrong, and it tries again. The tool does not run.
- **Retry** (`retry`): Only where the frozen retry table permits it, and always with the key of the first attempt.
- **Refuse** (`refuse`): The call never reaches the tool. Examples: a duplicate call, or a write that repeats a completed write in the same agent call.
- **Record** (`record`): The call runs, and the line states what the check found.

> Every fix writes one decision-log line. The line holds ids and codes only, never a value. No language model takes part in any decision.

`guard_mode: observe` is the default. Provely makes every fix and records an invented value. Read [how it works](/how-it-works).

## How much is measured?

| Measure | Count |
| --- | --- |
| Failure modes in the checklist | 267 |
| Failure modes with a measured cell | 204 |
| Fixed on every path where they apply | 85 |
| Fail on at least one path | 63 |
| Measured cells that Provely fixed | 1519 of 2278 |

## What does each cell mean?

| Cell | Meaning |
| --- | --- |
| Fixed by Provely | Provely made the fix, and a decision-log line proves it. |
| Fails | The case fails on this path, with the two lines. |
| Not counted | The framework coped alone, or Provely made no fix. It is never counted as a fix. |
| Recorded or out of reach | Provely records the failure and makes no fix, or the failure is inside the app code, where Provely cannot reach. |
| Pending | No measurement yet. |
| Does not apply | The failure cannot happen on this path. |

## Where do the cells come from?

Each cell comes from measurement merges of the newest commits, on 15 paths: TypeScript and Python, frameworks and plain SDKs. The newest measurement wins for a case and a path. The grid was built on 2026-10-18 00:24 from 74 measured files.

## How far is each layer?

| Layer | Fixed everywhere | Measured | Total |
| --- | --- | --- | --- |
| Model output syntax | 24 | 31 | 33 |
| Model output shape | 14 | 25 | 29 |
| Tool selection | 5 | 12 | 13 |
| Call structure | 4 | 14 | 16 |
| Streaming | 3 | 10 | 10 |
| Provider protocol | 1 | 30 | 31 |
| Argument hallucination | 7 | 12 | 19 |
| Claim hallucination | 3 | 4 | 8 |
| Framework orchestration | 6 | 12 | 41 |
| Tool invocation | 1 | 11 | 23 |
| Tool result | 6 | 15 | 16 |
| Outcome | 0 | 2 | 2 |
| Coexistence | 11 | 26 | 26 |

## Read next

- [Read how Provely works](https://provely.sh/how-it-works)
- [See every framework Provely finds](https://provely.sh/frameworks)
- [Keep the defences you wrote](https://provely.sh/coexistence)
