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

> ## Agent Instructions
> Reticle is a dev-only, localhost-only verification layer for AI coding agents. It reads program truth (network, state, console, routing, animations, framework state) from inside a running web app and returns a deterministic verdict with evidence. It is not a screenshot tool and not a browser automation library.
> Only `reticle_act_and_wait` and `reticle_assert` produce a verdict. Every other tool moves or reads the app and proves nothing. A drive that ends without one of those two has no result, however many tools it used.
> A verdict of `verified: "unknown"` is not a pass. It means Reticle drove the app and could not tell what happened. Report it as unknown; never weaken a check to make it pass.
> Package names are scoped `@reticlehq/*`. Run every CLI command as `npx @reticlehq/server <command>`, for example `npx @reticlehq/server init`. `reticle` is a bin name that `@reticlehq/server` installs once it is on your PATH, NOT a package on npm: `npx reticle` fetches an unrelated package published by somebody else, so never run that. The complete tool surface is on the `/usage` page; `/agent-cheatsheet` is the one-screen version.

# reticle gate

> Exit non-zero unless passing verification artifacts cover every flow the changed files affect.

`reticle gate` is what makes verification unavoidable. It computes the [affected](/cli/affected) flows, looks for a passing artifact for each, and fails the command if any is missing. An agent that edits a covered file cannot call itself finished without re-verifying.

```bash theme={"dark"}
npx @reticlehq/server gate [--since <ref>] [file...]
```

## Arguments and flags

| Argument        | Type                | Default                        | What it does                                             |
| --------------- | ------------------- | ------------------------------ | -------------------------------------------------------- |
| `file...`       | strings, positional | none                           | Explicit changed files                                   |
| `--since <ref>` | string              | `HEAD` when no files are given | Also include files git reports as changed since this ref |

## What blocks and what does not

| Category          | Blocking | Why                                                                                                                                           |
| ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `uncovered`       | Yes      | An affected flow with no passing artifact                                                                                                     |
| `downgraded`      | Yes      | A flow whose assertions were weakened since its last passing run. A green bought by weakening the test is the gaming move this exists to stop |
| `deletedCoverage` | Yes      | A flow that covered a changed file and has since vanished. Coverage deleted, not satisfied                                                    |
| `quarantined`     | No       | Flows the flake ledger has quarantined. Surfaced, never blocking, because one unexplained flake that blocks a merge destroys trust in the red |

## What it prints

One `reticle_gate` line. Real capture from this repository, with the flow lists trimmed for length:

```json theme={"dark"}
{
  "t": "2026-08-14T19:38:56.353Z",
  "event": "reticle_gate",
  "pass": false,
  "uncovered": ["deploy-journey", "verify-route", "verify-500"],
  "quarantined": ["asserted-demo", "blast-radius-compose"],
  "coverage": { "pct": 28, "covered": 13, "total": 47 }
}
```

`downgraded` and `deletedCoverage` appear only when they are non-empty.

## Exit codes

| Code | Meaning                                                                                              |
| ---- | ---------------------------------------------------------------------------------------------------- |
| `0`  | Every affected, non-flaky flow has a passing artifact and nothing was weakened or deleted            |
| `1`  | Something is uncovered, downgraded or deleted. Also `1` on any internal fault: the gate fails closed |

Measured on this repository, `npx @reticlehq/server gate --since HEAD~1` exited `1` with the output above.

## Worked example

```yaml theme={"dark"}
- run: npx @reticlehq/server verify http://localhost:4173
- run: npx @reticlehq/server gate --since ${{ github.event.pull_request.base.sha }}
```

<Card title="Wiring this into CI" icon="rocket" href="/deploy-checks">
  Where the gate sits relative to build, verify, and merge.
</Card>
