# what_breaks_if_changed

> Everything that depends on this, directly or indirectly, and what we can't see.

Your agent asks it before a wider change.

## What it takes

| Input | Type | What it is |
| --- | --- | --- |
| symbol | text, required | function, method or class name, path:line, or a w-handle |
| depth | whole number, 1 to 5, optional | — |
| budget | whole number, optional | — |
| expand | text, optional | A w-handle from this session to list in full, or reset. |
| format | text or json, optional | — |
| family | yes, no or unsure, optional | family: your answer to 'are all subclasses of these types inside this repository?' yes, no or unsure (default unsure). It sets the [a] assumption in answers. |

## Example

Your agent asks: `what_breaks_if_changed(symbol: "Store.save")`

The engine's answer, captured on the example project:

```text
llmgraph · what_breaks_if_changed Store.save (depth 3): 3 places depend on it, 1 open
  ✓ certain app/admin.py:3 reset w8
  ◇ within_these, one of 3 app/service.py:4 persist (closed: repo only) [a] w9
  ⚠ maybe_more app/service.py:8 persist_any (open: type unknown) w10
  ⚠ plus dynamic calls elsewhere that could reach anything w11
  – ruled out: 2 same-name calls (proven: other target) [a] w12
  overrides: MemStore.save, PgStore.save w13
  assumes [a]: all subclasses are in this repo (project setting)
```

Each line explained: [Reading an answer](https://beta.llmgraph.in/docs/answers/reading-an-answer.md).

## What it cannot tell you

- It follows only strong links past the first level.
- Open callers are counted, not followed.
