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

# Review and act on patterns

> Read a pattern and its evidence, turn it into a scorer or classifier you can monitor, hand it to a coding agent, and close it when it's resolved.

Each pattern is a recurring problem or trend that [Loop](/docs/loop) found in your traces, saved with the evidence behind it. Patterns are scoped to a single project.

## Find a pattern

Go to [**<Icon icon="scan-search" /> Patterns**](https://www.braintrust.dev/app/~/patterns) and select a pattern from the list to open it.

The list shows open patterns by default. You can close a pattern yourself, and Loop can close one when recent data shows that the behavior has stopped. Click <Icon icon="list-filter" /> **Filter patterns** to switch between **Open**, **Closed as resolved**, **Closed as not useful**, and **Closed without reason**. Each option shows how many patterns it contains. To search across patterns by name, use the search box above the list.

## Read a pattern

Start here to decide whether a pattern is worth acting on, and to check Loop's reasoning against the traces it drew from. A pattern detail has four parts:

* **Summary** is what Loop found and the context behind it.
* **Suggested fix** is the next investigation or change Loop recommends, when it has one to offer.
* **How to monitor** appears when Loop recommends a scorer, classifier, or facet to measure the behavior. See [Act on a pattern](#act-on-a-pattern).
* **Evidence** is what the finding rests on.

Evidence can include:

* **Frequency** measures how often the behavior occurs when existing trace data can reliably identify it.
* Additional **Monitors** show complementary measurements, such as latency, cost, or score trends, when Loop attaches them.
* The trace list shows the traces themselves, with Loop's notes quoted inline. Select a trace to open it in the [Debugger](/docs/observe/debug-traces). The trace scrolls to the span field the evidence came from and highlights the quoted terms.

### Frequency

The **Frequency** chart shows the percentage and number of traces affected in the selected time range. Each trace counts once, even if several spans match the behavior. Use the time range selector above the chart to measure a different window.

When Loop identifies a comparable population, the chart defaults to **Similar**. This measures the share of comparable traces affected, such as requests for the same operation. Select **All** to measure the share across your project. The description below the chart identifies the population. If no separate population is defined, the chart shows **All** without a scope dropdown.

Frequency is absent when existing data cannot reliably identify affected traces, for example, when the behavior needs a classifier that has not been created or backfilled. Loop can still support the finding with trace evidence and recommend how to measure it.

## Act on a pattern

Once you've read a pattern, there are four things you can do with it. They're alternatives, not a sequence, and which one fits depends on whether you want to understand the behavior better, track it, fix it, or bring in someone else.

### Keep investigating

Select <Icon icon="blend" /> **Continue in Loop** to start a new thread with the pattern attached as context. Loop shows a badge with the pattern name, so you can see what it's working from.

### Make it measurable

Under **How to monitor**, click <Icon icon="blend" /> **Create scorer** or <Icon icon="blend" /> **Create classifier**, depending on what Loop recommended. Loop opens with a prefilled prompt, adds the evaluator to the pattern, works out a backfill strategy with you, and creates a monitor chart for it. This is how a one-time finding becomes something tracked continuously, at lower cost than re-investigating it. Loop can also turn a pattern into a [facet](/docs/observe/topics/custom-facets) so that [Topics](/docs/observe/topics) classifies the behavior across all your traces.

### Hand it to a coding agent

Click <Icon icon="clipboard" /> **Copy pattern as prompt** in the pattern header. Braintrust copies a Markdown brief containing the pattern's status and close outcome, summary, suggested fix, evidence trace IDs, and [`bt` CLI](/docs/reference/cli/quickstart) commands for pulling the full traces. Paste it into your coding agent to start work on a fix.

### Share it

Click <Icon icon="share" /> **Copy link** in the pattern header to copy a link to the pattern. This appears when the pattern is open in Loop's workspace. The link only works for people who can already access the project.

<Note>
  Objects a scheduled run creates are not linked back to the pattern. If a pattern's monitor chart measures a scorer or facet that a run created, deleting that scorer or facet stops new data from reaching the chart.
</Note>

## Close or reopen

Close a pattern once you've acted on it, or once you've decided it isn't worth acting on. Closed patterns leave the **Open** list, and the outcome you choose becomes feedback Loop uses to judge future findings.

Click <Icon icon="archive" /> **Close** in the pattern header. Choosing an outcome is optional:

* **Resolved** if the problem is fixed, addressed, or no longer happening.
* **Not useful** if the pattern is noise, transient, or unimportant.

You can also add free-text feedback. The header then reads **Closed as resolved**, **Closed as not useful**, or **Closed without outcome**, and a banner on the detail attributes the closure to whoever closed it and shows their feedback.

Loop uses the outcome and your feedback when evaluating related findings:

* **Not useful** tells Loop not to automatically reopen or recreate a matching pattern while your reason still applies.
* **Resolved**, or closing without an outcome, allows Loop to reopen the existing pattern if the behavior recurs, unless your feedback says otherwise.
* Free-text feedback defines the scope of your judgment. If you dismiss synthetic staging traffic but new evidence comes from production, Loop evaluates that evidence independently. Be specific about what you want to dismiss and any conditions for reopening.

Scheduled runs also review active patterns. Loop can close a pattern when recent, relevant data shows that the behavior has stopped. Missing data or a failed query is not evidence that it has stopped.

Click <Icon icon="archive-restore" /> **Reopen** to set a closed pattern back to active.

<Warning>
  A closed pattern reflects a judgment about the available evidence, not proof that the underlying problem is fixed. Closing a pattern as resolved does not verify the fix. Use a scorer or monitor chart for that.
</Warning>

Closing and reopening a pattern requires the [`Update` permission](/docs/admin/access-control#object-permissions) on the project. Without it, the **Close** and **Reopen** buttons don't appear, though you can still read patterns and their evidence. Members of the **Owners** and **Engineers** [permission groups](/docs/admin/access-control#built-in-permission-groups) have it by default.

## Next steps

* [Write scorers](/docs/evaluate/write-scorers) to measure a behavior a pattern surfaced.
* [Build datasets](/docs/annotate/datasets/create) from the traces behind a pattern, then [run an experiment](/docs/evaluate/run-evaluations) to test a fix.
* [Create custom facets](/docs/observe/topics/custom-facets) to track the behavior across every trace.
* [Debug a trace](/docs/observe/debug-traces) to dig into a single piece of evidence.
