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

# Reviewable Units

> Assert groups a pull request into clusters of related changes

A diff is a list of files. A change is not. One pull request usually holds several
logical changes — a migration, the API that reads it, the UI that calls the API —
spread across files in whatever order the filesystem sorts them. Reading that top to
bottom means holding the whole thing in your head at once, and it gets harder as
pull requests get bigger.

Assert groups the diff into **clusters**, each one a single logical change. Clusters
nest, so a broad change breaks down into smaller ones, and every changed line lands in
some cluster. A file can appear in several clusters, because a file often takes part in
several changes.

Each cluster has a generated title and summary, its own line stats, and the
subclusters it breaks into.

<img src="https://mintcdn.com/assertlabs/FvVy5ZggEJSKHhfc/images/clusters/clusters-gallery.png?fit=max&auto=format&n=FvVy5ZggEJSKHhfc&q=85&s=3dce179df5b80dd77646a95a09dc40c1" alt="A cluster and its six subclusters, each with a summary and line stats" className="rounded-lg" width="2484" height="1280" data-path="images/clusters/clusters-gallery.png" />

## Working through a pull request

Press <kbd>V</kbd> to open the cluster view. Assert gives you one unit at a time and
the breadcrumb shows where you are.

| Action                  | Shortcut                                                  |
| :---------------------- | :-------------------------------------------------------- |
| Open the cluster view   | <kbd>V</kbd>                                              |
| Show the cluster tree   | <kbd>⌥</kbd><kbd>H</kbd>                                  |
| Next / previous cluster | <kbd>G</kbd> → <kbd>↓</kbd> / <kbd>G</kbd> → <kbd>↑</kbd> |
| Into / out of a cluster | <kbd>G</kbd> → <kbd>→</kbd> / <kbd>G</kbd> → <kbd>←</kbd> |
| Mark reviewed           | <kbd>R</kbd>                                              |

The cluster tree shows the whole hierarchy at once, with a progress ring on each
unit.

<img src="https://mintcdn.com/assertlabs/FvVy5ZggEJSKHhfc/images/clusters/clusters-navigator.png?fit=max&auto=format&n=FvVy5ZggEJSKHhfc&q=85&s=477e87e1f2a0a64f2b60226f38a64522" alt="The cluster tree with nested clusters, progress rings, and line stats" className="rounded-lg" width="972" height="932" data-path="images/clusters/clusters-navigator.png" />

Progress is tracked per unit, so a half-finished pull request tells you what is
left. Submit a verdict when you are done and Assert writes it back to GitHub as a
review.

## When someone pushes mid-review

Your progress carries forward. Assert maps your reviewed ranges onto the new commits:
hunks that came through the push untouched stay reviewed, and hunks the push changed
come back unreviewed.

[Re-review](/reviewing/re-review) covers what you see on your second pass.

## What Assert leaves out

Generated files, deleted files, and files too large to render collapse into
placeholders, keeping the clusters focused on code worth reading.

Clusters that touch UI carry a preview count. See [Previews](/reviewing/previews).
