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

# How reviews work

> What Otto posts on a pull request and how to read it.

Otto reviews a pull request the way a senior engineer would: it reads the diff, explores the surrounding code for context, and posts a native review.

## What a review contains

<CardGroup cols={2}>
  <Card title="A verdict" icon="gavel">
    A native review: **approve**, **comment**, or **request changes** on GitHub;
    an approve or wait-for-author vote on Azure Repos.
  </Card>

  <Card title="Inline findings" icon="comment-dots">
    Comments on changed lines, each with a severity, a title, an explanation,
    and often a suggested change and a "Prompt To Fix With AI" block.
  </Card>

  <Card title="A summary" icon="file-lines">
    A top-level summary of the change and the findings.
  </Card>

  <Card title="Merge confidence" icon="gauge">
    A **Merge confidence: 1/5–5/5** score for how safe the PR is to merge.
  </Card>
</CardGroup>

## Severity

| Severity | Meaning |
| - | - |
| **P0** | Critical or blocking: data loss, security breach, outage, broken build. |
| **P1** | High-impact bug or security issue. |
| **P2** | Correctness, reliability, or missing-test issue to fix before merge. |
| **P3** | Non-blocking nitpick, style, or maintainability suggestion. |

## Verdict

By default, Otto picks its verdict from its most severe finding:

* **Approve** when there are no findings, or only P3 nitpicks. Nitpicks are posted as non-blocking comments with the approval.
* **Request changes** for a bug, a security issue, or missing tests for new behavior.
* **Comment** for any other P2 concern that should be fixed before merge.

A repository can make Otto stricter or more lenient with the [approval policy](/configuration/approval-policy) in `otto.yml`.

## Merge confidence

The score always goes up as a PR gets safer to merge:

| Score | Meaning |
| - | - |
| **5/5** | Safe to merge: no P0, P1, or P2 findings remain. |
| **4/5** | Safe to merge apart from minor P2 concerns; no P0 or P1 findings. |
| **3/5** | Medium risk: P2 issues that should be fixed but aren't blocking on their own. |
| **2/5** | Not safe to merge: at least one P1 finding, or several serious P2 findings. |
| **1/5** | A P0 or a high-confidence blocker such as data loss, a security hole, or deploy risk. |

## Follow-ups and re-reviews

Otto keeps track of the conversation on a PR:

* When you reply to a finding (to say it's fixed, explain why it's intentional, or ask a question), Otto answers in the thread and remembers the context, so it doesn't raise the same point again on that PR.
* When a reply or re-review shows that every blocking finding is fixed or refuted, Otto approves. On GitHub, a comment alone doesn't replace an earlier request for changes; Otto submits a new approval.
* New commits are reviewed incrementally: Otto focuses on what changed since its last review.

## What shapes a review

| Source | Scope |
| - | - |
| [Workspace settings](/reviews/workspace-settings) | Every repository in the workspace |
| [`OTTO.md` or `CLAUDE.md`](/configuration/instructions) | One repository |
| [`otto.yml`](/configuration/otto-yml) | One repository, down to individual paths |

None of these can change Otto's review format, its P0–P3 severity scale, or how it scores merge confidence.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.